
Capteur couleur
Groupe-Projet-ESE/BeerRobot
Chelsea COMLAN - Alix HAVRET - Loïcia KOEHL - Quentin SIMON

Chelsea COMLAN - Alix HAVRET - Loïcia KOEHL - Quentin SIMON
Projet robot ESE is an open-source printed circuit board by Groupe-Projet-ESE, from the Groupe-Projet-ESE/BeerRobot repository on GitHub. It is a 4-layer board of 110 × 50 mm with 68 parts on 92 nets, routed with 513 tracks and 87 vias.
It is built around the STM32G070RBT6 and ZXBM5210-S. Its parts include 17 capacitors, 13 connectors, 11 resistors, 5 ICs and 3 diodes. It belongs with the robots and motor control boards and the STM32 boards of this library.
Last update of README : 23/01/2023

Elèves en option ESE (Electronique et Systèmes Embarqués) au sein de l'ENSEA (Ecole Nationale Supérieures de l'Electronique et de ses Applications), réalisant un robot comme projet central de leur option.
Le but du projet est de créer un robot permettant d'attraper des canettes, de relever la couleur de cette dernière, se déplacer avec la canette attrapée et la déposer dans la zone adaptée selon sa couleur. Par ailleurs le robot devra se repérer sur une table afin de ne pas tomber.
Microcontroleur : STM32G070RBT6 (Farnell : 3365377)
Quartz 16 MHz : (Farnell : 2853935)
Connecteur SWD/STLink : (Farnell : 3226055)
Driver moteur : ZXBM5210-S (Farnell : 3935372)
Moteurs : DfRobot FIT0520 ou FIT0521
Régulateur 5V : AZ1117CH2-5.0TRG1 (Farnell : 3942512)
Régulateur 3.3V : MIC5317-3.3YM5 (Farnell : 2920683)
Batterie NIMH 7.2V 1.3Ah (RS : 777-0377)
Capteur bordure : Sharp GP2Y0D805Z0F (Generationrobots : A-000000-00046)
Capteur TOF : VL53L0X (Generationrobots : A-000000-03233)
Capteur de couleur : VEML3328 (Farnell : 3517203)
Servomoteur : XL320 (Generationrobots : A-000000-01282)
Connecteurs JST 2.54mm

Le groupe de projet est constitué de 4 membres, chacun ayant divers responsabilités.
Encadrants du projet : Mr Fiack , Mr Tauvel
Intervenants extérieur : Mme Quittel, Mr Jauffrey, Mr Le Bidan
La démonstration finale se trouve sur la master.
Contient l'ensemble des images necessaire à la rédaction de ce README, le rapport de mi-projet rédigé en novembre ainsi que le diaporama de notre présentation du robot en décembre.
Contient le projet Kicad avec l'ensemble des fichiers electronique ainsi que le fichier de routage du PCB.
Le PCB a été produit à l'extérieur de l'ENSEA.
Contient les codes "annexes", c'est à dire les codes des composants testé sur le STM32F746NG.
Le projet CubeIDE a destination de la STM32G0 (notre microcontroleur de projet) se trouve sur la master.
Contient certains fichiers 3D pour la réalisation du robot
Au debut du projet nous avons eu la liste de l'ensemble des composants auxquels nous avions accès pour la réalisation du robot et afin de remplir ses divers fonctionnalités.
Le schéma architectural au début du projet nous a permit de définir l'ensemble des entrées necessaires dans notre microcontroleur et les divers flux de données qui allaient entrer en jeu.

Deux Moteurs à courant continu, alimenté en xx V, permettant de faire tourner 2 roues. Le moteur a également un encodeur.
Servomoteur qui permettra de faire bouger la pince necessaire pour saisir les canettes.
Capteur permettant de detecter la couleur de la canette à l'aide de filtres superposés à des LEDS.
Capteur infra-rouge qui détecte si il y a un object en face de lui.
Time Of Flight, renvoie le temps qu'a prit la source lumineuse du capteur pour rebondir sur un object et revenir. Cela nous permet d'avoir notre distance par rapport à un objet. (en mm)
Nous avons prit la décision de modifier le design initial du robot sur onshape.
Ajout d'un roulement en plus à l'avant, modification de l'emplacement de la pince et la forme de celle ci. Une fois le PCB reçu, des modifications ont été effectuées afin de permettre un bon placement de l'ensemble des fils.
Par ailleurs nous avons aménagés divers emplacements pour les différents capteurs : couleurs, bordure et distance.
A partir du schema architectural réalisé au début du projet, nous avons commencé le schéma électrique du projet sur Kicad.
Ce dernier a été séparé en plusieurs feuilles afin de pouvoir organiser les différentes partie : STM32, alimentation, capteurs, moteurs, servomoteur.
09/11/2022 Reception du PCB
Soudeurs : Loïcia et Chelsea
L'ensemble des soudures ont été réalisées à la main, lee 25/11/2022 l'ensemble des composants étaient soudés sur la carte.
Nous avons soudés les connecteurs au fur et à mesure de la réalisation des tests.
Le code sera utilisé dans diverses tâches (utilisation de FreeRTOS). Chaque état décrit dans le diagramme à états correspondra à une tâche.
Une tâche pourra faire appel à de la donnée, ou en consommer. Dans chaque tâche nous feront appel à divers bouts de code permettant de démarrer un capteur, un moteur, un servo, etc ...
Pour effectuer nos tests sur les capteurs, nous avons implémentés un shell. Chacun des capteurs ont été validé sur la STM32F746NG, et ensuite leur code était intégré à la STM32G0. La shell nous a permit de faire une première démonstration.
Après les premiers tests, nous avons remarqué que pour une même commande vitesse, les 2 roues ne tournaient pas à la même vitesse, de ce fait le robot n'allait pas droit. Afin de régler ce problème il était nécessaire de mettre en place un asservissement.
Nous avons décidé de faire un correcteur PI (Proportionnel Intégral).
schéma
Pour cela il nous fallait donc récupérer des informations venant du robot et du microcontroleur :
Ces infos nous permettaient alors de créer le correcteur PI avec :
Une fois avoir réussi à récupérer la valeur de la vitesse en entrée et le nombre de tick nous avons pu commencer à coder l’asservissement.
Pour ce faire il fallait que l’on fasse la différence de valeur entre la valeur actuelle et la valeur précédente de vitesse. Par la suite, nous pouvions calculer l’erreur entre la valeur d’entrée et la vitesse du robot pour voir si il avançait à la vitesse souhaitée.
Une fois toutes la valeurs et calculs mis en place, nous avons pu commencer la recherche des valeurs pour nos coefficients. Il fallait trouver les valeurs avec lesquelles il y avait le moins d’oscillation possible.
Le capteur TOF a un driver déja créé, ce qui nous a permit de réutiliser les fonctions déja existantes permettant l'initialisation du capteur, et la récupération des valeurs .L'activation de la pin GPIO nous permet d'acquérir les valeurs en continue tant que le TOF est actif.
Lorsque que l'on veut utiliser 2 TOF, c'est la pin XSHUT qui rentre en jeux. Les 2 TOF étant sur le même I2C, on activera uniquement le TOF du capteur que l'on veut utiliser.
Non fonctionnel.
Objectif de la présentation finale :
La démo implémentée et téléchargée sur la master permet au robot de faire une première phase de démarrage, de se lancer en mode "recherche" canette. Une fois une canette repérée à une certaine distance, le robot continue sa recherche vers la zone où il a capté une canette. Une fois que la canette est captée dans le creue du robot, alors la pince est déclenchée en mode fermeture.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm | JP201, JP202, JP501, JP502, JP503, JP504, JP505, JP506, JP507, JP508, JP509, JP510 |
| 4 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C201, C202, C204, C510 |
| 4 | 1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C503, C504, C505, C507 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H101, H102, H103, H104 |
| 3 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R301, R302, R502 |
| 3 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C501, C506, C508 |
| 3 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R202, R203, R501 |
| 2 | 100uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C509, C511 |
| 2 | 10pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C205, C206 |
| 2 | NC | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R303, R304 |
| 2 | ZXBM5210-S | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U503, U504 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R401 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R201 |
| 1 | 16MHz | Crystal:Crystal_SMD_EuroQuartz_MT-4Pin_3.2x2.5mm | Y201 |
| 1 | 22uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C502 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C203 |
| 1 | 62k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R402 |
| 1 | AZ1117-5.0 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U501 |
| 1 | Conn_02x07_Odd_Even | Connector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMD | J208 |
| 1 | GREEN | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D201 |
| 1 | JST_Bordure_1 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J201 |
| 1 | JST_Bordure_2 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J204 |
| 1 | JST_Couleur_1A | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J205 |
| 1 | JST_Couleur_1B | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J207 |
| 1 | JST_Couleur_3V | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J206 |
| 1 | JST_SUPP | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J209 |
| 1 | JST_TOF_1 | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J202 |
| 1 | JST_TOF_2 | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J203 |
| 1 | JST_driver1 | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J502 |
| 1 | JST_driver2 | Connector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical | J503 |
| 1 | JST_servomoteur | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J504 |
| 1 | JST_switch | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J501 |
| 1 | LED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D501 |
| 1 | LOGO | Logo_ENSEA:Vrai_logo | G*** |
| 1 | MCP1802x-xx02xOT | Package_TO_SOT_SMD:SOT-23-5 | U502 |
| 1 | RED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D202 |
| 1 | STM32G070RBT6 | Package_QFP:LQFP-64_10x10mm_P0.5mm | U201 |
| 1 | SW_SPDT | switch_robot:switch_pcb_robot | SW501 |

Groupe-Projet-ESE/BeerRobot
Chelsea COMLAN - Alix HAVRET - Loïcia KOEHL - Quentin SIMON

Artpel1805/Beerator
Le but du projet est de réaliser intégralement un robot capable de se déplacer, de chercher et d’attraper une canette (de bière ? 😶), relever sa couleur, puis de la déposer dans la zone de couleur correspondante.


Lazorme/Ludz-le-chat
The Lidar and motor drivers are in drvLIDAR and drvMotor, respectively.

BruceZhq/kicad-design-multi-agent-system
Auditable KiCad hardware design with LangGraph multi-agent orchestration, Temporal workflows and deterministic evidence gates.

LirokWid/ESE_BMMPE_chat_souris
Ce project a pour but de développer un robot qui joue à chat avec d'autres robots, il embarque un PCB custom avec un STM32G070. Le projet est développé avec freeRTOS.

RiddheshVeling/Industrial-Flowmeter-Totalizer-with-Modbus-based-HMI-and-Data-Logging
EXTC Final year project: Industrial flowmeter totalizer with Modbus-based HMI for real-time monitoring and data logging using STM32 and RS485.


It measures 110 × 50 mm and has 4 copper layers, 4.69 mm thick.
68 parts, built around the STM32G070RBT6 and ZXBM5210-S. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Groupe-Projet-ESE/BeerRobot repository on GitHub, at the commit this page was made from: the board is Hardware/Projet_robot_ESE/Projet_robot_ESE.kicad_pcb and its schematic Hardware/Capteur_couleur/Capteur_couleur.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Groupe-Projet-ESE before reusing the design.