Accueil > ESP32, Matériel > Finalisation du bras robotique

Finalisation du bras robotique

Ce projet touche à sa fin, j’ai décidé d’apporter les modifications suivantes au bras :

  • Ajout d’un écran OLED SSD1306.
  • Ajout d’un capteur de gestes PAJ7620.
  • Impression du couvercle.

Le but de ces modification est d’apporter une interface humaine au bras robotique. Effectivement, en lançant le programme, un menu s’affichera sur l’écran OLED et on pourra sélectionner l’action à effectuer grâce au capteur de gestes PAJ7620. Nous y reviendrons dans la suite mais pour l’instant voyons la partie éléctronique et mécanique.

J’ai écrit un certain nombre d’article sur l’utilisation du capteur PAJ7620 en MicroPython (je vous propose de les lire) :

Rien de compliqué pour la partie électronique, on utilise le bus I2C pour communiquer avec l’écran OLED SSD1306 et le capteur de gestes PAJ7620; ne pas oublier de relier les liaison SDA et SCL au + 3.3v via 2 résistances de 4.7 Kohms.

J’ai monté l’ensemble sur une carte supplémentaire de dimension 80×70 mm :

Pour le couvercle, j’ai créé à l’aide Fusion 360, le modèle STL téléchargeable sur mon Github (nom du fichier ‘couvercle bras robotique.stl‘) :

Voici une photo, de la carte montée :

Pour la partie programmation en MicroPython, le programme téléchargeable sur mon Github se nomme ‘robot_arm.py‘ et permettra à partir d’un menu de sélectionner 3 modes de fonctionnement :

  • Web : le programme configure un point d’accès WiFi de nom ‘microarm‘ sans mot de passe avec une adresse IP de 192.168.4.1; on peut se connecter à partir d’un navigateur internet et gérer les mouvements du bras. Se référencer à mon article pour le fonctionnement.
  • Geste : le programme utilise le capteur de gestes pour gérer le bras (ceci peut être améliorer). Se référencer à mon article pour le fonctionnement.
  • UDP : le programme configure un point d’accès WiFi de nom ‘microarm‘ sans mot de passe avec une adresse IP de 192.168.4.1. Il implémente le protocole UDP afin de pouvoir communiquer avec tout autre matériel (ESP, Raspberry, Ordinateur…) en socket UDP et en utilisant le port UDP 18000. Cela permet d’ajouter facilement des options au bras (par exemple une manette de joystick, un capteur de mouvement etc…). Je vous donne un peu plus loin un exemple d’utilisation d’un capteur MPU6050 avec un ESP8266 écrit en MicroPython.

La gestion du menu s’effectue par geste :

  • Haut / Bas : pour défiler le menu.
  • Sens horaire : pour activer le mode sélectionné.
  • Sens anti-horaire : pour quitter le mode de fonctionnement et afficher de nouveau le menu.

Attention j’utilise la notion de Thread pour la partie Web et UDP; pour le mode Web si on quitte l’utilisation à partir du menu, il sera nécessaire d’effectuer une action sur la page Web pour vraiment quitter le Thread car actuellement il est impossible de tuer un Thread en MicroPython (version 1.10).

Le bras robotique tout monté :

Pour gérer le bras via le protocole UDP, j’ai écrit un programme en MicroPython qui utilise un capteur MPU6050 (vous pouvez télécharger la librairie que j’ai écrit en MicroPython sur mon Github) dont voici le contenu (le fichier est sur mon Github et se nomme ‘robot_mpu6050_udp.py‘) :

# Utilisation d'un bras articulé via le protocole UDP
#
# Matériel :
#            Testé sur ESP8266 Lolin
#            1 capteur de mouvements MPU6050
#            MicroPython version 1.10
#
# Programme qui permet de piloter le bras articulé via  le protocole UDP :
#
# Auteur : iTechnoFrance
#

import machine, time
import network, socket
import mpu6050

def config_wifi():
    sta = network.WLAN(network.STA_IF)  # création client d'accès WiFi
    sta.active(True)  # activation du client d'accès WiFi   
    sta.connect('microarm')  # connexion au point d'accès WiFi
    while(sta.isconnected() == False):
        time.sleep(1)
    ip = sta.ifconfig()[0]
    return ip

def communication(commande):
    com_net.sendto(commande, (('192.168.4.1', 18000)))  # envoi la commande au recepteur sur le port 18000 

ip = config_wifi()        
com_net = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  # initialise un socket UDP
# Déclaration I2C sur ESP8266
# // GPIO05 --> SDA
# // GPIO04 --> SCL
i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5), freq=400000)
mpu_6050 = mpu6050.MPU6050(i2c)  # déclaration mpu6050
if (mpu_6050.detect()):
    while True:
        mpu_6050.lecture_capteurs()
        if (mpu_6050.AngleX > 5):  # gauche
            communication(b'g')
        if (mpu_6050.AngleX < -5):  # droite
            communication(b'd')
        if (mpu_6050.AngleY  5):  # bas
            communication(b'b')

Voilà pour le petit projet du bras robotique. Je vais tenter d’effectuer quelques vidéos sur ma chaine Youtube.

Catégories :ESP32, Matériel Étiquettes : , , , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :