Skip to the content
PCBKitNew board
4 layers90 × 72 mmRobot, the printed circuit board in 3D

robot chat

Size
90 × 72 mm
Copper layers
4
Thickness
1.6 mm
Parts
62
Nets
88
Pads
266
Tracks, vias
430, 89
Pours
4
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
18 Sep 2023
Updated
17 Jan 2024

Overview

Robot is an open-source printed circuit board by Dorian12000, from the Dorian12000/Projet repository on GitHub. It is a 4-layer board of 90 × 72 mm with 62 parts on 88 nets, routed with 430 tracks and 89 vias.

It is built around the ZXBM5210-SP, MP1475DJ-LF-P and 1N4148WS. Its parts include 22 capacitors, 11 resistors, 11 connectors, 5 ICs and 4 diodes. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

3

README

README.md
robot chat

Robot Chat et Souris

Ce projet consiste à créer un robot capable de jouer au jeu du chat et de la souris. Le robot est équipé de plusieurs fonctionnalités clés, notamment le contrôle de mouvement à l'aide de moteurs à courant continu (MCC), la localisation avec un Lidar YD X4, la détection du vide à l'aide de capteurs de bordure et le changement d'état ( Souris , Chat) grâce aux bumpers.

Schéma Fonctionnel :

https://miro.com/app/dashboard/ schéma fonctionnel

Fonctionnalités principales

  1. Contrôle de Mouvement (MCC) :

    • Le robot est capable de se déplacer dans son environnement grâce à des moteurs à courant continu.
  2. Localisation avec Lidar X4 :

    • Utilisation du Lidar X4 pour permettre au robot de s'orienter et de se repérer dans son environnement.
  3. Détection du Vide avec Capteurs de Bordure et Changement d'état :

    • Les capteurs de bordure sont utilisés pour détecter les zones sans sol, afin d'empêcher le robot de tomber.
    • Changement d'états (Souris, Chat) grâce aux bumpers : Utilisation de bumpers placés sur chaque côté du robot. Lorsqu'un des bumpers est touché, on change l'état du robot.

Utilisation

  1. Exécution du Programme :

    • Pour démarrer le robot, exécutez le programme principal. Assurez-vous que toutes les dépendances sont installées et que le robot est correctement alimenté. Le robot démarre en mode Souris.
  2. Interface Utilisateur :

    • Pour connaître les événements enregistrés par le robot, veuillez connecter une ST-link entre le robot et votre ordinateur, puis ouvrir une console (TeraTerm, Putty, ...) configurée en 115200 bauds.
    • Trois LEDs sont présentes sur le robot pour indiquer son état en temps réel :
      • Led verte :
        • allumée : état chat
        • éteinte : état souris
      • Led orange : changement d'état pour chaque détection de bordure.
      • Led rouge : le robot a rencontré un problème et doit être redémarré.

Pilote Lidar pour système robotique

  1. Introduction :

Le pilote Lidar consiste en l'intégration d'un lidar dans un système robotique tel que notre robot. Le lidar est utilisé pour la détection d'obstacles, la cartographie de l'environnement et la localisation des autres robots dans la zone d'opération. Ce document fournit des informations sur les fichiers principaux du projet, y compris les fichiers drv_lidar.c, LidarTask.c, et la création de la tâche Lidar.

  1. Contenu des fichiers :

    drv_lidar.c

    Le fichier drv_lidar.c contient le code source pour le pilote du lidar. Il comprend les fonctionnalités suivantes :

    • Initialisation du Lidar : La fonction LidarInit initialise le lidar en configurant la communication UART, en créant un sémaphore pour la synchronisation des lectures UART, et en activant le l'échantillonage du lidar et son moteur.

    • Communication UART : Le fichier utilise la communication UART avec le mécanisme DMA pour une transmission et réception de données efficace et non bloquante.

    • Commandes Lidar : Les fonctions LidarScanStart et LidarScanStop envoient respectivement les commandes de démarrage et d'arrêt du scan au lidar.

    • Traitement des données : Les fonctions getLidarScanData, checkCS et convertSample sont responsables de la réception, de la vérification de la somme de contrôle et de la conversion des données de scan du lidar.

    • Analyse des données Lidar : La fonction whereIsNearestRobot analyse les données du lidar pour déterminer la position du robot le plus proche.

    • Gestion des erreurs : La fonction LidarHealthStatus permet d'obtenir le statut de santé du lidar et de gérer les erreurs éventuelles.

    • Autres fonctionnalités : Le fichier contient également des fonctions pour définir la vitesse du lidar, obtenir des informations sur le lidar et redémarrer le lidar.

    LidarTask.c

    Le fichier LidarTask.c contient la définition de la tâche Lidar. Il gère les états de la tâche, notamment l'initialisation du lidar, le scan, le traitement des données et le mode veille.

    • États de la tâche : Les états comprennent l'initialisation (LIDAR_INIT), le scan (LIDAR_SCANNING) et le mode veille (LIDAR_STANDBY).

    • Initialisation : La tâche commence par initialiser le lidar, récupérer des informations sur le lidar afin d'assurer son bon fonctionnement, puis passer à l'état de scan.

    • Scan Lidar : Dans cet état, la tâche démarre le scan du lidar, reçoit les données de scan, les traite et effectue des actions en fonction de l'état principal du système (CAT ou MOUSE).

    • Mode veille : Un état futur pour le mode veille est également prévu mais n'est pas encore implémenté.

    • Gestion des erreurs : En cas d'erreur lors du scan, la tâche passe à l'état d'erreur pour gérer la situation.

  2. Utilisation du code :

    • Création de la tâche Lidar : La fonction createLidarTask dans LidarTask.c crée la tâche Lidar en utilisant FreeRTOS. Elle définit la profondeur de la pile et la priorité de la tâche.

    • Configuration du Lidar : Le fichier drv_lidar.c comprend des fonctions pour l'initialisation du lidar, la configuration de la vitesse du moteur, le démarrage et l'arrêt du scan, l'obtention d'informations, la récupération des données de scan, etc.

    • Gestion des états : La tâche Lidar gère différents états, tels que l'initialisation, le scan et la veille. Ces états sont définis dans LidarTask.c et peuvent être étendus selon les besoins.

    • Analyse des données : La fonction whereIsNearestRobot analyse les données du lidar pour déterminer la position du robot le plus proche. Cette fonction peut être adaptée en fonction des exigences spécifiques du projet.

  3. Remarques :

    • Le pilote du lidar est conçu pour fonctionner avec FreeRTOS. Assurez-vous que votre projet est configuré pour utiliser FreeRTOS.

    • La communication avec le lidar utilise le DMA pour une transmission et une réception de données efficaces et non bloquantes via UART.

    • La fonction principale de la tâche Lidar est gérée par la fonction lidarTask(), qui comprend une machine d'états pour gérer les différents états du lidar.

    • La tâche Lidar s'exécute en boucle continue, surveillant et gérant l'état du dispositif lidar.

    • Des types de données personnalisés et des macros de journalisation sont définis dans types.h et logger.h, respectivement.

Organisation des tâches

Pour organiser nos tâches liées aux différentes fonctions du Lidar et des moteurs, nous avons crée une tache principale avec une priorité élevée ( code source dans mainTask.c). Cette tâche est divisé en plusieurs états :

  • Main Init : Initialisation des tâches de démarrage du Lidar, des moteurs et de l'asservissement.
  • ERROR : Gestion d'erreur
  • Mouse : Test de l'état avec une Led
  • CAT : Test de l'état avec une Led ( Pour l'état CAT/MOUSE, des notifications sont générées lorsque les bumpers sont appuyés)

Chaque état implique l'appels des tâches et des fonctions nécessaires. Un timer est configuré pour suivre l'état actuel du robot.

Contrôle moteur et asservissement en vitesse

Les deux MCC sont controlés par des pwm et asservis en vitesse par un correcteur proportionnel dans une tâche.

  1. Driver de moteur :

    Les fichiers moteur_drv.c/.h contiennent les fonctions permettant de commander la vitesse ainsi que les directions des moteurs et de générer les pwm en conséquence. Ils prévoient aussi le calcul de la vitesse des moteurs et la lecture des encodeurs.

  2. Conversion de la position visée en commande de vitesse pour les moteurs :

    Cette tâche reçoit une structure comprenant la position (angle et distance) à laquelle doit se rendre le robot. Ces données sont interprétées pour générer une commande (vitesse et sens de rotation) pour chaque moteur. La commande est ensuite utilisée pour l'asservissement en vitesse.

  3. Asservissement en vitesse :

    La boucle d'asservissement en vitesse se fait toutes les 500 ms et comprend :

    • Récupération de la commande en vitesse en fonction de la position visée.
    • La lecture des encodeurs.
    • Le calcul de l'erreur entre la mesure et la commande en vitesse.
    • Le calcul de la nouvelle commande en vitesse par le correcteur proportionnel.
    • Transmission de la nouvelle commande de vitesse pour générer les pwm.

Parts

62
QtyValueFootprintReferences
4100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC201, C202, C205, C206
410nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC303, C304, C307, C308
41uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC301, C305, C405, C406
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3_Pad_ViaH201, H202, H203, H204
31kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR201, R202, R203
322uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC402, C404, C407
2100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR401, R402
210pFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC203, C204
210uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC302, C306
2ZXBM5210-SPPackage_SO:Diodes_SO-8EPU303, U304
10.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC401
1100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC403
110kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR408
112kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR407
113kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR406
116MCrystal:Crystal_SMD_EuroQuartz_MT-4Pin_3.2x2.5mmY201
116kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR404
11N4148WSDiode_SMD:D_SOD-323D402
120Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR403
14.7uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC207
14.7uHInductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolderL401
140.2kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR405
1472121010111472121010111:472121010111S401
1BUMPER_BConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ207
1BUMPER_FConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ206
1BUMPER_LConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ209
1BUMPER_RConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ208
1Conn_02x07_Odd_EvenConnector_PinHeader_1.27mm:PinHeader_2x07_P1.27mm_Vertical_SMDJ210
1Conn_BATConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ401
1LED BLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD203
1LED GLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD201
1LED RLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD202
1LIDARConnector_JST:JST_XH_B8B-XH-A_1x08_P2.50mm_VerticalJ204
1LOGOLOGOG***
1MIC5317Package_TO_SOT_SMD:SOT-23-5U402
1MP1475DJ-LF-PMP1475:MP1475DJ-LF-PU401
1Motor_LConnector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_VerticalJ201
1Motor_RConnector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_VerticalJ205
1STM32G070RBTxPackage_QFP:LQFP-64_10x10mm_P0.5mmU201
1SW_PushButton_Switch_SMD:SW_SPST_B3U-1000PSW202
1bordure_FConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ211
1bordure_RConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ202

Questions

How big is the Robot PCB?

It measures 90 × 72 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Robot use?

62 parts, built around the ZXBM5210-SP, MP1475DJ-LF-P and 1N4148WS. 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.

Where can I download the Robot KiCad files?

From the Dorian12000/Projet repository on GitHub, at the commit this page was made from: the board is PCB/robot.kicad_pcb and its schematic PCB/STM32.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Robot design in my own project?

Its repository states no licence, so its author keeps all rights: ask Dorian12000 before reusing the design.

Similar boards

  • 4 layers54.1 × 57 mmProjet Robot, the printed circuit board in 3D

    Projet Robot

    ezer-soltani/HellKitty-Autonomous-Robot

    Professional firmware and hardware design for an autonomous mobile robot using STM32G431 and FreeRTOS. Features Lidar perception, ToF safety algorithms, and PID motor control.

    88 partsMIT
  • 8 layers45 × 45 mmPCB Projet ESE v2, the printed circuit board in 3D

    PCB Projet ESE v2

    FernandesVincent/Projet-ESE-chat-robot

    Création d'un robot jouant à chat.

    218 parts
  • 4 layers54 × 57 mmStealthKitty.kicad pro, the printed circuit board in 3D

    StealthKitty.kicad pro

    flexdrt/2425_ESE_Projet_StealthKitty

    Ce projet est réalisé dans le cadre de la dernière année de la filière électronique et systèmes embarqués (ESE) de l'ENSEA.

    82 parts
  • 4 layers90 × 72 mmRobot chat, the printed circuit board in 3D

    Robot chat

    HOSTEER/ESE2024

    Activer doxygen dans les propriétés du projet -> général C/C++, tuto doxygen https://www.youtube.com/watch?v=GC9Xy7nLxyw

    112 parts
  • 4 layers90 × 70 mmKyttiludzinator, the printed circuit board in 3D

    Kyttiludzinator

    Lazorme/Ludz-le-chat

    The Lidar and motor drivers are in drvLIDAR and drvMotor, respectively.

    116 parts
  • 4 layers212.5 × 152.5 mmGaussSpeedway, the printed circuit board in 3D

    GaussSpeedway

    mcbridejc/GaussSpeedway

    PCB design for the Gauss Speedway. Designed in Kicad 6.

    48 parts36
  • 4 layers54 × 57 mmTagBot, the printed circuit board in 3D

    TagBot

    exysta/2425_ESE_Projet_TagBot

    Vous vous trouvez actuellement dans le projet TagBot (ou robot chat), qui s'intègre à un projet de classe où chaque équipe doit concevoir un robot.

    87 parts3MIT
  • 4 layers57 × 54 mmPojet V NOM KiCAD, the printed circuit board in 3D

    Pojet V NOM KiCAD

    MohamedBenabdelhadi/2425_ESE_Projet_V-NOM

    Mohamed Benabdelhadi_Nouhaila Faris_Oliver Belliard_Valerian Priou

    78 parts2