analogique.py
L'ADC 10 bits de l'ATmega remonte dans un CSV horodaté sur le disque du PC : la carte d'acquisition à 20 € avec stockage illimité, correction d'étalonnage en pandas plutôt qu'en C.
Matériel requis
Une LattePanda Alpha (x86 Intel m3-7Y30, Windows 10 ou Linux) avec son coprocesseur ATmega32U4 compatible Arduino Leonardo sur les connecteurs 50 broches. 1 capteur analogique 0-5 V (le 32U4 est en 5 V, contrairement aux SBC 3,3 V).
Branchement
Signal sur A0 du connecteur, GND commun. Entrée 5 V max — les capteurs 0-10 V demandent un diviseur.
Fonctionnement
read_analog déclenche une conversion sur le MCU et renvoie le brut par le pont série ; le CSV s'écrit en flush continu. 10 Hz est la zone confortable du pont. L'ATmega32U4 est un vrai Leonardo : brochez-le en « Arduino Leonardo » dans l'IDE via son port COM interne. Côté hôte, la bibliothèque DFRobot lattepanda (Python) dialogue avec lui par série.
Pour aller plus loin
Traceur temps réel avec matplotlib (le PC le permet), ou seuils d'alerte par notification desktop.
analogique.py
#!/usr/bin/env python3
# Capteur analogique sur A0 du MCU -> CSV cote hote, 10 Hz.
from pinpong.board import Board, Pin
import time, csv, datetime
Board().begin()
capteur = Pin(Pin.A0, Pin.IN)
with open("mesures.csv", "a", newline="") as f:
w = csv.writer(f)
if f.tell() == 0:
w.writerow(["horodatage", "brut", "volts"])
print("Acquisition 10 Hz (Ctrl-C pour finir)")
try:
while True:
brut = capteur.read_analog() # 0..1023 (10 bits MCU)
volts = brut * 5.0 / 1023.0 # reference 5 V du 32U4
w.writerow([datetime.datetime.now().isoformat(timespec="seconds"),
brut, round(volts, 3)])
f.flush() # survit a un crash
time.sleep(0.1)
except KeyboardInterrupt:
print("\nJournal clos.")