Objectif

Une petite télécommande universelle pour piloter les projets robots par Bluetooth.

Caractéristiques :

  • Dimension réduite pour faciliter la manipulation.
  • Utilisation du module Raspberry Pico.
  • Programmation en langage micro-python avec l’éditeur Thonny.
  • Alimentation par une batterie 18650
  • Fonctionnement en Bluetooth
  • Utilisation d’une manette joystick et des boutons poussoirs.
  • Programme simple adaptable en fonction des robots.

Dans ce projet la télécommande est utilisée pour piloter le bras articulé déjà publié sur ce site.

Description fonctionnelle

Cette télécommande est utilisée en relation avec le projet bras articulé (https://www.instructables.com/Automation-of-an-Articulated-Arm-With-Raspberry-Pi/).

Elle remplace le pilotage par smartphone. On verra dans la partie programmation qu’on peut l’adapter à une multitude de projets.

Le pilotage se fait par l’envoi d’un caractère au bras articulé. Chaque caractère reçu par le bras est transformé en action.

Il y a deux jeux de commandes.

  • Commandes avec actions individuelles sur chaque servomoteur.
  • Commandes qui font appel à une mémoire qui permet de mémoriser et restituer des séquences d’actions.

La télécommande comporte 10 touches poussoirs. Le bouton noir permet de permuter entre les deux jeux de commandes.

Composants et description du montage

Le schéma est simple et utilise peu de composants.

Le contrôleur Raspberry Pico avec ses nombreuses entrées dont les ADC est idéal. J’ai utilisé en contrôleur Pico W n’ayant pas de contrôleur simple sous la main.

L’alimentation (A) se fait par une batterie 18650 et un convertisseur DC-DC afin d’obtenir une tension de 5V. Une diode protège le convertisseur lorsqu’on utilise la connexion USB.

Le joystick (B) se connecte à deux entrée ADC pour la mesure de l’angle par la tension.

Les 10 boutons poussoirs (E) et un boutons à bascule (F) permets d’envoyer jusqu’à 20 codes.

Le module Bluetooth HC05 (G) est connecté sur l’entrée UART0. La programmation en mode master sera décrite plus loin.

Deux diodes (C) (F) complètent l’ensemble pour suivre la communication Bluetooth et le contrôle des boutons poussoirs.

Les fichiers du projet sont à télécharger ici.

 

Programmation modules HC05/HC06

Appairage des modules Bluetooth 

Ce simple programme micro-python (config bluetooth.py) permet de configurer sans peine les deux modules.

Lignes 9 à 17 : Commandes AT à utiliser pour lire des informations.

Lignes 19 à 26 : Commandes AT à utiliser pour écrire des informations.

Lignes 28 à 36 : La fonction qui envoie la commande AT en argument et affiche le résultat.

Lignes 39 à 40 : Affiche les informations du module en envoyant plusieurs commandes AT.

Lignes 41 à 42 : Programme, suivant le besoin, le module en utilisant les AT (lignes 19 à 26)

Lignes 43 à 44 : Affiche les informations du module en envoyant plusieurs commandes AT.

Un exemple de configuration est donné avec les paramètres à configurer (pswd, rôle et bind).

Afin de mettre le module en mode AT il convient de connecter la pin « enable » à 3.3V avant la mise sous tension.

Pour tester l’appairage on alimente les deux modules. Après quelques secondes les deux modules vont clignotés toutes les cinq secondes comme indiqué sur le schéma).

Programmation

Le programme micro-python pour la télécommande n’est pas compliqué.

Déclarations :

Les lignes 12 et 13 contiennent les listes des ports GP utilisés. Une liste par colonne de touches

Les tables des lignes 15 à 22 contiennent les valeurs à transmettre en fonction du bouton poussoir utilisé.

L’utilisation de tables facilite la programmation. On travaille par colonne de touches indexés de 0 à 4 pour les servos de 1 à 5.

Déroulement du programme :

Lignes 37 à 40 : lecture de la position verticale du joystick.

Ligne 32 : On vérifie si le bouton noir (fonction secondaires) ou le joystick est enfoncé.

Lignes 44 à 46 : On est dans le cas où les fonctions secondaires sont sélectionnées. On recherche la valeur correspondante au bouton poussoir enfoncé. La variable « repeat_ind » est mise à 0. La valeur du bouton poussoir ne sera envoyée qu’une seule fois même si on garde la touche enfoncée.

Lignes 47 à 54 : Sinon on recherche de même le bouton poussoir utilisé ainsi que la valeur de la position horizontale du joystick. La variable « repeat_ind » est mise à 1. La valeur du bouton poussoir sera envoyée régulièrement lorsqu’ on garde la touche enfoncée.

Lignes 57 à 63 : Transmission de la valeur au module Bluetooth. On vérifiera au préalable :

  • Qu’un caractère est à envoyer (send_val != ‘ ‘).
  • Que la touche utilisée est à répétition.

Pour fonctionner avec le bras articulé il convient d’utiliser le programme (du bras articulé) modifié contenu dans les téléchargements.

Conclusion

Cette télécommande avec son programme relativement simple se destine à un usage multiple. Moyennant quelques modifications on étendra son champ d’activité. On pourra par exemple augmenter la taille de la chaîne à envoyer. La position exacte du joystick pourra également être transmise.

Vous pouvez maintenant donner libre cours à votre imagination pour vos projets de robots. Enjoy it ! 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *