English version

Récupération de données captées par l'Arduino avec Python via USB

Télécharger le code Python

Télécharger le code Arduino

Site de Pyserial (en anglais)


Détails et explications

Principe

La carte Arduino permet d'acquerir des données par l'intermédiaire de capteur et d'un CAN (Convertisseur Analogique Numérique).
Ensuite ces données numériques sont déposées à intervalles réguliers sur un "bus", une zone d'échange. De manière synchronisée l'ordinateur avec Python va lire le contenu de ce "bus". C'est pour que la synchronisation soit bien faite qu'il est important d'utiliser le même "Baudrate" dans l'Arduino et dans le programme Python.

Résultat

Voici un exemple de courbe que l'on peut obtenir en utilisant matplotlib pour tracer les données dont nous avons fait l'acquisition.

import matplotlib.pyplot as plt
cleandata=clean(rawdata)

def write(L):
    file=open("data.txt",mode='w')
    for i in range(len(L)):
        file.write(L[i]+'\n')
    file.close()

write(cleandata)

vals,temps=np.loadtxt('data.txt',delimiter=';',unpack=True)
plt.plot(temps,vals)
plt.show()

Conclusion

Cette façon de faire permet de s'affranchir d'une shield pour écrire sur une carte SD tout en effectuant un travail équivalent. J'ai aussi remarqué que l'écriture sur une carte SD est plus lente que l'écriture dans le port série ce qui peut être gênant pour certaines applications très gourmandes en ressources