Interfaçage des télémètres
Pour mesurer la distance entre le chariot et la carotte sur Z, ou pour mesurer la position par rapport à la butée sur l'axe X, on utilise des télémètres laser à temps de vol (TOF = time of flight) de la famille VL53L (0 ou 1) X, connectés en I2C.
Initialement, nous imaginions qu'un simple hub suffirait : les breakout board des TOF étant un VL53L0X et l'autre VL53L1X de deux fabricants différents, on espérait deux adresses différentes. Las : ils sont tous les deux à #0x029 (bah oui, la puce reste un ST Micro de la même ligne, explication sur le forum de ST Micro [archive]). La procédure permettant de forcer un changement d'adresse logiciellement en passant par un signal supplémentaire XSHUT semble lourde : souder à nouveau, câbler à nouveau, refaire le boîtier du M5 pour rendre accessible deux GPIO...
Il semble plus facile de remplacer le hub par un "vrai" un multiplexeur,multiplexeur", par exemple à base de TCA9548A, de chez Seeedstudio qu'on a en stock. Problème : la documentation Seeedstudio et la bibliothèque sont relativement mal foutues (même les commentaires du début de code sont pleins de coquilles et illisibles). La documentation de l'équivalent chez Adafruit est bien meilleure. Mais est-elle transposable à 100% ?