• Post category:Node-Red
  • Commentaires de la publication :0 commentaire
  • Dernière modification de la publication :mars 15, 2022
  • Temps de lecture :9 min de lecture

Allumer une Led avec Node-Red avec un Arduino Uno et Raspberry en communication Serial *

1. Introduction :

Dans ce tutorial vous allez découvrir comment pouvoir allumer une Led sur un Arduino à distance,

grâce à un bouton sur une page web depuis votre téléphone ou pc.

La communication entre votre Arduino et Raspberry se fera grâce au port serial.

 

2. Composants nécessaires :

  • Arduino Uno
  • Un Raspberry
  • Une Breadboard
  • 1 Led
  • 1 résistances 220Ω (optionnel)
  • Des fils de connexion

 

3. Prérequis d’installation du Raspberry :

  • Raspberry Pi OS
  • Node-RED
  • Node-RED-dashboard

 

4. Programmation de la partie Arduino :

Avant de commencer le câblage, on va commencer par injecter le programme dans votre Arduino qui va servir à recevoir les informations et à effectuer des actions en conséquence.

Pour la gestion d’état de notre LED, je vais utiliser le mot “ON” pour définir à l’Arduino d’allumer la LED si il reçoit cette information sur le port serial et le mot “OFF” pour l’extinction.

La communication entre Arduino et le Raspberry se fera grâce à une vitesse de communication de 9600 Bauds.

Voici le code à rentrer dans votre Arduino :

const int led = 2; 

void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}

void loop() {
if (Serial.available()) {
String command = Serial.readString();
if (command == "ON") {
digitalWrite(led, HIGH);
}
else if (command == "OFF") {
digitalWrite(led, LOW);
}
}
delay(400);
}

 

5. Schéma et câblages :

Voici le câblage à effectuer sur votre Arduino. Il vous faudra aussi brancher un cable USB de liaison entre votre Arduino et Raspy pour la communication.

Il servira aussi d’alimentation de l’Arduino.

 

6. Programmation de la partie Node-Red sur le Raspberry :

Pour commencer dans Node-Red, nous allons ajouter un bloc “switch” disponible dans dashboard.

 

Nous allons ensuite ajouter un bloc “function” disponible dans function

 

Double cliquez dessus, nous allons le renommer “Gestion Etat Led” et lui ajouter le code suivant dans Function :

Etat = msg.payload 

if (Etat === true ){
var msg1 = {payload: "ON"}
return [msg1]
}
else if (Etat === false ) {
var msg2 = {payload: "OFF"}
return [msg2]
}

 

Une fois tous les paramètres rentrés, cliquez sur “Done”

 

Nous allons ensuite ajouter un bloc “serial out” disponible dans network

 

Double cliquez dessus et allez sur le petit stylo pour le paramétrer.

 

Une fois dans les paramètres, dans Serial Port,  appuyez sur la loupe et sélectionnez le port USB ou est branché votre Arduino.

 

Dans settings, sélectionnez la vitesse de communication à 9600 bauds.

Une fois fini, cliquez sur “ADD” puis sur “Done”

 

Maintenant il va falloir créer une liaison entre les blocs en cliquant sur les carrés gris et en faisant glisser votre souris.

Cela permet de les faire communiquer ensemble.

Puis cliquez sur “Deploy” en haut à droite.

Vous devriez voir le mot “connected” apparaitre sour le bloc serial.

 

Maintenant nous allons configurer la partie Dashboard pour pouvoir afficher notre bouton sur l’interface Web.

Pour cela, cliquez sur l’icone Dashboard pour accéder au menu et cliquez sur  “+tab”

 

Cliquez ensuite sur “+group”

 

Maintenant nous allons retourner sur le bloc “switch” : double cliquez dessus et dans “Group”, sélectionnez [Tab1] Group 1.

 

Il ne vous reste plus qu’à “Deploy” votre projet et à aller tester votre bouton en cliquant sur l’icône 2.

 

Vous devriez voir apparaître ceci :

 

7. Conclusion :

Si tout s’est bien passé, votre bouton vous permet maintenant d’allumer ou éteindre votre LED.

Si cela ne fonctionne pas, vérifiez bien que vous avez bien sélectionné le bon port USB dans le bloc serial, car il peut afficher connected mais il n’est peut être pas forcement sur le port ou se situe l’Arduino.

 

Voici le code complet Node-Red que vous pouvez importer :

[{"id":"2b93a1b2.7d280e","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"2b7eca77.508506","type":"function","z":"2b93a1b2.7d280e","name":"Gestion Etat Led","func":"Etat = msg.payload \n\nif (Etat === true ){\n    var msg1 = {payload: \"ON\"} \n    return [msg1]   \n    }\nelse if (Etat === false ) {\n    var msg2 = {payload: \"OFF\"}\n    return [msg2]   \n    }\n","outputs":1,"noerr":0,"x":310,"y":80,"wires":[["8ae9b436.86f3f8"]]},{"id":"454ad116.6ac06","type":"ui_switch","z":"2b93a1b2.7d280e","name":"","label":"","tooltip":"","group":"56336a7c.14c464","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","x":130,"y":80,"wires":[["2b7eca77.508506"]]},{"id":"8ae9b436.86f3f8","type":"serial out","z":"2b93a1b2.7d280e","name":"","serial":"b6715e3c.96954","x":510,"y":80,"wires":[]},{"id":"56336a7c.14c464","type":"ui_group","name":"Group 1","tab":"fedcd65.f53cf28","order":1,"disp":true,"width":6},{"id":"b6715e3c.96954","type":"serial-port","z":"","serialport":"/dev/ttyUSB0","serialbaud":"9600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"},{"id":"fedcd65.f53cf28","type":"ui_tab","name":"Tab 1","icon":"dashboard","order":1}]

 

 


 

Laisser un commentaire