TP n°25 : IHM avec Python Node red et arduino |
||
Nom : | ||
Centre d'intérêt : | CI | |
Classe : | 1ère Sti2d Sin | |
Id programme : | sin15, sin31 | |
Conditions : | Seul, durée 3 heures. | |
Matériel : | - Arduino; - shield arduino. |
|
Logiciel : | - ide arduino -Idle python |
|
Document : |
I. Objectifs
- Créer une IHM avec python ou node red
- Mettre en forme les données.
II. Etude du shield arduino
Nous allons utiliser le Shield Multifonctions (ci-dessous, à gauche)
Demandez au professeur de mettre la carte DangerShield sur la carte Arduino. |
Cette carte se compose des capteurs suivants: | En gras les entrées/sorties Arduino utilisées : |
Et des actionneurs :
|
Téléverser le programme suivant dans la carte arduino :
String commande; //la commande envoyée
const int led1=13; //definir la led à allumer
int mesure; //definir la mesure pour A0
void setup() {
Serial.begin(9600); // Ouvrir le port série à 9600bauds (bit/seconde)
pinMode(led1,OUTPUT);//définir la pin led comme une sortie
digitalWrite(led1,LOW);//éteindre la led
}//fin setup
void loop() {
mesure=analogRead(A0);
//test si une donnée est reçu sur le port série
while(Serial.available()) {
commande= Serial.readString();// récupère la commande
if(commande=="led1") { //test si commande est egale à led1
digitalWrite(led1,digitalRead(led1)); //inverse ! l'état de la sortie 0->1 ou 1->0
}
}//fin while
Serial.println(mesure);//affiche la mesure sur le port série
delay(10);
}//fin loop
Lancer le moniteur série.
Ecrire led1 sur le port série et décrire la fonction réalisée par le programme.
III. Serveur python
Pour mettre en place le serveur python, il faut suivre les étapes suivantes :
Etape 1 : Installation de Python et Pyserial
Désinstaller toutes les versions de python supérieure à 3.0.
Télécharger et installer la dernière version de python sur le site python.org .
Redémarrer l'ordinateur.
Ouvrir le terminal de commande.
Installer pyserial à l'aide de la commande :
pip3 install pyserial
Etape 2 : Installation du serveur Python
Créer un répertoire www à la racine de c:
Ecrire à l'aide de l'IDLE python le programme serveur.py suivant dans le répertoire www:
import http.server PORT = 8888 server_address = ("", PORT) server = http.server.HTTPServer handler = http.server.CGIHTTPRequestHandler handler.cgi_directories = ["/"] print("Serveur actif sur le port :", PORT) httpd = server(server_address, handler) httpd.serve_forever()
A l'aide du terminal de commande en mode administrateur, allez dans le répertoire www et lancez le serveur avec la commande suivante :
python serveur.py
Normalement, vous devez obtenir le résultat ci-dessous :
Etape 3 : Créer la page internet de l'IHM
import cgi
import sys
import serial
import time
#Mettre le numero du port de la carte Arduino
ser =serial.Serial('COM5',9600)
#Pause pour se connecter au port série .
time.sleep(1.5)
form = cgi.FieldStorage()
led = form.getvalue("led") #recupère la value du name led de la page web
ser.write(led)
mesure = ser.readline() #recupère la donnée envoyée par arduino
print("Content-type: text/html; charset=utf-8\n")
print("<!DOCTYPE html>")
print("<html>")
print("<head>")
print("<title>IHM</title>")
print("</head>")
print("<body>")
print("<h1>IHM</h1>")
print("<p>Mesure : ")
print(mesure)
print("</p>")
print("<form action='/index.py' method='post'>")
print("<label>LED :</label>")
print("<input type='submit' name='led' value='led1'>")
print("</form>")
print("</body>")
print("</html>")
A l'aide de chrome, allez à l'adresse http://localhost:8888/index.py et vous devriez obtenir le résultat suivant :
Appuyer sur le bouton led1 et la led sur la carte arduino s'allume.
Refaire l'expérience et conclure.
IV. Modification du programme
Modifier le programme arduino et index.py pour pouvoir allumer une deuxième led.
V Node-red
5.1. Introduction
Node Red a été crée par IBM en 2013 afin de facilité la création d'objets connectés.
C'est un langage graphique (sous jacent en javascript) qui permet de créer des liens entre les flux de données entrant et sortant.
Il est gratuit et nécessite : NodeJS (javascript du coté serveur)
5.2. Installationd de NODE RED
Lancer le terminal de commande en mode administrateur
Mettre à jour NodeJS
npm install -g npm
Installer Node-Red
npm install -g --unsafe-perm node-red
5.2. Lancement sous Windows
Aller dans le dossier : c:\users\1sina\appdata\roaming\npm
Lancer la commande
node-red
Autoriser l'accès
5.3. IHM avec Node Red
A l'aide de Node Red et des sources ci-dessous, créez une interface utilisateur pour allumer la led1 et visualiser la mesure de l'arduino.
Sources : http://stssnsb.free.fr/telecharger/blusson/Iot/nodered/_utilisation%20de%20node%20red%20by%20sb.pdf
https://diyprojects.io/node-red-module-dashboard-gui/#.XKJjiZgzaMo
https://www.youtube.com/watch?v=nJ1wtUtcLfM
VI. Conclusion