ELEGOO 4 Roues sous MicroPython avec Raspberry-Pi Pico
Bonjour à tous,
Nous avons reçu une demande de l'école de l'institut Saint-Anne de Gosselie (ISA) pour convertir des véhicules ELEGOO 4 roues à MicroPython.
Le but étant de replacer le codage en C par du Codage en Python.
Elegoo 4 roues sous Arduino IDE |
C'est avant tout une plateforme 4 moteurs TT contrôlée à l'aide d'un Pont-H L298 disposant d'un capteur ultrason HC-SR04 orientable grâce à un micro servo SG90. et enfin 3 capteurs de lignes infrarouge
Ses points forts:
- Sa connectique avec branchement simple d'emploi.
- Son bloc pile pour deux accu 18650 (soit ~7.2V).
- Son pont-H L298N sans surprise (et sans résistance pull-up sur les signaux)
Elegoo 4 Roues - vue sur le module L298 |
Avec Pico et MicroPython
Le passage a MicroPython est envisageable en remplacent le microcontrôleur par un Raspberry-Pi Pico ou Pico W.
Le HC-SR04 à déjà été abordé sur notre Wiki. Ce n'est donc pas un problème.
La commande d'un servo-moteur sous MicroPython est triviale.
Le support IR dispose d'une bibliothèque réalisée par Peter Hinch (et compatible avec Pico). Mon capteur IR est mort (il chauffe à mort!). Il faudra donc vérifier le niveau du signal de sortie.
Le support Bluetooth (HC-05) peut être assuré par le WiFi/Bluetooth du Pico-Wireless (à travailler).
Les capteurs de lignes
Ces derniers produisent une tension de sortie entre 0 et 3.6V (donc juste au dessus de la limite supérieure de 3.3V).
Pour ce cas de figure, j'ai décidé d'utiliser cette astuce technique limitant le courant de fuite dans les diodes de protection de l'entrée numérique du Pico.
Solution testée in-situ pendant quelques heures
Test du hack électronique exploité sur les détecteurs de ligne |
L'alimentation du Pico
Les deux accus 18650 produisent un tension d'environ 7.2V (8.4 à pleine charge, 6V déchargées... moment où il faut arrêter).
Le Pico ne pouvant pas être alimenter avec une tension supérieure à 5.5V, il faut placer un régulateur entre le bornier d'alimentation et le Pico.
Cette tension sera également utilisé pour le micro servo moteur (limité à 6V max).
Un Hacheur DC/DC S7V7F5 sera utilisé pour disposer d'un meilleur rendement (80-90%).
Hacheur DC/DC S7V7F5 (Pololu) |
Un meilleur rendement signifie moins de pertes calorifique là où le régulateur linéaire dissipe l'excédent d'énergie en chaleur. >
Grâce aux régulateur DC/DC, nous ne gaspillons pas d'énergie en chaleur!
Une nouvelle carte
C'est le moment de créer une nouvelle carte.
Il est préférable d'utiliser la même connectique que le modèle d'origine Arduino.
N'ayant pas identifier les connecteur, il faudra dessouder ceux de l'ancienne carte pour pouvoir les réutiliser.
Les connecteurs
Je n'ai pas identifié les connecteurs utilisés par Elegoo, j'ai donc décidé de les dessouder en utilisant la technique décrite dans cette article.
Dessouder les connecteurs de la carte |
Comme vous pouvez le constater, j'ai laissé la nappe branchée sur le connecteur.
Cela permet:
- de pouvoir tirer plus facilement sur le connecteur pendant qu'on le dessoude.
- de guider l'excédent de chaleur les fils de cuivre, ce qui retarde la fonte du plastique du connecteur.
En s'y prenant bien, il est possible de récupérer facilement les connecteurs.
Connecteurs récupérés |
La carte Elegoo-4WD-Pico
Voici le premier jet de la nouvelle carte permettant d'utiliser un Pico sur le robot Elegoo. La carte contient quelques fonctionnalités supplémentaires.
Carte Pico pour Elegoo (by MCHobby) |
Avec le Pico en haut aux centre, la carte reprend tous les connecteurs Elegoo sur la partie droite (jusqu'en bas au centre).
La carte indique les GPIOs utilisés par les différentes connecteurs (carte auto-documentée).
A noter que la section infrarouge permet de monter un pont diviseur de tension entre la sortie du connecteur et GP15.
Vient ensuite le connecteur d'alimentation et régulateur DC/DC en haut à gauche.
La gauche reprend un connecteur UEXT standardisé. C'est un connecteur IDC 10 positions très résistant qui transporte une alimentation (3v3, GND) , un bus SPI (pour LCD) un bus I2C (pour nombreux capteurs) et un UART (GPS, connexion REPL et autre).
Le connecteur UEXT permet de brancher rapidement un extension sur sur la carte microcontrôleur.
Voir gamme UEXT chez MCHobby ou gamme UEXT chez Olimex.
le connecteur RFM69 permet de brancher un module de communication paquet radio RFM69HCW en 3.3V. Ce module est très pratique pour réaliser une communication encryptée avec contrôle d'erreur. C'est un peu l'Ethernet des module radio.
Notre Wiki CanSat contient une documentation MicroPython+Pico pour le RFM69HCW.
Le RFM69 utilise un bus SPI, le même que celui présent sur le connecteur UEXT. Les deux connecteurs peuvent être utilisés de concert car ils disposent chacun de leur propre ligne d'activation!
Le connecteur Qwiic en bas à gauche (compatible StemmaQt) transporte un bus I2C et une alimentation 3V3. Ce connecteur permet de brancher l'un des nombreux modules Qwiic de SparkFun ainsi que les modules StemmaQt d'Adafruit (ceux qui peuvent fonctionner en 3.3V).
Une chouette connectique mais pas franchement résistant aux mauvais traitement.
Quelques signaux en extra non utilisés comme GP10, GP11, GP3 (et non GP28) sont accessible sur le connecteur Extra avec une alimentation 3V3 et la masse.
Je suis certain que cela pourra se montrer utile.
Schéma
Si cela vous intéresse, voici le schéma de la première itération de la carte.
Schéma de la carte (V1) - Source: MCHobby Cliquer pour agrandir |
Voilà, j'espère que vous avez trouvé cela intéressant.
Dominique
Écrire un commentaire