vendredi 15 novembre 2013

Oscilloscope et benchmark firmata

L'autre jour, je cherchais un "oscilloscope" arduino dans le navigateur.
J'ai finalement redeveloppé ma propre version à partir de différentes versions.

Au début, j'avais essayé d'intégrer firmata, pour être le plus générique possible. Pour cela j'utilisais le "StandardFirmata" d'arduino, et la bibliothèque pyfirmata du côté python.
Malheureusement, j'observais des plats au niveau de l'oscilloscope, avec environ 5 valeurs par seconde. J'avais observé ces plats dans des captures d'écran d'autres oscilloscopes utlisant arduino et firmata. J'étais donc passé sur un programme maison arduino faisant un envoi en continu des données de pins (en ascii) plutôt que firmata. Cela fonctionnait beaucoup mieux.

J'en avais conclu que firmata était peut-être générique, mais probablement lent.

Cependant l'utilisation de firmata pour des applications temps réels, comme avec johny-five, m'a interrogé sur les performances réels, et sur la source de ces plats (firmata sur l'arduino ou pyfirmata sur le pc?).

J'ai donc comparé les différentes implémentations de firmata python, ainsi que d'autres solutions similaires. Malheureusement sur les deux implémentations python, la deuxième est bugguée. J'ai en tout cas pu vérifier l'existence de plat (freeze). Le script de test est ici


Ne marche pas

28kHz mais  seulement 40Hz effectif environ (les données sont freezées).

Environ 50 Hz 
Environ 60 Hz



Aucun commentaire:

Enregistrer un commentaire