Construction d’un véhicule tout terrain télécommandé
Objectif du projet :
Véhicule capable de gravir et franchir des obstacles.
Utilisation de matériaux mécaniques recyclés.
Utilisation du module Raspberry pico W avec programmation sous Micropython.
Détection de la hauteur d’obstacle afin d’automatiser le franchissement des obstacles.
Affichage évolution des paramètres par WIFI sur navigateur PC (utile pour les réglages)
Composants:
Les deux images montrent les éléments nécessaires à la fabrication. La première se focalise sur l’aspect électronique tandis que deuxième se concentre sur les aspects mécaniques.
La partie mécanique est principalement constituée de pièce de Meccano. On trouve facilement les lots de pièces sur le net à bas prix. J’ai acheté pour 10€ 2.5kg de pièces Meccano. Les avantages sont :
- Recyclage de matériel. Inutile d’acheter du matériel (tiges, équerres, plaques) à façonner.
- Montage facile sans perceuse ni scie (ou presque). Idéal pour une approche expérimentale. On peut monter et démonter jusqu’à obtenir le résultat voulu.
Points de vigilance pour le choix de certains composants :
- Batterie puissante pour produire l’énergie nécessaire aux mouvements. Pour information le véhicule décrit pèse 3Kg.
- La qualité du câblage est primordiale pour satisfaire les forts appels de courants.
- Utiliser un fil conducteur 0.75mm2 de la batterie vers la platine et platine vers moteurs.
- Utiliser les fils de raccordement rigides sur la platine pour faciliter le câblage.
Schéma du montage
Le schéma est simple et ne nécessite que peu de composants. Pour la maquette j’avais utilisé deux modules L298N avec borniers sur PCB. À la suite de faux contacts et des mouvements erratiques du véhicule j’ai opté pour une solution intégrée sur une seule plaque de montage.
Particularités du montage
L’alimentation comporte une batterie puissante qui alimente directement moteurs et servos. Une déviation par 7805 et un transistor Mosfet alimente le circuit. En cas d’alimentation du circuit par USB le Mosfet coupe l’alimentation par batterie (cf. doc pico-w-datasheet).
L’utilisation du circuit inverseur 4069 permet de réduire le nombre de GPIO.
Le montage électronique
Avant le montage physique une maquette de câblage a été réalisée. Le logiciel PowerPoint facilite le placement et les interconnections des composants. Sur la platine Il reste de la place pour un éventuel ajout. Le fichier est disponible dans le paquet projet.
L’utilisation d’une plaque de montage à souder rend le tout compact.
La télécommande
Le montage est piloté par Bluetooth via une télécommande. La construction de la télécommande est expliquée dans le lien : https://dangasdiy.top/telecommande-diy-bluetooth-hc05-raspberry-pico-joystick-robot/
Tout autre télécommande pouvant envoyer des séquences de caractères peut être utilisée. Par exemple l’application « Bluetooth Remote » sur smartphone est gratuite et simple à configurer.
Le montage mécanique
Les images montrent comment est réalisé le montage avec les pièces Meccano que j’avais à ma disposition. Elles sont données à titre indicatif et devraient servir d’inspiration.
Le principe de montage des roues est le suivant.
Les moteurs sont montés sur un support en forme de « A ». Le haut du « A » est fixé sur le châssis. Le « A » pourra se balancer librement autour de ce point (fixation souple). Une tringle fixée au servomoteur permet d’agir sur les côtés du « A » et faire pivoter les moteurs autour de l’axe. C’est par ce principe qu’on pourra lever et abaisser les roues pour monter et descendre d’un obstacle.
En position horizontale du véhicule, la tringlerie n’est pas en contact avec le « A ». Le contact ne se fera que lorsque le servo aura tourné de plusieurs degrés. Cela donne de la souplesse au mécanisme des roues qui sont alors sans contrainte. Le véhicule pourra alors passer sur de petit obstacle sans aide des servomoteurs.
Il n’y a pas de système de direction. Pour prendre des virages il suffit, par exemple pour tourner à gauche, de mettre tous les moteurs de droite en marche avant et tous les moteurs de gauche en marche arrière. Le véhicule opère alors une rotation sur lui-même.
Le programme du véhicule
Le projet comporte deux fichiers :
Fichier « L293D_lib.py ».
Le programme utilise des fonctions et des classes « .self » pour faciliter la conception et la lecture.
La classe des moteurs permet de définir deux familles de fonctions. Une pour les moteurs avant et une pour les moteurs arrière. De même pour la classe servomoteurs.
La fonction « IR_read() » lit sur GPIO26 la distance à l’obstacle. Une formule permet la conversion de la mesure en cm. Elle fourni les angles des servomoteurs nécessaires pour gravir l’obstacle.
Le fichier débute par la connexion au Wifi. Le module affiche l’adresse IP (DHCP) de la connexion. Une fois l’adresse établie elle restera la même par la suite. La led du microcontrôleur signale le moment où le navigateur (PC ou smartphone) peut se connecter. Lorsque la led clignote elle indique l’échec de la connexion WIFI. Il faut alors redémarrer le contrôleur. La fonction « sendmsg » est utilisée pour afficher les informations des états de moteurs, servomoteurs et IR_read dans le navigateur. Cela facilite le calibrage. La maquette n’a donc pas besoin d’être connectée en USB par un câble.
Fichier main.py
Les fonctions « motor_rear et front » et « servo_rear et front) définissent l’ensemble des sous-fonctions nécessaires aux manipulations (à l’aide des classes « .self »).
D’autres fonctions comme « move, monte_av, monte_ar et detect » utilisent ces fonctions de base pour en faire des fonctions plus évoluées.
Au démarrage le programme se met en attente d’informations Bluetooth en provenance de la télécommande. La séquence reçue de la télécommande se compose de trois valeurs : la position du potentiomètre (horizontale et verticale) et le bouton utilisé.
En fonction de ces indications des actions sur les moteurs et les servos sont lancées (L’image montre les relations).
Télécharger les fichiers du projet ICI.
Le programme de la télécommande
La télécommande a fait l’objet d’un projet publié sur ce site. Le programme a été revu et la version adaptée à ce projet peut être téléchargé.
La principale modification réside dans la transformation de la tension fournie par les potentiomètres en valeurs sur l’échelle -100 à +100. Cela facilite son utilisation pour piloter les moteurs. Les valeurs entre 0 et 100 correspondent à la puissance pour la marche avant et 0 à -100 pour la marche arrière.
Conclusion
La réalisation du projet s’est étalée sur plusieurs mois pour trouver le bon positionnement des roues, moteurs et servomoteurs. Cette étude a été grandement facilité avec l’utilisation de pièces Meccano. Les montages et démontages successifs ont été simples et plaisants voire passionnants. J’espère que cela va inspirer l’un ou l’autre bricoleur. Enjoy-it !
Références
https://circuitdigest.com/microcontroller-projects/build-your-own-mars-rover-robot-using-arduino
Document : pico-w-datasheet.pdf pour l’alimentation
Inspiration l298n_lib.py (pour la classe .self ) de peppe8o Blog: https://peppe8o.com
Webserver : https://www.raspberrypi.com/news/how-to-run-a-webserver-on-raspberry-pi-pico-w/
Document connecting-to-the-internet-with-pico-w.pdf