Vous êtes sur la page 1sur 23

Débuter avec l’Arduino et Node-RED.

Enregistrer et afficher des mesures


en JSON depuis le port série
L’Arduino est très pratique pour récupérer des mesures depuis divers capteurs (présence de
polluants, température, humidité, luminosité, indice UV, taux de CO ou de CO2…). Dans ce
tutoriel, nous allons apprendre comment créer très rapidement un petit système
d’enregistrement de données à l’aide de Node-RED. On pourra très simplement visualiser les
mesures sous la forme d’un graphique ou les exporter dans un fichier CSV (fichier texte avec un
point-virgule comme séparateur de données) pour faire des calculs statistiques à l’aide d’un
tableur (LibreOffice, Excel, Number…).

Matériel nécessaire
Pour ce projet, nous avons besoin :

 D’un Arduino Uno ou d’un clone (n’importe quel modèle conviendra). Vous pouvez
également utiliser un ESP8266 mais celui-ci ne dispose que d’une entrée analogique. Vous pouvez
également utiliser un ESP32
 D’un ordinateur sur lequel est installé Node-RED et l’IDE Arduino.
o Vous pouvez utiliser un PW Windows, un Mac ou un Raspberry Pi. Suivez ce
tutoriel pour installer Node-RED sur votre ordinateur
 Une (ou plusieurs capteurs). Ici, j’ai utilisé deux sondes pour mesurer l’humidité du sol. Une
sonde classique YL-69 et une sonde de mesure de conductivité (marquée v1.2) revêtue d’une
peinture de protection anti-corrosion.

Ce que nous allons apprendre dans ce


tutoriel Arduino
Dans ce tutoriel nous allons apprendre

 Comment récupérer (acquérir) les données d’un capteur analogique avec du code Arduino (C+
+)
 Comment envoyer les mesures sur le port série
 Comment mettre en forme des mesures au format JSON pour les exploiter facilement depuis
Node-RED
 Découvrir Node-RED
 Vous connecter sur le port série d’un Arduino Uno (fonctionne également avec un ESP8266
ou un ESP32)
 Apprendre les notions de base de programmation javascript sous Node-RED

Circuit Arduino
Rien de bien compliqué pour le circuit, il suffit d’alimenter le capteur et de récupérer le signal sur la
broche analogique de l’Arduino. Ici, le YL-69 (ou FC-28) est connecté sur la broche A4. Le second
capteur sur la broche A5.

Code Arduino
On va simplement lire à intervalle régulier (ici toutes les 5s, 5000ms), la valeur du signal analogique
(de 0 à 1023) pour chaque sonde d’humidité du sol. Ensuite on envoi la sortie sur le moniteur série de
l’IDE Arduino.
Formater les données en JSON
On pourrait envoyer directement les mesures sur le port série de
l’Arduino avec un séparateur, par exemple un caractère spécial (|, -, 
#…) mais cette stratégie implique que l’on sache précisément la
position de chaque données. Aucun problème avec une ou deux
données, ça devient plus compliqué lorsqu’il y en à une dizaine. Autre
problème, la conversion de chaine de caractères qui est un éternel
problème en informatique.

Pour éviter tous ce problème, nous allons mettre en forme les


données et indiquer à chaque fois à quoi elle correspond. Pour cela,
nous allons utilise le format JSON. l’avantage, c’est qu’il est supporté
par tous les langages modernes. C’est même la structure de données
par défaut du javascript, langage sur lequel repose Node-RED.

Le JSON est une mise en forme structurée des données de type clé =
valeur. Chaque ligne de données est séparée par une virgule (sans la
dernière ligne). Une valeur peut être une chaine de caractères (une
image sera une chaine), un nombre (entier ou décimal), un tableau
(chaine, nombre), une structure (qui contiendra elle même des
données sous la forme clé = valeur). Voici un exemple. Tout d’abord
en ligne, c’est ce que le code Arduino va généré
Pour vérifier votre code, je vous conseille d’utiliser le site jsonlint.com qui est gratuit.
Pour de gros projet, comme par exemple cette station météo avec interface WEB, je vous conseille
d’utiliser la librairie ArduinoJSON. Elle permet de stocker les données au format JSON dans la
mémoire de l’Arduino. C’est très pratique pour extraire des données, des réglages, enregistrer un
historique dans la mémoire SPIFFS ou une carte SD.

Ici, on va faire plus simple et directement construire une chaine de caractères et l’envoyer sur le port
série ce qui donne le code suivant

 
Connexion au port série de l’Arduino avec
Node-RED
Connectez-vous à Node-RED depuis un navigateur internet à l’adresse localhost:1880 ou depuis un
autre ordinateur (IP:1880)
Le code Node RED est appelé Flow. On va commencer par se connecter à l’Arduino à l’aide du Node
(la brique de programmation) Serial (dans la palette Input, puisqu’on veut lire les mesures). Glissez-
déposer le node sur la page blanche et faites un double clic sur le Node Serial pour ouvrir le panneau
de configuration.

Cliquez sur le crayon pour ajouter une nouvelle connexion. Utilisez la loupe pour lister les ports COM.
Ici l’Arduino est connecté sur un Raspberry Pi 3, donc le chemin vers l’Arduino est au format Linux.
Sur Windows, ce sera un port COMx.
Dans le code Arduino, la ligne de code Serial.begin(115200) permet d’initialiser la vitesse à 115200
bauds, indiquez la vitesse sous Baud Rate. Enregistrez, c’est tout ce qu’il y à faire

Extraire les données du JSON venant de


l’Arduino
Pour le moment, on récupère une chaine de caractère sur le port série de l’Arduino, on va la convertir
en un objet JSON exploitable par Node-RED à l’aide du node JSON. Placez le sur le flow et reliez-le
au port série.

Visualiser les mesures sur un graphique


Cherchez le node chart et placer le sur le flow
Reliez les des fonctions au node chart. Ouvrez le panneau de configuration du graphique. Cliquez
d’abord sur le crayon pour créer un groupe. Pour en savoir plus sur l’organisation des groupe, lisez cet
article.

Ensuite vous pouvez modifier certains paramètres :

 Group : sélectionnez le groupe que vous venez de créer


 Size : taille
 Label : libellé
 X-axis : nombre de points ou période de temps
 Name : le nom qui apparait sur le flow
Enregistrez, déployez et allez l’adresse localhost:1880/ui (ou IP:1880/ui) pour visualiser les mesures
de vos capteurs connectés à l’Arduino
Déployez, après quelques minutes, voici à quoi va ressembler le
fichier CSV
Exemple :
un capteur de gaz Arduino UNO et MQ-7, vous pouvez utiliser n'importe quel
capteur analogique de votre choix, même un POT le ferait.
À suivre:
 Le débit en bauds doit être de 57600.
 Le délai doit être supérieur à 60000 ms, conformément aux normes Twitter.
 N'utilisez pas / n'ouvrez pas votre moniteur série, gardez votre port COM
libre.
 Gardez votre carte Arduino connectée à votre ordinateur.
ÉTAPE 2
 Téléchargez node.js pour votre ordinateur, cliquez ici.
 Ouvrez l'invite de commande et installez Node-RED avec ces commandes:
npm install -g node-red
 Maintenant, exécutez votre Node-RED, avec cette commande:
node-red
 Copiez le lien du serveur local vers votre navigateur (Chrome) http: // localhost: 1880 / #
Il est maintenant temps de créer votre projet:
Choisissez les NODES suivants:
 Entrée de nœud série
 Noeud Twitter
 Noeud texte à partir du tableau de bord et
 nœud de débogage
Traitement à l'aide du modèle Proteus
Arduino
Cette note d'application décrit comment utiliser le traitement avec le logiciel LabCenter Proteus pour
simuler l'Arduino via un port COM virtuel .
Il suppose que l'utilisateur est familier avec Proteus, Arduino IDE et Processing IDE.
Nous aurons besoin:
Logiciel LabCenters Proteus et option Proteus VSM pour Arduino ™ AVR®.
La version gratuite de Virtual Serial Port Emulator.
L'IDE de traitement.

Téléchargez et installez l'émulateur de port série virtuel.


http://www.eterlogic.com/Products.VSPE.html
Étape 5: connecter les broches
Étape 6: Configurer les communications
Dans la fenêtre schématique de Proteus, cliquez sur l'onglet Code source.
Supprimez le code par défaut dans la fenêtre.
Entrez le code pour tester le port COM.
Étape 8: compiler le code

Sélectionnez Build Project dans le menu.


Ouvrez l'IDE de traitement et chargez le code procComPortTest.
Assurez-vous que le port Com est réglé sur 1 et le débit en bauds sur
9600.
myPort = new Serial (this, Serial.list () [1], 9600);
Accédez au schéma dans proteus et cliquez sur la flèche pour
démarrer la simulation puis cliquez sur Exécuter dans l'IDE de traitement.
Si tout est correctement configuré, la LED du
modèle Arduino doit s'allumer puis s'éteindre à chaque fois que vous exécutez le code de traitement.