Cours:LPTraitDonnee3

De troyesGEII
Aller à : navigation, rechercher

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

  1. Lancer Node-Red sur votre poste de travail et contrôler son fonctionnement correct.
  2. Lancer Node-Red sur la carte NanoPi et contrôler son fonctionnement correct.


Exercice 2 : bouton

  1. Interfacer un ou plusieurs boutons poussoirs : lire sa valeur (0 ou 1) et l'afficher en debug.
  2. Envoyer la valeur sur un topic MQTT
  3. Lire cette valeur sur votre poste de travail et l'afficher

Exercice 3 : valeur température interne

  1. Vous pouvez lire la température (CPU) de votre carte en lisant le contenu du fichier texte /sys/class/thermal/thermal_zone0/temp.
  2. Tester en ligne de commande
  3. Lire cette valeur dans Node-Red (avec un nœud file in) et l'envoyer sur un topic MQTT
  4. Lire cette valeur sur votre poste de travail et l'afficher

Exercice 4 : utilisation du lcd

  1. Une solution est de passer par des nœuds écrit en Python : Cours:NanoPi#NanoHat_Oled
  2. 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
    
  3. 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
    
  4. Afficher sur le LCD des données comme
    1. état d'un bouton
    2. valeur de la température du CPU
    3. valeur de consommation électrique
    4. ...

Exercice 5 : interface avec un potentiomètre

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