Giter VIP home page Giter VIP logo

robot-balance-2023's Introduction

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 :

  • 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).

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 :

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

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

  • Section à compléter

Électronique

PCB Assemblé

Composants principaux

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

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 :

robot-balance-2023's People

Contributors

julienboriasse avatar max848484 avatar phil9347 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

xalexberserkerx

robot-balance-2023's Issues

retirer les composants "inutiles"

composants à vérifier la nécessisté:
R12 (résistance mise en cas de problème avec les strapping pins, mais pas de problèmes rencontrés)
R16 (résistance mise en cas de problème avec les strapping pins, mais pas de problèmes rencontrés)
R9 (pull up 10k sur ROSC des A4988, on a mis la 0 ohm)
R19 (pull up 10k sur ROSC des A4988, on a mis la 0 ohm)
R6 (pull down sur enable moteurs, qui n'était pas soudé lors des tests initiaux des drivers)

Get started

Créer un section get started avec les étapes pour programmer le robot et pour démarrer le programme

changer le footprint de J1 sur le board V3.1

le footprint qui avait été changé n'était pas le footprint qui était sur le PCB. Il faut mettre le bon footprint, le bornier doit être limé pour pouvoir rentrer dans les trous

Com port standard

Ajouter dans le readme qu'il faut configurer le Com port standard

personalisation de robot

Faire que lorsqu'un robot fini de se connecter au WIFI, les neopixel allument de la couleur du robot et non juste bleu. Bonne chance :)

Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.

Erreur à investiguer, le microcontrôleur redémarre après quelques secondes.

Exemple 1

Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x40085038  PS      : 0x00050331  A0      : 0x800811e9  A1      : 0x3ffbef3c
A2      : 0x00000010  A3      : 0x00018010  A4      : 0x000637ff  A5      : 0x3ffbef1c
A6      : 0x00000008  A7      : 0x3ffbdc94  A8      : 0x00000000  A9      : 0x00000000  
A10     : 0x0000464f  A11     : 0x3ffbd3c0  A12     : 0x80081c71  A13     : 0x3ffbeefc  
A14     : 0x3ffc18c8  A15     : 0xfffffbff  SAR     : 0x00000007  EXCCAUSE: 0x0000001c
EXCVADDR: 0x800811f5  LBEG    : 0x40084b65  LEND    : 0x40084b6d  LCOUNT  : 0x00000027  


Backtrace:0x40085035:0x3ffbef3c |<-CORRUPTED




ELF file SHA256: 0000000000000000

Quelques secondes plus tard.

Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x40085038  PS      : 0x00050331  A0      : 0x800811e9  A1      : 0x3ffbef3c  
A2      : 0x00000010  A3      : 0x00018010  A4      : 0x000637ff  A5      : 0x3ffbef1c  
A6      : 0x00000008  A7      : 0x3ffbdc94  A8      : 0x00000000  A9      : 0x00000000
A10     : 0x0000464f  A11     : 0x80000001  A12     : 0x80081c71  A13     : 0x3ffbeefc  
A14     : 0x3ffc18c8  A15     : 0xfffffbff  SAR     : 0x00000007  EXCCAUSE: 0x0000001c
EXCVADDR: 0x800811f5  LBEG    : 0x40084b65  LEND    : 0x40084b6d  LCOUNT  : 0x00000027  


Backtrace:0x40085035:0x3ffbef3c |<-CORRUPTED




ELF file SHA256: 0000000000000000

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13160
load:0x40080400,len:3036
entry 0x400805e4

Connecteur USB vertical

Cela empêcherait d'arracher le connecteur si le robot tombe alors que le câble USB est connecté.

Liste de améliorations matérielles potentielles identifiées dans la V2

  • Lecture de l'état de la batterie en pourcentage. Simple lecture de tension ADC ?
  • Les boutons sont trop proches du bord et s'arrachent facilement.
  • Les DEL sont trop proches du bord et peuvent s'arracher.
  • Le connecteur USB est encore un peu fragile. Version traversante ?
  • Vérfier la polarité de tous les condensateurs. Risque d'explosion.
  • Les pneus manquent d'adhérence sur certaines surfaces.
  • L'I2C et le SPI n'ont pas été testés fonctionnellement.
  • Prévoit un système de "bumper" en cas de chute.
  • Prévoir un mode horizontal dans lequel le robot roule sur 3 roues ou plus.
  • Prévoir des encodeurs sur le moteurs dans le cas ou les moteurs manquent des Step.
  • Identifier les broches 1 sur les footprint.
  • Pour faciliter bring up, ajouter un test point sur une des sortie du mcu facilement controlable.
  • Les "ports" qui permettent de lier un net sans ajouter de fil au niveau des schémas ont tous le même direction...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.