Ne vous êtes-vous jamais demandé que qu'il arrivait aux colis que vous envoyez par la poste? Nous si ! Ce n'est pas qu'on ait trop à se plaindre des services de la Poste Suisse, bien au contraire. Mais on se demandait comment ils font pour livrer en Suisse le lendemain matin un colis posté à 17h00.
Il se trouve qu'on a au catalogue un petit module capable de détecter les mouvements et les chocs, et de les enregistrer dans sa mémoire flash. Ce module, c'est le Yocto-3D. Évidement, il était très tentant d'en placer un dans un paquet puis de lui faire enregistrer les accélérations que subit le paquet au cours de son transport.
Comme tous les capteurs Yoctopuce, le Yocto-3D n'a pas besoin d'une vraie connexion USB pour fonctionner, il suffit de l'alimenter. Et on n'est même pas obligé de l'alimenter en 5V, ce module-ci peut se contenter d'un petit 3.3V. En d'autres termes, trois simples piles suffisent amplement pour lui permettre de fonctionner de manière autonome.
Trois simples piles suffisent pour alimenter le Yocto-3D
On s'est donc fabriqué une petite boîte noire pour colis postal: un Yocto-3D alimenté par trois piles AA, le tout fixé sur une plaque qu'il suffit de coller au fond du paquet. On a commencé par quelques tests: alimenté de la sorte, le module tient environ une semaine.
Une boîte noire pour colis postal :-)
Configuration
Avant d'expédier le paquet, il faut configurer le Yocto-3D. Le plus simple est d'utiliser la librairie en ligne de commande. La première chose à faire est d'effacer le datalogger, cela aura aussi pour effet de l'arrêter s'il était déjà en train de tourner (dans tous ces exemples, remplacez le numéro de série par celui de votre propre module) :
C:\>YDatalogger Y3DMK001-1FD59.dataLogger forgetAllDataStreams OK: Y3DMK001-1FD59.dataLogger.forgetAllDataStreams = .
Il faut ensuite activer les fonctions qui nous intéressent, ici l'accéléromètre. Il est tentant de configurer les fréquences d'échantillonnage au maximum, mais ce n'est pas forcément une bonne idée: on risque de se retrouver en fin de parcours avec une montagne de données difficile à manipuler. On va se contenter d'enregistrer 1 fois par minute. Ainsi pour chaque minute on aura la valeur minimale, moyenne et maximale; c'est surtout cette dernière qui nous intéresse.
C:\>YAccelerometer -s Y3DMK001-1FD59.accelerometer set_logfrequency 1/m OK: Y3DMK001-1FD59.accelerometer.set_logFrequency = 1/m.
Notez le -s qui force le module à sauver le changement de configuration. Sans ça, le changement ne serait gardé que jusqu'au prochain redémarrage du module. Si le voyage va être long et qu'on veut gagner de la place, on peut désactiver l'enregistrement des autres fonctions du module.
C:\>YCompass -s Y3DMK001-1FD59.compass set_logfrequency off OK: Y3DMK001-1FD59.compass.set_logFrequency = off. C:\>YMagnetometer -s Y3DMK001-1FD59.magnetometer set_logfrequency off OK: Y3DMK001-1FD59.magnetometer.set_logFrequency = off. C:\>YRefFrame -s Y3DMK001-1FD59.refFrame set_logfrequency off OK: Y3DMK001-1FD59.refFrame.set_logFrequency = off.
Il faut ensuite configurer le datalogger pour qu'il se mettre à enregistrer dès la mise sous tension.
C:\>YDatalogger -s Y3DMK001-1FD59.dataLogger set_autoStart on OK: Y3DMK001-1FD59.dataLogger.set_autoStart = 1.
Voilà, c'est presque prêt. Il reste une dernière petite astuce. Les capteurs Yoctopuce n'ont pas de d'horloge en temps réel: ils perdent l'heure lorsqu'ils sont hors tension. Par contre, ils se mettent à l'heure automatiquement dès qu'ils sont branchés à un ordinateur (ou à un YoctoHub) qui dispose de l'heure. L'astuce consiste à brancher le module quelques secondes sur un ordinateur faisant tourner le VirtualHub, ce qui va le mettre à l'heure. Il va aussi se mettre à enregistrer en utilisant cette heure comme point de départ. Si ensuite on le débranche pour l'alimenter avec des piles, il va continuer à ajouter des données en utilisant comme point de départ l'heure du dernier enregistrement. Cette manip est optionnelle, si vous ne la faites pas, le datalogger datera simplement les données en partant de la seconde zéro.
Evidemment, on n'a pas résisté à l'envie de faire quelques tests rigolos: voilà ce qui se passe quand on laisse tomber le paquet d'environ 1m20.
La boîte noire du paquet a enregistré un atterrissage un peu dur.
Une fois que tout est prêt, il ne reste plus qu'à poster le paquet avec sa propre adresse et attendre le lendemain que le facteur nous le ramène.
Le lendemain
Le pauvre facteur n'a pas trop compris pourquoi on lui a littéralement sauté dessus pour récupérer un paquet a priori pas très différent de ceux qu'on reçoit tous les jours :-) Une fois le paquet ouvert, on a constaté que le module etait toujours là en un seul morceau, enregistrant sagement ce qui se passe. On a commencé par arrêter le datalogger.
C:\>YDatalogger Y3DMK001-1FD59.dataLogger set_recording off OK: Y3DMK001-1FD59.dataLogger.set_recording = 0.
Pour ensuite, récupérer les données.
C:\>YAccelerometer -f "[result]" Y3DMK001-1FD59.accelerometer get_recordedData 0 0 unixTime;minValue;averageValue;maxValue 1399992720;0.9920;1.0066;1.0190 1399992780;0.9990;1.0082;1.0160 1399992840;0.9990;1.0080;1.0150 1399992900;1.0000;1.0079;1.0180 1399992960;1.0010;1.0077;1.0140
Le -f "[result]" sert à simplifier l'affichage des résultats pour pouvoir les parser plus facilement. Vous pouvez aussi enregistrer le tout dans un fichier que vous pourrez ensuite importer dans Excel par exemple:
C:\>YAccelerometer -f "[result]" Y3DMK001-1FD59.accelerometer get_recordedData 0 0 > data.csv
Et voilà le résultat. On sait maintenant comment fait la Poste Suisse pour arriver à acheminer des paquets d'un bout à l'autre de la Suisse en moins de 18h: ils bossent quasiment toute la nuit.
Les tribulations d'un paquet en Suisse
On remarque aussi que le paquet est traité avec soin: la poste ne l'a jamais laissé tomber, elle ne l'a même pas trop secoué. Si on avait pensé à activer l'enregistrement des deux inclinomètres du Yocto-3D, on aurait même pu savoir si elle l'avait penché.
On peut même recouper les données enregistrées avec le suivi d'envoi fourni par la poste, pour constater que le pic d'accélération subie (environ 2,5 g) correspond probablement à son arrivée au centre de tri:
Le colis est scanné au centre de tri à 22h34
Bien entendu, il est possible de pousser le concept encore plus loin en utilisant d'autres modules Yoctopuce: Yocto-Altimeter, Yocto-Temperature, Yocto-Meteo, etc...
Pour finir, si vous comptez reproduire cette expérience, sachez qu'il est rigoureusement interdit d'expédier par avion un appareil connecté à une batterie au lithium en raison des risques d'incendie que ces batteries présentent. Donc pas de batterie USB: contentez-vous de piles ordinaires.