LOCODUINO

Piloter son Arduino avec son navigateur web et Node.js (1)

. Par : bobyAndCo

Processing est l’une des alternatives pour réaliser des interfaces graphiques dont la programmation s’apparente à celle de l’Arduino. Son utilisation se fait en lignes de code et repose sur Java. Mais ce que je vous propose ici, c’est de recourir aux outils de création graphique du web qui sont particulièrement conçus pour produire facilement (…)

Retourner à l'article

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.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

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

    Répondre

    • 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

      Répondre

  • 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

    Répondre

  • 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.

    Répondre

  • 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 :

    Répondre

  • 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

    Répondre

    • 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 !

      Répondre

      • 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.

        Répondre

  • 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 ?

    Répondre

  • 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

    Répondre

  • 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.

    Répondre

  • 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.js

    Mon 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.

    Répondre

  • 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.

    Répondre

  • 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

    Répondre

    • Piloter son Arduino avec son navigateur web et Node.js (1) 13 février 2018 13:26, par bobyAndCo

      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

      Répondre

      • 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

        Répondre

  • 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);
    });

    Répondre

  • 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.

    Répondre

  • 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.

    Répondre

  • 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.

    Répondre

    • 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

      Répondre

      • 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

        Répondre

  • 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 : OK

    5) ouverture page html http://localhost:8080/power1.html
    => Logs : Connexion : Ok sur la page html

    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 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

    Répondre

    • 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 Logs

      Cela 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

      Répondre

  • 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

    Répondre

    • 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

      Répondre

  • 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 aide

    Cordialement

    Répondre

  • Oui il s’agit bien de arduino.js (fichier executé par Node.js)

    Bien cordialement

    Répondre

  • 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 rebuild

    C :\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.

    Répondre

    •  

      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

      Répondre

      • 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).

        Répondre

  • 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

    Répondre

  • 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")

    Répondre

  • 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

    Répondre

  • 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

    Répondre

  • Bonjour, comme fais tu pour te connecter depuis un autre ordinateur ou ton smartphone sur ton serveur node.js ?

    Répondre

  • 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

    Répondre

  • 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.

    Répondre

  • Bonjour,
    pour information, il faut installer ou les fichiers arduino.js ? un exemple de chemin svp

    Répondre

  • 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.

    Répondre

  • 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 identifier

    Quelle en est la raison ? Grand mystère
    Serait-il possible d’avoir un élément de réponse ?
    Merci par avance
    Cordialement

    Répondre

  • 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

    Répondre

    • 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

      Répondre

  • ou je vais trouver le fichier serialport.js ?merci de me répondre .cordialement

    Répondre

  • 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 !

    Répondre

  • 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

    Répondre

  • 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

    Répondre

  • 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.

    Répondre

  • 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

    Répondre

  • 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

    Répondre

    • 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.
      Emmanuel

      Voir en ligne : Piloter son Arduino avec son navigateur web et Node.js (1)

      Répondre

  • 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

    Répondre

  • 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...

    Répondre

  • 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

    Répondre

  • 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

    Répondre

  • 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

    Répondre

  • 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

    Répondre

  • 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

    Répondre

Rubrique Programmation

Les derniers articles

Les articles les plus lus