--- title: "GYTCARS" date: "22-06-2022" link: "https://hackmd.io/dMhq-pxMQLazBCCbcVoKvw" tags: EVOLUTEK --- # GYTCARS ## Introduction Ce projet a pour but de transformer une voiture RC acheté sur Aliexpress en plateforme robotique incorporant unez Raspberry Pi Zero. Cette plateforme sera utilisée pour : - Des ateliers pilotage - Des workshop roboique - Des tps au sein d'Evolutel Cette plateforme a pour but d'être répliquée facilement avec des composants pas trop cher. ## BOM * [Voiture](https://fr.aliexpress.com/item/4000219330538.html) * [Batterie 2S](https://hobbyking.com/fr_fr/turnigy-nano-tech-500mah-2s-25c-lipo-pack-w-xt30.html) * [Caméra](https://www.amazon.fr/gp/product/B01ER2SKFS) * [Nappe caméra](https://www.amazon.fr/gp/product/B079H41LSY) * [Sonar](https://www.amazon.fr/gp/product/B06XSJPVW9) * [Manette](https://www.amazon.fr/gp/product/B0882V8R74) * [Dongle USB](https://www.amazon.fr/gp/product/B01FPZGCUQ) * [Led Ring](https://www.amazon.fr/gp/product/B08GLY7ZV4) ## Mécanique FIXME ## Electronique ### Architecture L'architecture de cette plateforme se divise en deux parties : * Une partie bas niveau en charge de tout le hardware de la plateforme commandée par un microcontrôleur * Une partie haut niveau en charge du traitement de la caméra et de la prise de décision assurée par une Raspberry Pi Zero ### Carte ![](https://i.imgur.com/3ScpRrA.png) ## Informatique ### Protocole GYT Les trames du protocole GYT respectent ce format : | Start flag | Command | Size | Data | | ------------- | ------- | ------ | ------- | | 1 byte (0x42) | 1 byte | 1 byte | x bytes | #### Commandes possibles * 0x00 : Reset * 0x01 : Init * 0x02 : Ping * 0x03 : Set propulsion speed * 0x04 : Set direction angle * 0x05 : Set color * 0x06 : Set max speed * 0x07 : Get battery voltage ##### Reset * Command : 0x00 * Size : 0x0 Cette commande permet de demander à l'Arduino de se reset toute seule. ##### Init * Command : 0x01 * Size : 0x04 * Data : | Color R | Color G | Color B | Max speed | | ------- | ------- | ------- | --------- | | 1 byte | 1 byte | 1 byte | 1 byte | > Color (R, G ou B) = [0, 255] > Max speed = [0, 100] Cette commande permet de setup la voiture. L'Arduino répondra avec une frame comme ci-suit : * Command : 0x01 * Size : 0x0 ##### Ping * Command : 0x02 * Size : 0x00 Cette commande permet de ping l'Arduino pour qu'elle ne reset pas toute seule. ##### Set propulsion speed * Command : 0x03 * Size : 0x01 * Data : | Reverse | Speed | | ------- | ------ | | 1 bit | 7 bits | > Speed = [0, 100] Cette commande permet de pouvoir modifier la vitesse de propulsion de la voiture. ##### Set direction angle * Command : 0x04 * Size : 0x01 * Data : | Angle | | ------ | | 1 byte | > Angle = [0, 2] Avec Angle : * 0x00 : center * 0x01 : left * 0x02 : right Cette commande permet de pouvoir modifier l'angle de la direction de la voiture. ##### Set color * Command : 0x05 * Size : 0x03 * Data : | Color R | Color G | Color B | | ------- | ------- | ------- | | 1 byte | 1 byte | 1 byte | > Color (R, G ou B) = [0, 255] Cette commande permet de changer la couleur de la voiture. #### Set max speed * Command : 0x06 * Size : 0x01 * Data : | Max speed | | --------- | | 1 byte | > Max speed = [0, 100] Cette commande permet de changer la vitesse max de la voiture. #### Get battery voltage * Command : 0x07 * Size : 0x00 Cette commande permet de récupérer la tenstion de la batterie. L'Arduino répondra avec ce format de trame : * Command : 0x07 * Size : 0x01 * Data : | Voltage | | ------- | | 1 byte | > Voltage = [0, 200] La tension de la batterie sera égale à Voltage / 10. ### Firmware Arduino ### Code Raspberry Pi ## Liens utiles * [Pont en H](https://toshiba.semicon-storage.com/eu/semiconductor/product/motor-driver-ics/brushed-dc-motor-driver-ics/detail.TB67H451FNG.html) * [Logic converter](https://learn.sparkfun.com/tutorials/bi-directional-logic-level-converter-hookup-guide/all) ## Backlog * Passage sur STM32 / ESP32 * Mise à jour du firmware bas niveau par la raspy * Led ring pour distinguer la voiture * Switch de mode * Mode chat * IMU * Block batterie