Cours:LPTraitDonnee3
Révision datée du 14 juin 2021 à 14:21 par Fredmn (discussion | contributions)
Sommaire
Utilisation de NodeRed sur carte NanoPi Neo2
L'objectif de cette partie est d'utiliser NodeRed avec une carte NanoPi Neo 2.
De nombreuses infos sur cette carte, avec des liens vers des docs externes, sont disponibles sur la page suivante : Cours:NanoPi
De façon générale, des valeurs de capteurs peuvent être utlisées avec Node-Red :
- En réalisant une acquisition sur une broche de la carte
- En lisant la valeur d'un fichier
- En utilisant une bibliothèque dédiée (C ou Python le plus fréquemment)
Vous utiliserez le serveur MQTT d'adresse 10.98.9.245
sur une arborescence de topic qui vous sera propre (noeud racine = votre nom par exemple)
Travail à faire
Exercice 1 : mise en place
- Lancer Node-Red sur votre poste de travail et contrôler son fonctionnement correct.
- Lancer Node-Red sur la carte NanoPi et contrôler son fonctionnement correct.
Exercice 2 : bouton
- Interfacer un ou plusieurs boutons poussoirs : lire sa valeur (0 ou 1) et l'afficher en debug.
- Envoyer la valeur sur un topic MQTT
- Lire cette valeur sur votre poste de travail et l'afficher
Exercice 3 : valeur température interne
- Vous pouvez lire la température (CPU) de votre carte en lisant le contenu du fichier texte
/sys/class/thermal/thermal_zone0/temp
. - Tester en ligne de commande
- Lire cette valeur dans Node-Red (avec un nœud
file in
) et l'envoyer sur un topic MQTT - Lire cette valeur sur votre poste de travail et l'afficher
Exercice 4 : utilisation du lcd
- Une solution est de passer par des nœuds écrit en Python : Cours:NanoPi#NanoHat_Oled
- Un nœud d'initialisation est nécessaire. A exécuter une fois au démarrage, avec le code suivant :
import sys sys.path.append('/root/NanoHatOLED/BakeBit/Software/Python') import bakebit_128_64_oled as oled oled.init() #initialize SEEED OLED display return msg
- Le nœud permettant l'affichage peut-être :
import sys sys.path.append('/root/NanoHatOLED/BakeBit/Software/Python') import bakebit_128_64_oled as oled oled.setNormalDisplay() #Set display to normal mode (i.e non-inverse mode) oled.setPageMode() #Set addressing mode to Page Mode oled.setTextXY(0,0) #Set the cursor to Xth Page, Yth Column oled.putString(msg["payload"]) #Print the Payload as String return msg
- Afficher sur le LCD des données comme
- état d'un bouton
- valeur de la température du CPU
- valeur de consommation électrique
- ...
Exercice 5 : interface avec un potentiomètre
- http://wiki.friendlyarm.com/wiki/index.php/BakeBit_-_Rotary_Angle_Sensor
- http://wiki.friendlyarm.com/wiki/index.php/BakeBit_-_NanoHat_Hub
- Exemple de nœud permettant de lire l'entrée
A0
du nanohub :
import sys
sys.path.append('/root/NanoHatOLED/BakeBit/Software/Python')
import time
import bakebit
# Connect the BakeBit Rotary Angle Sensor to analog port A0
# SIG,NC,VCC,GND
potentiometer = 0
bakebit.pinMode(potentiometer,"INPUT")
time.sleep(1)
sensor_value = bakebit.analogRead(potentiometer)
msg["payload"] = sensor_value
return msg