Catégories
Liens
Ceci est une ancienne révision du document !
===proposition d'id a implémenter ds le code arduino :===
b-bleu
b-jaune
b-rouge
b-vert
rot-1
rot-2
pres-1
pres-2
dist-1
dist-2
lum-1
lum-2
!! actuellement id pressure2= idpressure1
Le code écrit par Guillaume Bertrand regroupe tous les types de capteurs brutbox en un seul fichier. Chaque capteur peut être personnalisé via des define placé en début de fichier. Ce code permet l'utilisation de capteurs analogiques comme numérique et prévoit une implémentation inachevée d'un gyroscope/accéleromètre à base de MPU5060. Pour en faciliter le développement et la maintenance, nous l'avons totalement refondu en une implémentation différente.
Cette nouvelle implémentation comporte trois codes distincts : un pour les capteurs analogiques (potentiomètre, pression, distance, lumière…), un pour les numériques (bouton poussoir, capteurs capacitifs…) et un pour le gyroscope/accéléromètre. Chacun de ces codes est paramétrable via des define en en-tête de fichier. Cette implémentation intègre de nouvelles fonctionnalitées :
À plusieurs occasions il a été constaté un dysfonctionnement important du système amenant une latence de plus en plus importante entre la manipulation du capteur à son effet audible, pouvant aller jusqu'au crash de pd. Pour en déterminer la cause, des essais ont été menés.
Pour mesurer le temps nécessaire à l'ESP8266 pour empaqueter un message OSC et l'envoyer, un firmware spécifique a mesuré le temps écoulé entre le début de l'empaquetage et la fin de l'envoi, après la suppression du message en RAM via la fonction micros(). La durée moyenne mesurée est de 600µs +- 100µs. Cette durée est extrêmement stable dans le temps et ne dépend pas du message à envoyer. La latence observée ne vient donc pas de l'ESP8266
Puisque la latence ne provient pas de l'ESP8266, elle peut être imputable :
Pour tester l'ensemble, un script python envoie régulièrement sur le port série un nombre aléatoire. L'ESP8266 reçoit ce nombre et le renvoie en OSC via le broadcast. Ce message arrive donc au routeur qui le distribue à l'ordinateur qui mesure alors le temps écoulé entre l'envoi de ce nombre sur le port série et sa réception en OSC. Il tient également le compte des messages envoyés en série mais jamais reçus en OSC (paquets perdus). La réception OSC est gérée par liblo, une implémentation en C légère et performante du protocole OSC. Ce test à été effectué sur de longues durées de fonctionnement (plusieurs heures) avec toutes les brutbox connectées. Les paquets série ont étés envoyés le plus rapidement possible soit toutes les 8ms.
Résultats : l'aller-retour des messages prends en moyenne 9ms (90% des messages ont un délai compris entre 8ms et 17ms) et la perte de paquet est minimale (inférieure à 0.6%). La latence observée (>50ms) ne peut donc être liée ni au routeur, ni à la qualité de la connection, ni au système d'exploitation. Le problème se situe donc en aval de cette chaine, dans puredata. Pour comprendre si le dépaquetage de l'OSC en était à l'origine, d'autres méthodes de communication entre les brutbox et puredata ont été essayées.
Liste de matériel et composants a faire
Autres photos, galerie, …