cegep-electronique-programmable / robot-balance-2023

Robot Balance, batterie 12V, WiFi et Bluetooth qui tient en équilibre sur deux roues.
2 stars 1 forks source link
12v balance battery bluetooth esp pcb pid robot stepper-motor wifi

Robot Balance 2023

Informations techniques du robot qui tient en équilibre sur deux roues.

Assemblage

Présentation

Le Robot Balance 2023 est une évolution du robot 2017. Les objectifs de la nouvelle version sont :

Aperçu du développement

Mécanique

La mécanique est développée dans Fusion 360 et elle est basée sur un cadre en extrusions d'aluminium. Les roues sont entrainées par des moteurs pas-à-pas de type NEMA-17.

robot-balance-nov-2023

Électronique

La carte électronique est développée dans Fusion 360 et elle est basée sur :

Firmware

Le firmware est développé à l'aide de l'outil PlatformIO. Nous utilisons le framework Arduino.

Le contrôle se fait à l'aide d'un contrôleur de type Proportionnel-Intégral-Dérivé (PID).

Description détaillée

Mécanique

Électronique

PCB Assemblé

Composants principaux

La carte est conçue avec les composants principaux suivants :

Alimentations

Pour fonctionner, le robot a besoin d'une alimention de 12VDC sur le terminal block. Le connecteur USB ne permet pas d'alimenter la carte. Il est seulement utilisé pour la programmation et la communication avec l'interface série.

Choix des broches du microcontrôleur

# Pin GPIO TYPE Mode Signal Commentaire
Pin 1 N/A P Alimentation GND
Pin 2 N/A P Alimentation 3V3
Pin 3 N/A I Contrôle RESET Enable
Pin 4 GPIO 36 I Bouton 1 B1
Pin 5 GPIO 39 I Bouton 2 B2
Pin 6 GPIO 34 I TP1 TP1
Pin 7 GPIO 35 I TP2 TP2
Pin 8 GPIO 32 I/O Enables des moteurs EN_MOTEURS
Pin 9 GPIO 33 I/O Contôle du moteur droit DIR_D
Pin 10 GPIO 25 I/O Contôle du moteur droit STEP_D
Pin 11 GPIO 26 I/O Contôle du moteur droit MS3_D
Pin 12 GPIO 27 I/O Contôle du moteur droit MS2_D
Pin 13 GPIO 14 I/O Contôle du moteur droit MS1_D
Pin 14 GPIO 12 I/O (Strap) Réservée Configuration de la tension d'alimentation
Pin 15 N/A P Alimentation GND
Pin 16 GPIO 13 I/O Contôle du moteur gauche MS3_G
Pin 17 GPIO 9 - Flash interne Ne pas réutiliser
Pin 18 GPIO 10 - Flash interne Ne pas réutiliser
Pin 19 GPIO 11 - Flash interne Ne pas réutiliser
Pin 20 GPIO 6 - Flash interne Ne pas réutiliser
Pin 21 GPIO 7 - Flash interne Ne pas réutiliser
Pin 22 GPIO 8 - Flash interne Ne pas réutiliser
Pin 23 GPIO 15 I/O (Strap) Contôle du moteur gauche MS2_G
Pin 24 GPIO 2 I/O (Strap) Contôle du moteur gauche MS1_G
Pin 25 GPIO 0 I/O (Strap) Démarrage BOOT Boot SPI ou Upload
Pin 26 GPIO 4 I/O data neopixel DATA_LED Sortie pour bus NeoPixels
Pin 27 GPIO 16 I/O Contôle du moteur gauche STEP_G
Pin 28 GPIO 17 I/O Contôle du moteur gauche DIR_G
Pin 29 GPIO 5 I/O (Strap) VSPI CS1 Chip Select 1 SPI
Pin 30 GPIO 18 I/O VSPI SCK Horloge SPI
Pin 31 GPIO 19 I/O VSPI MISO Entrée SPI
Pin 32 N/A - NC Aucun Non connectée
Pin 33 GPIO 21 I/O I2C I2C_SDA Signal de données I2C
Pin 34 GPIO 3 I/O UART RXD0 Broche de reception
Pin 35 GPIO 1 I/O UART TXD0 Broche d'émission
Pin 36 GPIO 22 I/O I2C I2C_SCL Signal d'horloge I2C
Pin 37 GPIO 23 I/O VSPI MOSI Sortie SPI
Pin 38 N/A P Alimentation GND
Pin 39 N/A THERMAL PAD Alimentation GND

Guide pour le PCB Layout

PCB à 4 couches : Couche Signaux
1 Traces et composants
2 Plan de ground GND
3 Alimentations
4 Traces de signaux et d'alimentations (pas de composant si possible)

Garder 15 mm d'espaces sur les 3 côtés de l'antenne.

Microgiciel (Firmware)

Numéros de broches

Les numéros de broches sont configurés dans le fichier board_mapping.h.

UART

Pensez à assigner les bons numéros de broches :

Serial.setPins(GPIO_UART_TX, GPIO_UART_RX);
Serial.begin(115200);

Dans le fichier platformio.ini, utiliser la configuration suivante pour empêcher un Reset à l'ouverture du terminal :

monitor_rts = 0
monitor_dtr = 0

Documentation Espressif Universal Asynchronous Receiver/Transmitter (UART)

I2C

Pensez à assigner les bons numéros de broches :

Wire.begin(GPIO_I2C_SDA, GPIO_I2C_SCL);

Documentation Espressif Inter-Integrated Circuit (I2C)

Adresses par défaut
Composant Adresse
CMPS12 0x60
MCX6655 0x15

SPI

La carte utilise le bus SPI2 (HSPI). Pensez à assigner les bons numéros de broches :

SPI.begin(GPIO_VPSI_SCK, GPIO_VPSI_MISO, GPIO_VPSI_MOSI, GPIO_VPSI_CS1);

SPI 0 et 1 sont utilisés à l'interne du module.

Documentation Espressif SPI Master Driver

Références :