My Free Time

Utiliser node-red avec Arduino

Node-red c'est quoi ?

Pour faire très simple, c'est une appli basée sur node.js qui se lance sur windows, linux, raspberry ou dans un docker sur un serveur NAS par exemple et qui permet d'envoyer et de recevoir des données par divers protocoles, serie, http, tcp, udp, mqtt et j'en passe.

Par exemple jusqu'à maintenant quand je voulais intéragir avec une carte arduino depuis mon PC je faisais des programmes en VB.net.

Et bien en fait on peut faire dans la plupart des cas la même chose avec un minimum de connaissance en programmation en passant par node-red.

Node-red consiste à un ensemble de petits nodes mis bout à bout comme des légos et qui construisent un programme.

Node-red arrive avec des nodes de base mais on peut en installer d'autres en passant par "manage palette". On peut ainsi ajouter quelques indispensable comme Dashboard qui permet de visualiser ou piloter un arduino par exemple depuis une page web.

exemple ci-dessous un simple bouton qui génère une donnée "timestamp" et qui l'envoit au débugger et dans un fichier texte en même temps.

Vu qu'il y a une sortie sur le node "write to file" on peut très bien faire comme ci-dessous:

Quand on clique sur le "bouton" bleu qui se trouve au début du node timestamp ça génère une donnée, ici on le fait manuellement mais on peut remplacer par un node "serial", c'est pas ce biais qu'on pourra recevoir des données depuis une carte arduino.

Tous les "Serial.print" ou "Serial.println" de l'arduino arriveront sur ce node.

Il existe un bon nombre de tutos sur le web pour se familiariser avec node-red.
On peut s'en servir aussi pour de la domotique car il peut envoyer et recevoir des requêtes mqtt et http à un broker externe comme mosquitto.org

Exemple d'envoi et de réception de messages en série sur une arduino avec node-red.

Nous allons créer un "flow" (programme) dans node-red qui enverra er recevra des données à une arduino par le port série (usb).

De base node-red possède des nodes de communication tel que tcp, http, UDP, etc... mais pour utiliser le port série d'arduino il faut aller dans manage palette pour installer le node node-red-node-serialport.

Tout d'abord le sketch à injecter dans l'arduino (uno ou nano)

dans la boucle du programme sont attendues des données venant du port série if (Serial.available() > 0) les données peuvent être un a ou un b et selon la lettre un message sera envoyé sur le port série pour dire quelle lettre a été entré. Les valeurs 97, 98 représente la valeur ascii des a, b car dans ce cas on lit en byte.

Si l'arduino reçoit a la led de la carte s'allume, et vice versa si elle reçoit b.

Le flow de node red ressemblera à ça :

Tout ça et plus dans la vidéo ci-dessous où on voit aussi le dashboard.