PyRobot est un robot évolutif démarré en avril 2022 à base de Raspberry Pi, carte pic 18F45K22 et carte microbit. Basée sur une carte Raspberry Pi 4, PyRobot aura deux modes de fonctionnement, autonome ou piloté par smartphone. Il disposera d'une caméra pour le contrôle à distance et la reconnaissance d'objets ou de visages via une petite IA. L'objectif est assez ludique, faire le lien entre les sciences de l'ingénieur (SI) et le numérique et sciences de l'informatique (NSI) à travers la conception robotique. Pour le design, cherchez pas, y'en a pas, j'ai été juste guidé par le coté pratique et rapide de la conception.
Sur l'avant, la représentation d'une tête avec deux servomoteurs pour les sourcils , deux capteurs de distance pour les yeux, et une carte microbit qui va permettre d'afficher une bouche. PyRobot simulera des émotions et pourra interagir avec son environnement. PyRobot est un véritable petit système embarqué dont les possibilités d'interactions sont nombreuses et évolutives (possibilité de rajouter haut parleur, micro, capteurs divers ...
Les différentes cartes du robot en phase de montage. Pour pouvoir communiquer entre elles, il faut adapater les tensions. Les ports du raspberry travaillent en 3,3V alors que les ports du PIC sont 5V. Pour envoyer les infos du rasberry vers le PIC, il est nécessaire d'élever la tension en utilisant un transistor monté en commutation. Dans l'autre sens (Pic vers raspberry) , un simple pont de résistances correctement calibré suffit. Le schéma est de la carte interface est ici La communication entre les cartes sera de type série avec un protocole maison. L'intérêt est d'utiliser le moins de sorties (port) possible tout en s'affranchissant des éventuels conflits car j'utilise les ports standards pour communiquer (le port série du pic est réservé pour débuggage sortie écran et celui du rasberry il y a des problèmes en fonction des versions ...)
L'alimentation du robot est un élément critique, il faut pouvoir fournir du 5V 2A minimum à partir d'une batterie 12V pour assurer un fonctionnement correct de la carte raspberry Pi, sans compter l'alimentation d'autres composants (servomoteurs, capteurs ...) qui sont aussi en 5V. la carte alim est composée d'un régulateur 7805 pour la stabilisation 5V et d'un transistor NPN de puissance (3055) pour booster le courant. Le condensateur bleu sert à filtrer les appels de courants moteurs pour éviter les microcoupures. Une petite batterie 12V 5ah alimente l'ensemble du projet (en attendant de trouver mieux en lithium ion ...)
02-05-2022. Cablage des cartes et premiers tests de communication.
Schéma de câblage des Entrées Sorties pour liaison entre le Pic et le Raspberry Pi4
L'algorithme pour communiquer est en cours de réalisation - Les premiers tests sont concluants
Il faut configurer les routines d'interruptions pour la gestion de la communication ainsi que le timer pour le pilotage des servomoteurs
La communication avec la console utilise le timer 1 du pic, il est préférable d'utiliser le timer 0 pour éviter les conflits
Première configuration des entrées sorties du raspberry pi
Réalisation des pièces de la tourelle pour la webcam (berceau de servomoteurs) La conception 3D a été faite avec le logiciel FreeCad
Une petite plaque réalisée avec la graveuse laser du FabLab de St Paul
Video de l'impression 3d faite au FabLab de St Paul avec l'aide de Daniel
Impression 3d du support mini écran USB et Gravure Laser en action
Phase de test des seromoteurs
Pilotage de la tourelle caméra, vitesse et fluidité se règlera plus tard , le protocole de communication fonctionne
Reconnaissance faciale . La bibliothèque utilisée est open-cv associée à face_recognition . L'installation logicielle a été laborieuse ...
La tourelle caméra de pyrobot est capable de suivre le mouvement de la tete . C'est les tous premiers essais, plusieurs optimisations sont en cours
Le câblage général avance .
Carte microbit qui sourit en fonction de la détection ou non du visage
Pilotage du robot. Le premier mode de pilotage se fait via une simple connexion ssh + wifi au raspberry , le programme est lancé en ligne de commande .
Code source du programme réalisé avec Great Cow Basic pour la programmation du PIC 18F45K22 .
On notera l'utilisation d'un timer pour générer les impulsions de commande des servo-moteurs toutes les 16ms, la programmation des interruptions pour générer la MLI moteur et la réception des données de communication
Le code source du programme PyRobot du Raspberry Pi 4
Ce n'est évidemment pas dernière la version mais cela donne une petite idée du développement en cours avec open cv.
Programmation de la tablette Android avec B4A (basic for Android)
Pilotage de PyRobot avec la tablette