Python pour acquisition de données IoT
1. pyserial — Interface Python vers port série
La bibliothèque pyserial permet à Python de communiquer avec l'Arduino/ESP32 via le port USB-COM. Installation : pip install pyserial.
| Concept | Description |
|---|---|
| pyserial | Interface Python → port série USB/COM. Lit les données Arduino/ESP32 |
| asyncio | Programmation asynchrone Python. Permet de lire plusieurs capteurs "simultanément" |
| Time-series | Données horodatées. Stockage optimal : InfluxDB, TimescaleDB ou CSV avec timestamp Unix |
import serial
import csv
from datetime import datetime
ser = serial.Serial("/dev/ttyUSB0", 9600, timeout=1)
with open("donnees_iot.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["timestamp", "temperature", "humidite"])
for _ in range(100):
ligne = ser.readline().decode("utf-8").strip()
if "," in ligne:
temp, hum = ligne.split(",")
ts = datetime.now().isoformat()
writer.writerow([ts, temp, hum])
print(f"{ts} — {temp}°C, {hum}%")
ser.close()
a) Écrivez un script Python qui lit les données de l'Arduino sur 60 secondes.
b) Sauvegardez les données dans un fichier CSV avec timestamp.
c) BONUS : Utilisez asyncio pour lire 2 ports série simultanément.