Go to file
2023-05-18 10:50:00 +02:00
.vscode petites améliorations 2023-05-06 15:40:21 +02:00
.gitignore Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
CMakeLists.txt Suppression du printf du fil d'execution principal 2023-04-17 16:13:36 +02:00
i2c_fifo.h Code pour l'i2c esclave - non testé 2023-03-30 21:20:08 +02:00
i2c_slave.c Code pour l'i2c esclave - non testé 2023-03-30 21:20:08 +02:00
i2c_slave.h Code pour l'i2c esclave - non testé 2023-03-30 21:20:08 +02:00
main.c Homogénéisation des indices, certains comptaient de 1 à12, d'autres de 0 à 11. Alignement sur 0 à 11. 2023-05-06 22:20:58 +02:00
pico_sdk_import.cmake Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
Readme.md Stauration de la distance à 200 cm + ajout de commentaires 2023-04-16 20:22:20 +02:00
SelectionCapteur.c Homogénéisation des indices, certains comptaient de 1 à12, d'autres de 0 à 11. Alignement sur 0 à 11. 2023-05-06 22:20:58 +02:00
SelectionCapteur.h Ajout des timeout dans VL53L1X_plateform, correction bug dans Seleciton capteur + scénarios de tests dans main sur l'init des capteurs 2023-02-26 21:24:30 +01:00
Tests.c Amélioration de la vitesse de lecture 2023-05-06 16:58:05 +02:00
Tests.h Code pour l'i2c esclave - non testé 2023-03-30 21:20:08 +02:00
vl53l1_platform.c Ajout des timeout dans VL53L1X_plateform, correction bug dans Seleciton capteur + scénarios de tests dans main sur l'init des capteurs 2023-02-26 21:24:30 +01:00
vl53l1_platform.h Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
vl53l1_types.h Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
VL53L1X_api.c Ajout des timeout dans VL53L1X_plateform, correction bug dans Seleciton capteur + scénarios de tests dans main sur l'init des capteurs 2023-02-26 21:24:30 +01:00
VL53L1X_api.h Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
VL53L1X_calibration.c Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
VL53L1X_calibration.h Initialisation du dépôt à partir de VL53L1X_rangefinder. La sélection de capteur désactive bien le capteur désiré. 2023-02-21 21:52:36 +01:00
VL53L1X_Fonctions.c Prise en compte du "Range status" lors de la lecture des mesures 2023-05-18 10:50:00 +02:00
VL53L1X_Fonctions.h Amélioration de la vitesse de lecture 2023-05-06 16:58:05 +02:00
ws2812.c Lecture de la commande d'affichage couleur + tests 2023-04-16 19:34:11 +02:00
ws2812.h Lecture de la commande d'affichage couleur + tests 2023-04-16 19:34:11 +02:00
ws2812.pio Initialisation des WS2812 (Neopixel) 2023-02-25 11:10:01 +01:00

Détection de l'adversaire - 2023

Le code présenté ici sert à la détection de l'adversaire pour les robots de l'équipe Poivron Robotique qui participe à la coupe de France de Robotique. Ce code tourne sur un Raspberry Pi Pico et une carte personnalisé sur laquelle sont banchés 12 capteurs VL53L1X.

Principe de fonctionnement

Les capteurs VL53L1X sont des capteurs I2C dont l'adresse est configurable. Cependant, le capteur revient à son adresse par défaut dès qu'il est éteint ou désactivé par la broche XSHUT. Le Raspberry Pi Pico est relié à un 74HC4067, qui lui permet de désactiver un capteur à la fois.

Le code utilisé ici repose sur VL53L1X_Raspberry_Pi_Pico et l'exemple pour piloter les LED RGB ws2812 fourni avec le SDK du Raspberry Pi Pico.

Initialisation

La première étape de l'initialisation consiste à changer tous les capteurs d'adresses en une seule commande I2C.

La seconde étape consiste, pour chaque capteur, à le désactiver puis à le réactiver à l'aide du 74HC4067 et de la boche XSHUT du composant. Ce faisant, il reprend son adresse par défaut et il est le seul à cette adresse. Ainsi il est possible, via le bus I2C de lui attribuer une adresse unique.

Communication I2C

Avec le reste du robot, la carte communique en I2C sur le bus i2c1, se comportant comme une EPROM en utilisant le code de Valentin Milea valentin.milea@gmail.com, Pico_i2c_slave.

Description de la mémoire d'échange:

Les adresses 0 à 11 (0x0B) contiennent les distances des capteurs en centimètre. Cette distance est saturée à 200 cm. Les adresses 16 (0x10) à 18 (0x12) contiennent les consignes d'éclairage des LEDs:

  • 0x10 : Couleur sur 8 bits.
  • 0x11 : octet de poids fort pour le masque sélectionnant les LEDs à commander.
  • 0x12 : octet de poids faible pour le masque sélectionnant les LEDs à commander.

Couleur sur 8 bits structurée ainsi : 3-3-2 (Rouge - vert - bleu). Le masque sur 16 bits, 1 : la led doit être piloter de la couleur indiquée, 0 la led affiche la distance. Valeur spéciale pour le masque : 0x00. Dans ce cas, toutes les LEDs reprennent leur fonction par défaut (affichage de la distance).

Démo - Ne fonctionne plus

La démo ne fonctionne plus, la carte initialise automatiquement les capteurs et lit leurs valeurs en continu. Le code esclave I2C envoi ces valeurs qui sont stockée de l'adresse 0x0 à 0x0B de la "mémoire" I2C.

Le code I2C pour la partie esclave est repris de pico_i2c_slave.

Une fois branchée à un ordinateur, le Raspberry Pi Pico propose un menu par la liaison USB/série.

  • La commande "i" initialise les capteurs et change d'état les LEDs en fonction du succès de l'initialisation.
  • La commande "j" démarre une lecture continue et renvoie les données des capteurs dans un format compatible avec Teleplot.