le data loging ou enregistrement de donnée est un basique dans les systeme a microcontroleurs.
nous allons voir ici comment créer un fichier et enregistrer des données avec un programme en Python. pour cela nous allons examiner le cas pratique de données arrivant d’un arduino uno connecté via port USB et reprendre l’exemple de la rubrique PI & ARDUINO via USB. avec l’ARDUINO UNO qui collecte les données d’un DHT11 et voir comment les enregistrer à la volée dans un fichier sur le RPI. nous aurons ainsi les bases d’une petite station météo tournant sous RPI. ce principe pourrais également être appliqué pour un banc de mesure ou tout autre système dont l’objectif est la collecte et la sauvegarde de données.
PREPARATION DE L’ARDUINO UNO:
rappel des connexions:
programme a télécharger dans l’Arduino UNO:
PROGRAMME COTE RPI:
nous allons egalement reprendre le programme de gestion des données arrivant du port série (revoir rubrique PI & ARDUINO série pour le detail) et le modifier pour y ajouter des commandes qui ouvriront un fichier et enregistreront les données au fur et a mesure . ouvrir le fichier ci dessous dans thonny python ou tout autre editeur pyton.
import serial
import tkinter as tk
import datetime
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 400, height = 200)
canvas1.pack()
label11 = tk.Label(root, text= "METEO")
canvas1.create_window(200, 40, window=label11)
ser = serial.Serial(port='/dev/ttyACM0',baudrate =
9600,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=1)
while 1:
x= str(ser.readline())
now = datetime.datetime.now().strftime('%d/%m/%Y,%H:%M:%S')
temp = x[2:7]
humi = x[8:12]
if x != "b''" :
f=open(‘/tmp/meteo.csv’,’a’)
f.write(now + ‘,‘ + temp + ‘,‘ + humi + ‘\n’)
f.close()
label12 = tk.Label(root, text= now )
label21 = tk.Label(root, text= "TEMPERATURE")
label22 = tk.Label(root, text= temp +' °C')
label31 = tk.Label(root, text= "HUMIDITE")
label32 = tk.Label(root, text= humi + ' %')
canvas1.create_window(200, 80, window=label12)
canvas1.create_window(120, 120, window=label21)
canvas1.create_window(120, 150, window=label22)
canvas1.create_window(300, 120, window=label31)
canvas1.create_window(300, 150, window=label32)
label12.update()
label22.update()
label31.update()
root.mainloop
le morceau de programme qui gerer la creation ouverture de fichier et l’enregistrement de données et la partie surlignée en vert dans la copie ci dessous :
il y a 3 lignes:
– la première ouvre le fichier ( le créée si pas existant) , a noter que le fichier créé est au format CSV (Comma-Separated Values) qui st un format texte de données tabulaires permettant une ouverture lecture sur Excel .
– la ligne suivante enregistre les données sous forme concaténée ( addition de chaine avec le signe +) en les séparant d’une virgule pour obtenir le format CSV.
-la troisième ligne referme le fichier.
si vous exécutez le programme et ensuite examinez le fichier sous Notepad ou excel vous aurez quelques chose comme ci dessous: