ToF Module

De Polybot Grenoble
Révision datée du 14 mars 2021 à 14:20 par Polybot Grenoble (discussion | contributions) (→‎Version 2)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Présentation

Ce projet consiste en la réalisation d'un module indépendant en charge de la mesure de distance. Ce dispositif est utilisé dans le cadre de l'évitement des obstacles et adversaires lors de la coupe de France de Robotique.

Les capteurs utilisés sont des capteurs Time Of Flight VL53L0X. Ces derniers sont contrôlés grâce à un bus I2C. Dans un premier temps, un shield pour carte STM32 Nucleo sera réalisé. Dans un second temps, lorsque le prototype précédent sera fonctionnel, un PCB custom sera designé.

Contexte : capteurs ToF VL53L0X

Lien : https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html

Le capteur VL53L0X est un capteur de distance développé par STMicroelectronics. Il utilise la technologie Time of Flight (où Temps de Vol). Nous avons retenu ce capteur, car il est insensible aux perturbations extérieures et offre une bonne précision dans les gammes de distance que nous cherchons à mesurer. Ce capteur est précis et rapide, mais présente un gros désavantage : son adresse I2C n'est pas stockée durablement. À chaque redémarrage, l'adresse par défaut est utilisée. Hors nous avons besoin de plusieurs capteurs afin de couvrir l'ensemble des faces des robots. Nous avons donc besoin d'un moyen pour accéder à chaque capteur indépendamment.

Deux solutions sont possibles :

Câblage des pins xSHUT

Câbler ces pins permettent de couper ou alimenter les capteurs grâce à un signal logique. En allumant chaque capteur un par un et en changeant leur adresse au fur et à mesure, nous obtenons un parc de capteurs allumés et configurés. Cette procédure est nécessaire à chaque démarrage de la carte.

Utilisation d'un multiplexeur I2C

Cette solution était utilisée précédemment. Elle fonctionnait, mais rendait le cablâge très fastidieux: chaque capteur devait être relié au multiplexeur. Aussi, les capteurs se mettaient parfois en défaut, il était alors nécessaire de couper leur alimentation afin de les réinitialiser. En utilisant les pins xSHUT, il est possible de les redémmarer facilement.

Cahier des charges

Participants

Prénom & Nom Filière
Errikos Messara IESE-5
Charles Blanchard IESE-6

Hardware

Version 1

Version 2

Conception basé sur un microcontrôleur STM32F405RGT6 et un émetteur-récepteur CAN SN65HVD230. La carte a la charge de la communication avec les capteurs ToF (10 max) et de la transmission via le réseau CAN, des données mesurées. Les tutoriels de Philip Salmony nous ont beaucoup aidé.

Figure 1 : ToF Module


Informations pratiques :

  • Vous pouvez retrouver le schéma complet de la carte et fichiers de layout sur le dépôt Git du club.
  • Alimentation :
    • Vin : 4,6-15 V (LDO AMS1117-3.3)
    • La carte est équipée d’un fusible monté en surface 500 mA de taille 1206, dont vous pouvez remplacer en cas de problème. L’entre dispose aussi d’un MOSFET de type P pour protéger le circuit en cas d’inversion de polarité.
  • Connecteurs :
    • Type JST-XH 2,5 mm
    • Le pinout des connecteurs capteurs est indiqué derrière et sur la carte. Pour les capteurs l’idée est d’utiliser de câbles préfabriques pour gagner du temps et en fiabilité.
  • La LED LD0 peut être utilisée pour debugger (Pin PA6). Veuillez consulter le schéma ou le fichier .ioc (CubeMX) pour plus d’informations sur la connectique des pattes du microcontrôleur.
  • CAN :
    • Le jumper à côté du connecteur CAN peut être utilisé pour connecter et déconnecter une résistance de 120 Ω de terminaison. Veuillez l’enlever si la carte ne se trouve pas aux extrémités du réseau.
    • Les LEDs CAN_TX et CAN_RX sont configures en logiciel pour indiquer la réception et l’envoie des données CAN
Figure 4 : SWD pinout
  • Programmation :
    • Le connecteur SWD (au-dessus de l’UART4) vous permet de programmer et debugger la carte via SWD (Serial Wire Debug)
    • Pour ce faire vous avez besoin d’un ST-LINK et d’un adapteur JTAG/SWD 1,27 mm 2x5 pin.
    • Pour la programmer :
    1. Alimenter pcb via une source extérieure (le ST-LINK ne suffit pas).
    2. Ensuite connecter le ST-LINK sur le connecteur SWD (pin 1 indiqué sur la figure 1. Le connecteur suit le pinout standard de la figure 4).
    3. Programmer avec CubeIDE en utilisant la configuration par défaut.

Firmware

Maintenance

Toolchain

La toolchain utilisée est celle proposée par STMicroelectronics: STM32CubeIDE. Elle est composée de STM32CubeMX, permettant de generer le code source à partir de la configuration du microcontroleur souhaitée, d'un environnement de developpement specialisé pour STM32 et d'un debuggeur.

Afin de ne pas creer d'incompatibilité, il est important d'utiliser les versions suivantes:

Module Version
STM32CubeIDE VX.X.X
STM32CubeMX VX.X.X
STM32CubeF4 Firmware Package VX.X.X

Comment compiler

  1. Récupérer le code source depuis le dépot Git.
  2. Se placer sur le tag voulu (en fonction de la version).
  3. Ouvrir STM32CubeIDE et compiler la configuration voulue (Debug ou Release).
  4. Flasher une carte connectée ou récupérer le binaire dans le dossier de la configuration pour une utilisation ultérieure.

Version 1