Bonjour
J'ai plusieurs projet qui tournent avec Arduino et tout cela fonctionne plutôt bien mais j'aimerai aller plus loin dans la communication avec certaines de mes réalisations.
Même si Wifi et radio sont largement utilisé chez moi, pour diverses raison je préfère toujours les liaisons câblés. J'ai donc acheté 3 Shield Ethernet pour faire des tests.
J'en ai rapidement configuré une. Attribuer une adresse IP ,une Adresse MAC, puis avoir un accès via le serveur et y accéder via un navigateur est assez aisé avec tous les tutos du net. Mettre un bouton sur une page HTML et arriver a provoquer une action est assez simple, tout cela ne m'a pris que quelques heures.
Mais comme je ne suis qu'un petit amateur, j'atteint vite les limites.
Ma question est, comment utilisé l'ethernet de la carte pour lui envoyer des données autrement qu'avec une page HTML.
Soyez indulgent et n'employer pas trop de terme savant
Un serveur HTTP n'envoie pas forcément du HTML.
Tu peux lui faire envoyer tu texte tout simple, sans aucune balise html.
Il existe aussi une possibilité, se passer complètement de HTTP, et donc TCP, en utilisant UDP, un protocole sans connexion, très basique :
je vais creuser cette piste. Si je comprends bien UDP ressemblerai en quelques sortes a une liaison serie?
Le robot est capable de localiser un emplacement dans la cave, Sa précision minimale est de 0.25 mm sur les 5 axes et Arduino gère très bien cela. Chaque emplacement de bouteille est numéroté de 1 a 650.
Actuellement je peux entrer un numéro de la place a atteindre par le port série, Bluetooth , ou télécommande infra rouge. Je stocke les emplacements libre ou occupé par l'eeprom (1 ou 0), et la dernière position des 5 axes du robot.
Le besoin :
Envoyer sur le réseau cette information depuis la base de donnée sur le PC (access / VBA) .
Tu choisis la bouteille dans la base, et hop le robot va chercher une bouteille ou la range, tout en mettant directement le stock a jour.
La base de données n'est pas une simple base de données, mais il y a les images, les infos et tout le reste donc pas envisageable sur un serveur Php Mysql sur une arduino (ou très difficilement)
Je vais donc creuser UDP
Une base de donnée comme une autre en fait
Pourquoi pense tu que cela n'est pas envisageable sur un serveur MYSQL ?
TCP ou UDP peut effectivement être comparé sommairement à une liaison série entre tout les machine d'un réseau.
Pour être plus précis, c'est surtout Ethernet qui serait l'équivalent.
TCP et UDP est surtout des protocoles de communication
le TCP à l'avantage d'être "sûre"/fiable par rapport à l'UDP
Personnellement je privilégierais le TCP pour une application standard client/serveur
@terwal merci de ta réponse.
Je connais un peu PHP et Mysql pour avoir il y a des années utilisé le couple sur Linux mais je n'ai pas un niveau suffisant pour développer mon projet avec, et j'ai des doutes sur la capacité d'une carte arduino a faire tourner un base importante.
Access de la façon dont je l'utilise ce n'est pas une simple base de données, je crée des applications complètes et complexe avec un environnement graphique très riche. En arrière plan avec VBA on peut tout adapter a ses besoins, et puis surtout, j'utilise depuis des années professionnellement donc c'est simple.
Faire transiter des données sur le réseau c'est pour moi une autre paire de manche
Oui je connais très bien les produits Microsoft et le VBA qu'il fait tourner.
PHP et MYSQL ne tourne pas sur Arduino, cela n'a pas vraiment de sens en fait.
Alors personnellement je ne suis pas fan de faire tout et n'importe quoi dans le VBA embarqué dans Access, World ou Excel, mais il faut avouer que ça peut avoir un coté pratique.
Par contre par rapport a un serveur WEB, tu ne peux pas y accéder à distance, ce qui est assez limitant je trouve.
Dans ton VBA, tu sera obligé de faire un "serveur", socket en écoute sur un port particulier, pour recevoir les messages de ton arduino.
oui le serveur Web pour l'accès distant est nécessaire mais ca c'est assez simple a comprendre et a mettre en oeuvre pour moi, le l'ai fait hier, et meme bidouiller une page html pour interagir avec l'arduino c'est relativement simple.
par contre effectivement faire dialoguer mon .accdb avec l'arduino via ethernet ca me chauffe davantage les neurones
Je suis une piste avec winsock
Ba oui c'est winsock l'api pour manipuler des sockets, mais franchement c'est ce compliquer la vie.
Après il doit y avoir des API accéssible en VBA pour créer un serveur WEB dans ta base access.
Ha oui je ne l'ai pas préciser, car ça me paraissait évident, mes ta solution nécessite que Access soit en permanence ouverte sur ton PC, pour être à l'écoute de ton Arduino.
On peut aussi inverser le sens et que ce soit ta base Access qui demande si ton Arduino à de nouvelle donnée, mais cela réclame que tu bufferise les données sur l'arduino.
je pense qu'il serait plus simple d'utiliser ton serveur apache/PHP avec un connecteur odbc pour lire/écrire tes données dans ta base de donnée.
Je suppose que tu as déjà des choses dessus que tu veux réutiliser?
C'est une piste intéressante.... parce que la je regarde un peu toute les étoiles du ciel avec délectation sans savoir avec laquelle interagir.
Est ce que ce serait imaginable avec odbc de synchroniser ma base .accdb avec une base hebergée sur l'arduino? théoriquement je pense
Normalement c'est pas comme ça que ça fonctionne, on héberge pas de base de donnée sur l'Arduino, car cela réclame pas mal de mémoire.
L'Arduino post les informations directement dans la base de donnée final, potentiellement avec ou sans intermédiaire.
Il y a par exemple un client MySQl pour Arduino.
Le mieux pour moi, serait que tu fasse un page PHP qui reçois les données de l'Arduino et qui les pousses dans Access via le client ODBC de PHP.
Tu pourra aussi récupérer les données toujours via ODBC, pour les afficher dans une page HTML
Tu pourrais même du coup te passer d'Access
....
Mais ca me dérangerait pas du tout !!!! vu mon grand âge (pas trop tout de meme) j'ai pas mal bidouillé (en amateur) avec linux et tout ce qui va avec, a cette époque ou on pensait qu'un jour les mandrake, debian, suse pourrait contrer l'hégémonie de bill !!! et ou les mac était devenu presque confidentiel avant le grand rebond!
Mais il y a 15 ans que j'ai décroché et me replonger dans Php, Mysql etc
Comme rien n'a vraiment changé et toutes les technologies ont bien 40 ans, tu es parfaitement à la page
Tu va voir ce n'est pas très compliqué, mais je pense que le mieux serait que tu passe au moins par un script PHP, qui réceptionne les données de l'Arduino pour les mettre dans ta base Access.
Ca reste des choses assez simple et fortement documenté.
oui ce n'est pas faux que tout ca évolue vite mais que les technologie de base reste, d'ailleurs le C/ C++ que l'on utilise dans l'arduino c'est pas une grande nouveauté
je vais réfléchir pour les bases de données, mais si j'en reviens a mon premier besoin...
Comment envoyer par ethernet un simple nombre a l'arduino depuis un pc et le traiter peut être comme une entrée sur le port série.
Il est possible de faire cela avec une requête HTTP, avec des arguments, pas besoin de UDP ou TCP, qui sera plus spartiate à implémenter.
Une URL toute simple, du genre http://robot?emplacement=18
L'intérêt de HTTP est aussi de pouvoir tester simplement avec un navigateur, tandis qu'avec TCP ou UDP il faut une appli du genre nc sous Linux.
Ce serait probablement plus facile à implémenter avec un ESP et AsyncWebServer, mais reste faisable avec Ethernet, moyennant plus de travail.
Franchement dans un premier temps ne te prends pas la tête avec une autre base de donnée, garde Access.
Il faut surtout que tu sache qui contacte qui, car il faudra faire un serveur sur celui qui est contacté.
Dans un premier temps utilise peut être ton PHP, pour faire comme indique @hbachetti
et dans le retour de la requête tu peux aussi renvoyer des données(pas de HTML, mais uniquement du texte) à ton Arduino.
Si après tu veux surtout pouvoir piloter ton robot par une interface sur ton PC, il faudra effectivement créer un serveur sur ton Arduino.
Je n'utilise pas d'Ethernet, mais uniquement du wifi, je ne sais pas si on peut facilement utiliser ArduinoHttpServer, mais je suppose que oui.
@hbachetti sous windows Putty est assez simple à utiliser.
merci @hbachetti et @terwal pour ces explication simple. je testerai cette formule dans un premier temps. Effectivement si j'envoie par exemple:
" http://robot?emplacement=1018" il va comprendre que c'est une sortie le "1" lui indique qu'il va aller a l'emplacement , récupérer la bouteille, et revenir a l'entrée,
" http://robot?emplacement=2018", il sait qu'il faut venir chercher la bouteille a l'entrée pour la ranger. En fait il n'y a pas besoin de piloter le robot autrement que par une instruction a quatre chiffre.
Le système est simple il repose sur le positionnement 3D du robot, quand il s'arrête, il inscrit les positions de ses 5 axes dans l'eeprom (mais je fais changer pour mémoriser les données sur une carte SD pour pas cramer l'eeprom après quelques mois). J'ai fait ensuite un algorithme qui calcule le nombre de pas a faire pour chaque moteur en fonction de son positionnement et de celui de l'emplacement a atteindre. et ensuite les procédures de récupération et de dépose.
J'ai reçu en début de semaine le shield ethernet et déjà paramétrer le serveur HTTP.
L'arduino donne cette facilité d'accès a l'amateur de faire des projets complexe mais simplement
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.