Informations techniques du robot qui tient en équilibre sur deux roues.
Le Robot Balance 2023 est une évolution du robot 2017. Les objectifs de la nouvelle version sont :
- Enlever les fils d'alimentation : Le robot est maintenant alimenté par une batterie 12V.
- Surélever le centre de gravité pour améliorer le contrôle. La batterie est située en haut du robot.
- Pouvoir commander et observer le robot sans fils : La carte LPC1768 est remplacée par une carte à base de ESP32 (Wifi & Bluetooth).
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.
La carte électronique est développée dans Fusion 360 et elle est basée sur :
- Un microcontrôleur ESP32-WROOM-32.
- Deux commandes moteur Polulu A4988.
- Un capteur MXC6655.
- Un capteur CMPS12.
- Des régulateurs d'alimentation AP63205 et AP2112K.
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).
- Section à compléter
La carte est conçue avec les composants principaux suivants :
- 1 x Microcontrôleur ESP32-WROOM
- 2 x Driver de stepper motor Polulu A4988
- 1 x Accéleromètre, inclinomètre et magnétomètre combiné CMPS12
- 1 x Accéleromètre MXC6655
- 2 x Boutons utilisateurs
- 5 x DEL utilisateur RGB en série
- 2 x Connecteur I2C
- 1 x Connecteur SPI
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.
# 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 |
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.
Les numéros de broches sont configurés dans le fichier board_mapping.h
.
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)
Pensez à assigner les bons numéros de broches :
Wire.begin(GPIO_I2C_SDA, GPIO_I2C_SCL);
Documentation Espressif Inter-Integrated Circuit (I2C)
Composant | Adresse |
---|---|
CMPS12 | 0x60 |
MCX6655 | 0x15 |
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.