---
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

## 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