Piloter son Arduino avec son navigateur web et Node.js (1)
. Par : bobyAndCo
Vous répondez à :
Slt, je recherche. je sous ubuntu. c’est peut etre pour cela que je suis bloqué. un probleme de sécurité. J’ai accés à ma page html, mais non executable. je cherche et reviens vers vous une fois fait.
67 Messages
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 juillet 2017 13:58, par Robert Knapen
Excellent article qui ouvre des possibilités incroyables.
Avez-vous examiné l’utilisation du codage graphique avec l’utilisation de node RED développé par IBM pour des applications de ’’Internet of things``IOT.Voir en ligne : How IBM’s Node-RED is hacking together the internet of things
-
Bonjour Robert,
Je suis heureux que vous ayez perçu les possibilités que cela pouvait ouvrir de pouvoir piloter son Arduino à partir de son ordinateur, sa tablette et/ou son smartphone. C’est bien que vous citiez également Node RED auquel les plus convaincus pourront se référer. Pour l’essentiel, les Locoduinistes sont avant tout des modélistes ferroviaires, intéressés par ce que l’Arduino peut apporter sur leur réseau. Tout ce qui peut leur simplifier la tâche de programmation est bienvenu.
Moi je note au passage l’investissement de IBM autour des technologies JavaScript (Node RED, TypeScript...) ce qui tend à démontrer à mon avis sa puissance et son potentiel.
Bien cordialement
Christophe
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 juillet 2017 23:38, par maxou9914
pour Node RED je viens de franchir le cap il à de ça une semaine, simple et rapide de mise en oeuvre. Il me permet de contrôler par wifi sur une tablette mes loco LGB avec un Wemos 1D (équivalent arduino nano avec wifi intégré). Il faut que je trouve un peu de temps pour mettre à jour mon fil sur le forum !
En protocole d’échange j’utilise MQTT (facile pour deboger).
Voir en ligne : Mon interface
-
Piloter son Arduino avec son navigateur web et Node.js (1) 8 juillet 2017 10:45, par bobyAndCo
Je trouve qu’il y a une accélération des offres en ce moment avec une multiplicité de produits nouveaux ; autours des technologies WIFI entre autres. Je suis convaincu qu’il y a plein de choses à imaginer en modélisme ferroviaire autour des modules WIFI (ESP8266) dont certains ont des tailles extrêmement réduites, jusqu’à 12 E/S et d’un prix quasiment ridicule, de 2 à 10 € !!! On peut entre autre réfléchir à des systèmes embarqués sinon dans des locos mais tout au moins dans les wagons d’un convoi. A quand les décodeurs WIFI ? Et pourquoi pas des réseaux totalement sans câbles ?
N’hésitez pas à présenter vos propres projets de la façon la plus explicite possible pour les partager avec tous les Locoduinistes. Node RED est assez abordable pour qui a une certaine appréhension à se lancer dans la programmation.
-
Piloter son Arduino avec son navigateur web et Node.js (1) 8 juillet 2017 23:51, par msport
Merci pour cet article qui donne envie de s’y lancer.
ROCO a fait une tentative de décodeur Wifi (en fait une carte Wifi couplée à un décodeur DCC) avec ses kits Next Generation 51400 sortis en 2014. En prime une détection de Tag RFID pour la position des locomotives. Manifestement pour attirer vers le modélisme les enfants à partir de 6-8 ans avec des scénarios se déroulant sur tablette. Probablement trop répéfitifs sur un ovale et 3 arrêts. Une extension avec un aiguillage existe. Mais pas de version en français (seuls D, SP et GB). Malheureusement ce projet n’a pas rencontré le succès puisqu’on trouve ce matériel bradé à 75€ sur eBay et ailleurs et il n’est plus au catalogue de ROCO. Les locos 51400 sont canibalisés en éléments séparés. Le projet initial consistait en une rame ICE de 3 éléments alors que celui qui a été commercialisé contenait une locomotive électrique basique en rouge ou en bleu, sans aucun détaillage (pas de tampons, pantographe ultra simple) avec deux wagons. Avantage, on fait du numérique avec seulement de la technologie dans la locomotive (et du RFID à 3 sous) en supposant que la tablette est déjà acquise.
Il est peut-être possible de faire du reverse engeniering sur l’application android qu’on peut télécharger gratuitement. Je suis intéressé par tout détail qui serait disponible.Voir en ligne : Voir la présentation youtube :
-
Piloter son Arduino avec son navigateur web et Node.js (1) 9 juillet 2017 00:57, par bobyAndCo
Ce projet est pourtant très innovant. Si je comprends bien, il y a un module WIFI embarqué dans la loco. Mais vous pensez vraiment qu’il y a un décodeur DCC ou quoique ce soit de similaire dans la machine ? A mon avis non. Les commandes passent en WIFI et le courant de traction par les rails. Un L293 lui aussi embarqué (et un µc) et le tour est joué. C’est exactement ce que j’évoquais plus haut avec les ESP8266. La fin des décodeurs embarqués est peut être pour bientôt ?
Pour le RFID, je ne m’y suis que très peu intéressé car j’étais resté sur l’idée qu’il était assez difficile de faire fonctionner plus d’un capteur (interférences). Apparemment non. Là aussi ce serait une très bonne nouvelle.
Quant à faire "du reverse engeniering sur l’application android" cela me semble assez facilement envisageable pour peu que l’on puisse décrypter les messages envoyés pour chaque commande et les reprogrammer dans un Arduino. C’est un peu du même ordre que lorsque l’on utilise une télécommande par exemple. Beaucoup de boulot en perspective.
Nous sommes bien d’accord que les projet que je présente : "Pilotage d’un Arduino avec son navigateur WEB" pourraient tout aussi bien fonctionner en WIFI. J’en ai d’ailleurs présenté plusieurs ici. Ce que nous voulions dans cette série d’article, c’était de proposer une configuration "minimaliste" fonctionnant sur le moins cher des Arduino (UNO) et sans shield ou hard quelconque supplémentaire.
Je travaille actuellement sur le protocole TELNET qui permettra de s’affranchir de la liaison série entre Node et Arduino (donc WIFI en particulier) en consommant très peu de ressources réseau contrairement au HTTP plus "verbeux" en travaillant directement sur les commandes TCP/IP de bas niveau. A suivre donc !
Christophe
-
bonjour, j’ai pas réussi à faire communiquer NODE avec arduino en entrant la commande node arduino.js...
est ce que je rassemble tout les fichiers(serialport.js et arduino.js) dans un meme dossier et puis j’ouvre le terminal dans cette dossier...ou quoi faire ?
j’ai vraiment besoin d’aide je suis coincé...merci !-
Bonjour Farouk,
Je suis désolé mais reconnaissez que vous ne donnez que peu d’informations pour permettre de trouver une solution. Pouvez-vous être plus précis. Cette configuration est éprouvée depuis longtemps, moi-même, je l’utilise régulièrement. En suivant pas à pas les explications, il ne devrait pas y avoir de problème.
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 9 juillet 2017 13:06, par msport
C’est effectivement dommage que Roco n’ait pas poursuivi. (et qu’il n’ait pas publié le standard pour amorcer une normalisation - du moins à ma connaissance) Il s’agit bien d’un "vrai" décodeur DCC respectant le standard. D’ailleurs Roco indique qu’il peut se piloter avec une Z21. J’ai testé avec DCC++ : adresse loco modifiable, commande éclairage par exemple. Si je me souvient bien du CV8, ce serait un ZIMO. Tant qu’on n’a pas pris la main sur la loco en Wifi, elle fonctionne en DCC.
Pour les applications en apk, il semble qu’il y ait de nombreux décompilateurs qui permettent d’avoir le code java. Mais cela dépasse mes compétences d’utiliser ensuite ce code.
Pour le RFID, il y a dans le ballast de la voie Geoline un circuit imprimé avec une antenne et un CI SOT8 de STI marqué 24LBERB K435U juste connecté à l’antenne.
Effectivement, on dérive du sujet initial, peut-être faudrait-il passer sur le forum ? -
Piloter son Arduino avec son navigateur web et Node.js (1) 9 juillet 2017 13:13, par bobyAndCo
Oui il faut ouvrir un nouveau sujet sur le forum en précisant bien les objectifs poursivis et les réponses attendues. Il semble que pas mal de choses soient abordées ci-dessus.
Bien cordialement.
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js (1) 19 juillet 2017 14:25, par pat95
Super Christophe j’ai enfin des explications du comment fonctionne DCC+_Controller_Ethernet que j’utilise avec plaisir sur mon réseau. J’attends ensuite les autres explications pour le DCC++. Pour le moment je suis indécis pour l’automatisation de mon réseau soit continuer avec tes explications futures ou utiliser "Un gestionnaire en C++ pour votre réseau" ? avec bus CAN. Sachant que mon réseau est découpé en cantons avec détection de consommation et des relais tout cela pas très satisfaisant. Un conseil serait le bien venu.
Bien cordialement. -
Piloter son Arduino avec son navigateur web et Node.js (1) : correction code ? 10 décembre 2017 11:20, par remi
Bonjour Christophe.
Merci beaucoup pour ces explications détaillées, en français et en détail... Même si je ne suis pas pratiquant ferroviaire, ma petite contribution pour les débutants comme moi :
_vérifier le comportement de l’arduino dans son environnement avec l’interface série intégrée : ctrl maj M
en envoyant directement 0 et 1.
_Chrome ne permet pas forcément de faire tourner des serveurs en adresse locale (secu) ; Firefoxe ne se limite pas a ca. Sous firefoxe utiliser F12 pour debugger. Ce qui m’a permis de voir que pour mon installation du 12/2017 il fallait modifier la ligne de la lib socket io comme suit :
./node_modules/socket.io-client/dist/socket.io.jsMon but est de faire plus simple pour le moment : utiliser un script nodejs pour récupérer des infos sur le port série après l’émission d’une commande. Plus simple en python et en perl , moins simple avec nodejs et ses gestions parallèle d’événements, plus puissant a terme, c’est certain.
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 février 2018 00:06, par stephane
Super, merci pour tous ces tuyaux, çà me donne pleins d’idées maintenant.
Tous fonctionne bien en suivant correctement les informations. -
Piloter son Arduino avec son navigateur web et Node.js (1) 13 février 2018 12:48, par nelly
Bonjour,
Super, merci pour tous ces tuyaux. Juste une question j’aimerai bien savoir faire l’inverse j’ai besoin lorsque je clique sur une bouton passoire l’arduino envoi une requet via nodejs vers page html pour faire bouger quelque chose .
Besoin d’aide concernant ça.
Merci-
Bonjour Nelly,
Attention tout d’abord, un bouton "passoire" laisse tout passer ;-)
La question importante est de savoir ce que vous voulez faire bouger ? Un élément dans la page HTML, changer un bouton, faire varier un compteur ? Ou faire bouger autre chose (hors de la page HTML), moteur, LED ???
En fonction de cela la réponse sera bien différente.
Bien cordialement.
Christophe
-
Bonjour,
Ok je vais expliquer a vous , je dois travailler sur jeu snake,. Au lieu d’utiliser les fleche de calvier , le remplacer par Joystick de arduino , donc j’utiliser javascript via serveur NodeJs.
Donc actuellement je suis ressuie a faire allumé une led lorsque le snake tape le mur çàd gameouvre mais j’arrive pas a faire transmet un message de la part d’arduino vers le serveur.
Merci tout aide
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 15 février 2018 13:45, par bobyAndCo
Bonjour,
Votre question ne concerne pas le modélisme ferroviaire, mais voici la réponse (qui se trouve d’ailleurs dans l’article). Il faut tout simplement utiliser Serial.print ou Serial.write et un message sera retourné à Node.js. Dans l’exemple, la fonction retourne soit "0" soit "1" soit le texte "error" :switch (inChar) { case '0': digitalWrite(LED_BUILTIN, LOW); Serial.print("0"); break; case '1': digitalWrite(LED_BUILTIN, HIGH); Serial.print("1"); break; default: Serial.print("error"); }
La réponse est captée par Node.js par l’événement "on(data)" de l’objet que j’ai nommé ici arduino
arduino.on('data', function (data) { let buf = new Buffer(data); io.sockets.emit('message', buf.toString('ascii')); console.log(buf.toString('ascii')); //console.log(buf); });
-
Piloter son Arduino avec son navigateur web et Node.js (1) 18 février 2018 18:58, par pat95
Bonsoir Christophe,
J’ai testé exemple "power1.ino" avec arduino UNO en modifiant ’COM4’ ça fonctionne parfaitement.
Ensuite je change de carte pour ARDUINO MEGA mais en ’COM6’ comme me l’indique IDE que je modifie et j’ai comme message "Logs : Connexion : Ok" j’appuie sur le bouton ON et j’ai comme message "Logs : Veuillez patienter !".
Où est le problème ? j’ai cherché dans les programmes je n’ai même pas trouvé la provenance du message "Logs : Veuillez patienter !"
Merci de m’aider, j’attendais depuis longtemps la dernière parution de NODE 4 et maintenant que c’est fait je souhaite transformer tout mon travail de ETHERNET_DCC++ en NODE. -
Piloter son Arduino avec son navigateur web et Node.js (1) 18 février 2018 19:13, par pat95
REBonsoir Christophe,
Ne tiens pas compte de mon précédent message tout fonctionne maintenant...
Ne me demande pas pourquoi, j’ai tout réinitialisé NODE, POWER1, etc... et ça marche.
Je passe à l’étape suivant me passer de ETHERNET_DCC++ et programmer une occupation d’une ZONE par le NODE.
Bonsoir. -
Piloter son Arduino avec son navigateur web et Node.js (1) 2 avril 2018 15:34, par Thierry
Bonjour,
J’ai testé exemple "power1.ino" avec arduino UNO en modifiant ’COM3’.
J’ai comme message "Logs : Connexion : Ok" suite à l’ouverture de la page html
Lorsque j’appuie sur le bouton ON,j’ai comme message "Logs : Veuillez patienter !".
J’ai modifié les programmes de façon à tester le passage d’infos entre la page html et mon arduino. Celui-ci détecte bien lorsque j’appuie sur le bouton ON ou OFF (modif prog arduino pour détecter si quelque chose est emis sur la liaison série). Je pense que j’ai un pb avec la reconnaissances des variables char transmises entre la page html et l’arduino mais je vois pas comment le résoudre.-
Bonjour Thierry,
Si je comprends bien, vous avez modifié le programme de l’Arduino. Il faudrait m’adresser via la messagerie de Locoduino le code Arduino pour que je regarde ce que cela peut être.
Bien cordialement
-
Re-bonjour,
J’ai voulu tester votre exemple "power1.ino" avec un arduino UNO en modifiant ’COM3’.
Lorsque j’utilise la page html : power1.html, j’ai comme message "Logs : Connexion : Ok" suite à l’ouverture de la page html => la connexion PC —> Arduino se déroule bien
Mais lorsque j’appuie sur le bouton ON,j’ai comme message "Logs : Veuillez patienter !" => pas d’allumage de la led 13.
J’ai redémarré le pc, relancé la communication série et tj impossibilité de faire allumer la led (nota : je n’ai pas modifié vos programmes)
Cordialement-
Avez-vous bien parametré et lancé le serveur Node.js, vous n’en parlez pas ?
-
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 4 avril 2018 22:00, par Thierry
Bonsoir,
J’ai repris les manips à zéro en suivant pas à pas votre tuto :
1) modification de la vitesse de connexion de 9600bd à 115200 dans serialport.js (on trouve aussi 9600 dans les premières ligne du fichier, à modifier en 115200 ou seulement modif ligne32 ?)
2) modification du nom du port dans arduino.js
3) telechargement du sketch power1.ino dans mon arduino
4) lancement du serveur web arduino.js dans le terminal
=> message
Serveur : OK
Communication serie Arduino 115200 bauds : Ok
Connexion socket : OK5) ouverture page html http://localhost:8080/power1.html
=> Logs : Connexion : Ok sur la page html6) clic sur bouton On => la led reste éteinte et affichage o à coté de Logs.
7) clic sur bouton Off => la led reste éteinte et affichage ? à coté de Logs=> Il y a bien un dialogue entre la page html et l’arduino mais j’ai l’impression que les caractères Ascii sont mal retransmis.
Qu’en pensez vous ?
Cldt
-
Bonsoir Thierry,
Je pense que votre analyse doit être bonne et qu’il s’agit probablement de problèmes de caractères puisque vous avez bien un retour de l’Arduino :
6) clic sur bouton On => la led reste éteinte et affichage o à coté de Logs.
7) clic sur bouton Off => la led reste éteinte et affichage ? à coté de LogsCela peut avoir plusieurs causes. Il est possible que le paramètre de vitesse de transfert dans serial.js influe. Dans ma version, je n’ai de réglage qu’à la ligne 32. Si vous avez 9600b ailleurs (version plus récente), n’hésitez pas à changer, et à tester.
Dans le terminal (invite commande) doivent s’afficher 0 ou 1 quand vous appuyez sur les boutons de la page HTML, quand est il pour vous ?
En stoppant le terminal et en utilisant la fenêtre série de l’IDE d’Arduino, envoyez le caractère 1 à la carte et voyez si vous avez un retour 1. Vous allez avoir sans doute aussi plusieurs "error" mais c’est parce que la fenêtre de l’IDE envoie d’autres caractères mais l’important est que vous ayez bien 1 ou 0 dans les retours. Si vous voulez supprimer les error, selectionnez "pas de fin de ligne" dans la fenêtre de l’IDE.
Voilà, de cette manière, vous voyez déjà si la carte répond et allume ou éteint la LED. Ensuite, dans la page HTML (javascript) modifiez le code à partir de la ligne 15
$('#btn_on').click(function () { socket.emit('message', '1'); }); $('#btn_off').click(function () { socket.emit('message', '0'); });
Essayez d’autres caractères, par exemple ’A’ et ’B’ et n’oubliez pas de faire la même chose dans le code Arduino :
void process(unsigned char inChar) { switch (inChar) { case 48: digitalWrite(LED_BUILTIN, LOW); Serial.print("0"); break; case 49: digitalWrite(LED_BUILTIN, HIGH); Serial.print("1"); break; default: Serial.print("error"); } }
Vous mettrez alors ’A’ et ’B’ (n’oubliez pas ’’) au lieu de 48 et 49.
Essayé déjà ceci et tenez moi au courant.
Bien cordialement
Christophe
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 5 avril 2018 19:13, par Thierry
Bonsoir Christophe,
Merci pour votre réponse très détaillée. Je suis allé voir le contenu de mon fichier serial.js : je n’ai effectivement pas la même version que vous et j’avais un pb de paramétrage. Il faut en réalité changer le paramétrage de vitesse au début du fichier. J’avais changé la vitesse dans une zone de commentaire (avec le bloc note de windows, la lecture du fichier n’est pas très pratique ...) Est-ce qu’il existe des utilitaires plus pratiques avec numérotation des lignes ?J’ai fait le test d’allumage/extinction de la led dans la fenetre de l’IDE d’Arduino et cela a fonctionné.
J’ai ensuite lancé le serveur web arduino.js dans le terminal et ouvert la page html http://localhost:8080/power1.html
=> la Led réagit correctement aux clics sur On et Off. J’ai 1 et 0 en retour dans la zone LOGS.
Merci encore. Grace à votre dernier message, j’ai réussi envoyer des cdes à mon arduino et à récupérer des données via une page htlm.
Mon projet est de faire l’acquisition d’une température avec un capteur DS18B20 et d’afficher celle-ci sur une page html.
J’ai maintenant les outils de base pour le faire. J’ai modifié mon programme d’acquisition et traitement de température et j’arrive à faire afficher celle-ci sur la page power1.html dans la zone LOGS (je n’ai pas encore de compétences en html) mais par moment l’affichage est tronqué :
ex : 22.5 C puis affichage C puis 5 C.
A votre avis, d’où vient ce phénomène ? Est-ce un pb de vitesse de transmission de donnée qui serait trop lent par rapport au traitement de la mesure dans l’arduino ?Cdlt
-
Thierry,
Je réponds à votre message car il présente un caractère général, mais je vous rappelle que le site Locoduino est réservé au modélisme ferroviaire.
mais par moment l’affichage est tronqué : ex : 22.5 C puis affichage C puis 5 C.
Ce problème est sans doute lié à une question de vitesse en effet. J’ai depuis réglé le problème de la manière présentée ci-dessous dans le fichier e Node.js
Dans la réponse de l’Arduino, je place un caractère de fin de message, ici ">". Dans le code de Node js, je concatène les messages reçu dans la variable responseServ jusqu’à ce que je trouve le caractère ">"
if(responseServ.indexOf(">") > 0 ) {
Et alors j’envoie le message "complet" à la page HTML.
var sendServ = function(data) { responseServ = responseServ + data; if(responseServ.indexOf(">") > 0 ) { let buf = new Buffer(responseServ); io.sockets.emit('response', buf.toString('ascii')); console.log('Arduino response : ', buf.toString('ascii')); responseServ = ""; } }
Bien cordialement
Christophe
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 6 avril 2018 18:04, par Thierry
Bonsoir Christophe,
Vous parlez d’une modification à apporter au fichier e node.js ou node.js ?
Où se trouve ce fichier ? Est-ce que vous parlez du fichier arduino.js qu’on lance pour communiquer avec la carte ? Merci pour votre aideCordialement
-
Piloter son Arduino avec son navigateur web et Node.js (1) 6 avril 2018 18:07, par bobyAndCo
Oui il s’agit bien de arduino.js (fichier executé par Node.js)
Bien cordialement
-
Piloter son Arduino avec son navigateur web et Node.js "npm serialport" 7 septembre 2018 14:23, par Antoine
Bonjour,
je viens vers vous car je n’arrive pas a installé les modules serialport.
voici le message que me retourne la console :> @serialport/bindings@2.0.2 install C :\Users\cdomo\node_modules\@serialport\bindings
> prebuild-install —tag-prefix @serialport/bindings@ || node-gyp rebuildC :\Users\cdomo\node_modules\@serialport\bindings>if not defined npm_config_node_gyp (node "C :\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C :\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR ! configure error
gyp ERR ! stack Error : Can’t find Python executable "python", you can set the PYTHON env variable.
gyp ERR ! stack at PythonFinder.failNoPython (C :\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:483:19)
gyp ERR ! stack at PythonFinder. (C :\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:508:16)
gyp ERR ! stack at C :\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\polyfills.js:284:29
gyp ERR ! stack at FSReqWrap.oncomplete (fs.js:152:21)
gyp ERR ! System Windows_NT 10.0.17134
gyp ERR ! command "C :\Program Files\nodejs\node.exe" "C :\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
gyp ERR ! cwd C :\Users\cdomo\node_modules\@serialport\bindings
gyp ERR ! node -v v8.11.4
gyp ERR ! node-gyp -v v3.6.2
gyp ERR ! not ok
npm WARN enoent ENOENT : no such file or directory, open ’C :\Users\cdomo\package.json’
npm WARN cdomo No description
npm WARN cdomo No repository field.-
Piloter son Arduino avec son navigateur web et Node.js "npm serialport" 7 septembre 2018 15:03, par BobyAndCo
Woooo là là là là !!!
Bon, ça relève plus du PC que de l’Arduino. Ca peut avoir pas mal de causes. Avez-vous réussi toutes les installations précédentes ? Node bien sûr mais aussi les autres modules ? Ceci pour savoir si on a le même problème sur d’autres modules ou seulement sur serialport ? Je vois qu’il est question de Phyton (Can’t find Python executable "python", you can set the PYTHON env variable.) Il est maintenant assez courant de devoir installer Python pour executer des scrits d’installation.
Attention aussi, si vous installez serialport, il y a dans la version actuelle des incompatibilités avec ce que j’ai écrit à l’époque avec une version antérieure. Il faudra un peu chercher, en particulier en ce qui concerne les vitesses sur le port série mais rien de très compliqué.
Est-il important pour vous d’utiliser Node car je présente en effet de nouvelles solutions plus simples et tout aussi performantes en WiFi et sans Node. Voir ici : Controller DCC++ Base Station en WiFi
A voir également l’ébauche d’un article dont je prépare la publication sur Locoduino au sujet des shieldes WiFi
Je n’ai encore pas écrit grand choses mais si cela vous intéresse mieux, je peux m’y mettre ce qui en intéressera d’autres.
A suivre donc et bien amicalement.
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js "npm serialport" 7 septembre 2018 16:08, par antoine
Merci pour votre réactivité.
Je voudrais pouvoir commander mon arduino par ethernet au final avec des échanges de données simple, visualiser les état des In/Out et possibilité de les commander à distance.
j’ai un shield ethernet et je suis en train de faire un tuto en parallèle (beaucoup d’info).
Node me paraissait une bonne solution pour personnaliser l’interface Homme / machine.
Je débute le JS et dans mon projet la communication série ne me parait pas nécessaire (sauf pour faire ce superbe tutoriel).
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 septembre 2018 16:24, par BobyAndCo
Oui, ça va toujours mieux quand on commence par le besoin. Pouvez-vous présenter succinctement votre projet ?
Il y a une solution avec le shield Ethernet qui consiste à héberger un mini site, en fait une application en HTML et JavaScript sur une carte SD elle-même hébergée dans le lecteur SD du shield Ethernet.
J’aborde cela en détail avec un mini-controller que je présente ici sur Locoduino.
On pourra alors utiliser de classiques requêtes http (POST ou GET) mais aussi des requêtes en TCP (moins gourmandes en ressource et plus réactivites) Probablement aussi des websockets.
Tenez-moi au courant pour savoir si cela répond à votre attente et je vous aiderai au besoin.
Bien amicalement
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 octobre 2018 10:41, par René Mathieu
Bonjour,
je viens juste de tester le pilotage de mon Arduino par navigateur web ainsi que vous l’avez très bien décrit. J’ai un problème, il ne m’est pas possible de modifier le fichier serialport.js tout simplement parce que ce fichier est absent du répertoire \node_modules\serialport malgré deux tentatives de recharger par install dans la fenêtre Node.js command prompt.
Pouvez-vous m’aider à résoudre ce problème ?
Merci.j’ai lu le post "Piloter son Arduino avec son navigateur web et Node.js (1) 4 avril 22:00, par Thierry " ainsi que votre réponse. (le pilotage de la led port 13 fonctionne sans soucis avec par exemple "blink.ino")
-
Piloter son Arduino avec son navigateur web et Node.js (1) 18 décembre 2018 16:30, par Philippe MESLIN
Bonjour,
J’ai rencontré le même problème. Il faut indiquer la vitesse dans le fichier arduino.js à la ligne 45. Ajoutez le paramètre baudRate:115200 devant autoOpen : false
Cordialement,
Philippe
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 octobre 2018 11:05, par bobyAndCo
Uhmm, uhmm, c’est bien embêtant en effet. Mais je pense que l’on devrait trouver une solution simple en recopiant le dossier complet dans le bon repertoire sur votre ordinateur. Envoyez moi votre mail en MP, je vous retournerai le dossier à recopier et ça devrait fonctionner.
Bien amicalement.
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js (1) 16 décembre 2018 10:28, par Philippe MESLIN
Bonjour,
Pour l’installation du module serialport sur mon Mac, j’ai le message d’erreur suivant lorsque j’ai lancé la commande npm install serialport :
Error: EACCES: permission denied, mkdir '/Users/philippemeslin/node_modules/serialport/node_modules/@serialport/bindings/build'.
J’ai résolu le problème en utilisant cette commande : sudo npm install serialport —unsafe-perm=true
Merci pour toutes ces informations,
Philippe MESLIN
-
Piloter son Arduino avec son navigateur web et Node.js (1) 13 août 2019 21:28, par Mymy
Bonjour, comme fais tu pour te connecter depuis un autre ordinateur ou ton smartphone sur ton serveur node.js ?
-
Tout simplement en entrant l’adresse du serveur Node dans la barre de navigation + la page demandée. Ex : 192.168.1.101/index.html
-
moi je fais ex 192.168.1.50:8080/bb.js je tombe sur la page mais mon soucis, quand j’appuie sur la touche d’une commande rien ne se passe. sur le pc ou il y a le serveur par contre cela réagis.
-
Je suis dsl j’ai bien :
var socket = io.connect(’http://localhost:8080’) ; dans mon fichier htmldans le fichier arduino.js
server.listen(8080) ;
console.log("Serveur : Ok") ;donc sur mon pc je vois la page et peux commander.
Sur mon tel, je vois la page mais je ne peux pas commander
-
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 13 août 2019 21:43, par Mymy
correction je fesais avec bb.html et la j’ai fais sans le 8080 donc 192.168.1.50/bb.html
pas de réaction depuis mon tel-
Il faut remplacer localhost dans var socket = io.connect(’http://localhost:8080’) ; par l’adresse IP de Node dans le script de la page.
Si le serveur écoute sur le port 8080, il faut en effet entrer : 192.168.1.50:8080/bb.html
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 13 août 2019 22:08, par bobyAndCo
Si le PC fonctionne mais pas le téléphone, c’est que ce dernier doit avoir des paramètres de sécurité activés (étonnant cependant). Je n’ai pas de réponse, il faut faire des recherche sur le net.
-
Slt, je recherche. je sous ubuntu. c’est peut etre pour cela que je suis bloqué. un probleme de sécurité. J’ai accés à ma page html, mais non executable. je cherche et reviens vers vous une fois fait.
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 15 août 2019 13:59, par Mymy
Bonjour,
pour information, il faut installer ou les fichiers arduino.js ? un exemple de chemin svp -
Piloter son Arduino avec son navigateur web et Node.js (1) 18 octobre 2019 12:22, par Théo
Bonjour, je suis bloqué, il est écrit qu’il faut modifier le fichier intitulé "serialport.js", mais je ne le trouve pas. Je suis pourtant bien allé dans : Utilisateurs/totol/node_modules/serialport/lib mais je ne trouve que "index" et "parsers".
Merci de votre aide.
-
Bonjour,
je rencontre exactement le même problème, j’ai essayé une solution qui a été donnée plus haut, mais en vain !!! Avez-vous trouver une solution à cela ?
Bien cordialement,
Amina
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 4 novembre 2019 14:49, par Roland
Bonjour
Visiblement tout cela semble simple pour tout le monde sauf pour moi.
Etape 1
J’ai suivi scrupuleusement l’installation
Etape 2
je lance donc node, dans la fenêtre (Dos) je tape : node startNode.js réponse
Thrown
node startNode.js
Syntax error : Unexpected identifierQuelle en est la raison ? Grand mystère
Serait-il possible d’avoir un élément de réponse ?
Merci par avance
Cordialement -
Piloter son Arduino avec son navigateur web et Node.js (1) 4 novembre 2019 15:58, par bobyAndCo
Dans un fichier que vous nommerez "test.js", écrivez ceci : console.log("Hello Rolland !") ;console.log("Node.js fonctionne !") ;
ensuite, de le terminal (invite commande sous "Fenêtres"), entrez node test.js
S’il n’affiche pas le message, "Hello Rolland !, Node.js fonctionne !" c’est déjà qu’il y a un problème dans l’installation de Node.js-
Merci pour votre réponse, problème solutionné.
J’avais sauté une étape.
En fait je n’ai pas lancé la fonction "cmd" pour pouvoir avancer.
Tout fonctionne parfaitement.
Ces explications sont vraiment formidables.
Beaucoup de temps passé pour les rédiger mais cela permet de découvrir d’autres possibilités
Cordialement
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 5 février 2020 14:35, par imane
ou je vais trouver le fichier serialport.js ?merci de me répondre .cordialement
-
Piloter son Arduino avec son navigateur web et Node.js (1) 6 février 2020 08:30, par bobyAndCo
Bonjour, la réponse est dans l’article !
-
Piloter son Arduino avec son navigateur web et Node.js (1) 6 février 2020 20:54, par Thierry
Mais moi aussi je ne le trouve pas le fichier serialport.js, il n’y a que "index" et "parsers".
C’est fort dommage d’arrêter si rapidement, ne pouvoir tester complètement.
Pourriez-vous le mettre en téléchargement s’il vous plait ?
Voir en ligne : Thierry BERTEAU
-
Serial port s’installe avec NPM -> npm install serialport
Regardez dans l’article
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 6 février 2020 22:43, par Thierry
Mais cela a été fait, seulement il n’y a pas de serialport.js seulement index.js et parsets.js
Les paquets ont dû être modifié !!!Voir en ligne : Piloter son Arduino avec son navigateur web et Node.js
-
Piloter son Arduino avec son navigateur web et Node.js (1) 6 février 2020 22:53, par bobyAndCo
serialport est un module de Node. Quand on excecute NPM comme indiqué, serialport est automatiquement placé dans le répertoire : node_modules -> serialport -> lib -> serialport.js
Cela aussi je l’indique dans l’article :
Avant d’aller plus loin, vous allez devoir modifier le fichier « serialport.js » qui est situé à l’intérieur des dossiers suivants :
node_modules -> serialport -> lib -> serialport.js. -
Piloter son Arduino avec son navigateur web et Node.js (1) 10 avril 2020 00:33, par nizar hicheri
Bonjour, je ne trouve pas le fichier : serialport.js. que dois je faire ? Merci
-
Piloter son Arduino avec son navigateur web et Node.js (1) 16 juin 2020 18:14, par jb
Bonjour,
Pour répondre à vos questions sur le fichier "serialport.js", celui-ci n’est plus dans les dernières distribution de Serialport.
Il faut toutefois modifier la vitesse pour que ça fonctionne et ne pas avoir d’erreur de transimission. Pour cela, une fois Serialport installé (avec npm install serialport), il faut aller dans ouvrir le fichier : "index.js" dans \node_modules\@serialport\stream\lib . Dans ce fichier, ligne 14 (dans ma version), il faudra changer "baudRate : 9600," par "baudRate : 115200,".
J’espère que ça vous sera utile et merci pour ce tuto.
Bonne journée-
Bonjour
Je me heurte à des problèmes de version (entre 2022 et 2018) qui nécessitent des modifications dans les programmes ou les bibliothèques. Je n’y entends pas grand chose et je me déplace dans un "brouillard informatique".
J’ai réussi à suivre votre tuto (dans la forme assez clair) jusqu’à la modification : "node_modules -> serialport -> lib -> serialport.js. "
J’ai la version 16.15.0 de Node dans laquelle je ne trouve aucun dossier "lib" ni dans "@serialport/stream" ni dans "serialport". Donc pas de modification possible de débit dans un fichier "index".
Par ailleurs j’ai modifié (comme conseillé) la ligne 40 du fichier "arduino.js" mais il reste toujours à intervenir sur la ligne 45 : "var arduino = new SerialPort(usbserial, autoOpen : false ) ;" qui bloque.
Pourriez vous m’aider svp.
EmmanuelVoir en ligne : Piloter son Arduino avec son navigateur web et Node.js (1)
-
-
Piloter son Arduino avec son navigateur web et Node.js (1) 17 novembre 2021 15:44, par Olivier CASSE
Bonjour,
tout ,d’abord bravo pour l’article !
j’ai réussi avec la version actuelle de node.js a obtenir la commutation de la LED sur mon Arduino Uno.
j’ai rencontré plusieurs problèmes (dus au décalage de version je pense, j’utilise Windows 10 - NodeJS 16.13.0 (avec npm 8.1.0)) :
1) serialport.js qui n’existe plus et le paramétrage de la vitesse à faire comme indiqué dans le message précédent
2) index.js la ligne 40 doit etre modifiée de :
var io = require(’socket.io’).listen(server) ;
pour devenir :
var io = require(’socket.io’)(server) ; // on supprime .listen qui donne une erreur "listen is not a function" sinon...je continue la suite de l’article pour créer ma propre IHM
Olivier -
Piloter son Arduino avec son navigateur web et Node.js (1) 4 mai 2022 16:25, par bobyAndCo
Bonjour,
Cet article à maintenant 5 ans et les choses ont beaucoup évoluées depuis. La bibliothèque « serialport » pour Node.js elle aussi a beaucoup évoluée et n’est plus directement compatible avec ce que j’avais écrit à l’époque.
Et les websockets en JavaScript ont aussi fait leur entrée dans le paysage !
Je suis absent pour plusieurs semaines et je n’ai pas avec moi le matériel pour tester des mises à jour et je ne suis pas sûr d’en avoir le temps.
Si vous voulez avancer sur ce sujet, vous pouvez vous reporter au site de serialport : https://serialport.io/
Vous trouverez aussi de nombreux tuto sur le web et aussi des vidéos : https://www.youtube.com/watch?v=__F...
-
Piloter son Arduino avec son navigateur web et Node.js (1) 16 janvier 2023 22:25, par Matock
Bonjour,
Effectivement aujourd’hui (janv.2023), la version actuelle de Node.js et du module SerialPort sont différents de ce qu’ils étaient eu début de cet article. Voilà ce qu’il faut faire.
- Il n’y a pas de modifications à faire dans node_modules/serialport/lib/serialport.js, ce fichier n’existe plus.
Toutes les modifications sont à faire dans le fichier arduino.js :
- la modification de la ligne 1 concernant le port série reste d’actualité
var usbserial = 'COM3';
- la ligne 40 devient
var io = require('socket.io')(server);
au lieu de
var io = require('socket.io').listen(server);
- les lignes 44 et 45 devienent
var { SerialPort } = require('serialport'); var arduino = new SerialPort({ path: usbserial, baudRate: 115200, autoOpen: false });
au lieu de
var SerialPort = require('serialport'); var arduino = new SerialPort(usbserial, { autoOpen: false });
Le reste ne change pas.
Joël -
Piloter son Arduino avec son navigateur web et Node.js (1) 7 novembre 2023 12:36, par PARMENTIER Dominique
Bonjour
Je suis très intéressé par votre article.
Jusqu’a cette étape tout ce passe bien, mais je suis coincé au niveau du fichier node_modules -> serialport -> lib -> serialport.js.
Dans serial port il n’y a pas ou plus le dossier LIB.
Il y a bien un fichier serialport.js mais dans le dossier node_modules>serialport>dist>serialport.js. pas LIB
Quand j’ouvre serialport avec bloc note mais aucune ligne concernant la vitesse de connexion à modifier.
De ce fait pas de communication avec arduino.Voila le message d’erreur
C :\Users\domin>node arduino.js
node:internal/modules/cjs/loader:1051
throw err ;
^Error : Cannot find module ’C :\Users\domin\arduino.js’
at Module._resolveFilename (node:internal/modules/cjs/loader:1048:15)
at Module._load (node:internal/modules/cjs/loader:901:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)
at node:internal/main/run_main_module:23:47
code : ’MODULE_NOT_FOUND’,
requireStack : []
Node.js v20.9.0
Avez-vous une solution ou est ce que je ne cherche pas au bon endroit ?
Cordialement -
Piloter son Arduino avec son navigateur web et Node.js (1) 7 novembre 2023 12:56, par PARMENTIER Dominique
Bonjour
je viens de voir les modifications a faire dans le fichier arduino.js
Je viens de les réalisées par des copier coller mais toujours pas de communication.
Le port COM 3 est utilisé et bien réglé en vitesse 115200.
Pour l’instant bloqué.
Quand pensez vous
Cordialement -
Piloter son Arduino avec son navigateur web et Node.js (1) 7 novembre 2023 20:49, par bobyAndCo
Bonjour,
Cet article a 7 ans maintenant et les choses ont beaucoup évoluées. Il existe maintenant une API qui fait le job.
Regardez ces liens :
https://randomnerdtutorials.com/esp32-webserial-library/
https://f1atb.fr/index.php/fr/2021/10/29/web-serial-api-arduino/
https://developer.chrome.com/articles/serial/
Bien cordialement.
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js (1) 7 novembre 2023 21:20, par PARMENTIER Dominique
Bonsoir
merçi de votre réponse.
J’ai fait un copier coller du fichier arduino.js et mis dans le meme dossier que startNode et la j’ai la communication OK.
Je continu la lecture de ce projet.
Cordialement