Création d'un module d'extension pour le Raspberry Pi avec Arduino à bord

Dans hackspace , nous avons de nombreux Raspberry Pi différents, avec lesquels nous enseignons aux enfants à programmer en python, à fabriquer des robots et divers gadgets utiles. Bien sûr, nous faisons la même chose sur l'Arduino. Au cours des trois années de vie, âme contre âme avec ces plateformes extrêmement différentes, nous avons eu plusieurs idées sur la façon de rendre un robot d'entraînement plus correctement, en tenant compte des avantages et des inconvénients de chaque pièce de fer. Toutes ces pensées se sont matérialisées dans un nouvel appareil, qui sera discuté plus tard.



Essentiellement, nous avons conçu un module d'extension compatible Arduino pour RPi, qui contient un pilote de moteur et un régulateur de puissance. Il est clair que ce module est un contrôleur autosuffisant pour un robot éducatif, mais c'est le sandwich RPi + Arduino qui démontre l'approche idéologiquement correcte pour créer des robots. À quoi ressemble cette chose, quelles sont ses caractéristiques et où elle peut être appliquée, lisez la suite.


Un peu d'histoire

4 ans se sont déjà écoulés depuis la sortie de la série Raspberry Pi Model B. À une époque, c'est le battage médiatique autour du RPi qui nous a en partie encouragés à créer notre hackspace. Après tout, la première chose que nous avons commencé à faire était d'enseigner la robotique aux enfants sur RPi. Après les premiers cours avec des lycéens sur la base de l'école d'informatique N.N.Krasovsky Ural, nous avons pensé à notre atelier-laboratoire, ouvert à tous les affligés.

Nos leçons sont devenues un cours de base, qui a ensuite été adapté à l'Arduino. La poursuite de ce cours devait être des projets spécifiques dans lesquels les enfants pouvaient appliquer les connaissances acquises sur le fonctionnement des microcontrôleurs et divers composants utiles. Nous avons consacré toute une classe de ces projets de formation à la création de robots mobiles, à la fois sur la base du Raspberry Pi et sur l'Arduino.

Notre premier robot basé sur RPi a été créé spécifiquement comme un manuel pour travailler avec les étudiants. C'était un robot à deux roues, sur lequel les gars s'entraînaient à travailler avec des moteurs et toutes sortes de capteurs, se préparant simultanément à la compétition. En tant que châssis, un motoréducteur tamiya a été utilisé. Le pilote du moteur était drv8833 de TI. Dans la version pour le robot LineFollower, il y avait deux capteurs de réflexion faits maison. Sur le pont supérieur du robot a été installé une planche à pain sans soudure avec 400 points.



Le robot s'est révélé excellent, donc au fil du temps, la plate-forme a essayé un kit différent. En plus de LineFollower, que nous appelons un tracker à notre manière, le robot portait des capteurs de réflexion optique, des télémètres à ultrasons, peints avec un stylo-feutre sur un papier, et enfin il était contrôlé via le wifi, transmettant l'image à partir d'une webcam.

Au fil du temps, il est devenu clair que le motoréducteur n'était pas le plus populaire, mais aussi très bruyant. Le corps du robot ne convenait pas à tous les souhaits et n'était pas compatible avec les concepteurs courants. Et surtout, l'idée est venue de créer un module d'extension pour RPi, ce qui permettrait au robot d'économiser les communications et les dispositifs «routiniers» inutiles. C'est ainsi qu'a commencé le projet d'un robot à roues, nommé MR-K-1, puis MR-K-2. Dès le début, nous avons commencé à fournir des trous d'atterrissage pour les deux plates-formes, et le modèle de robot avec Arduino à bord est présenté ci-dessous.



Il s'agit d'une modification pour la bataille, dans laquelle les étudiants contrôlant un robot via Bluetooth ont tendance à faire éclater des ballons montés sur une machine ennemie. Le cadre a été agrandi, le motoréducteur a été remplacé par un moteur commun chinois jaune (et parfois blanc). Le boîtier a été adapté pour le constructeur multiplo, il est donc maintenant recouvert de trous carrés. Tout cela a pris plusieurs semaines. Mais le travail sur le module d'extension a été un peu retardé. Et le problème n'était pas tant dans la complexité de l'implémentation, mais dans le manque de temps, aggravé par le perfectionnisme :)

Le

module d' extension RPiDuino Alexander Vasiliev, le principal blog extrêmement utile alex-exe.ru , est devenu le principal développeur du module. Au début du projet, il avait déjà une vaste expérience dans le développement de pilotes de moteurs, de stabilisateurs de puissance et de nombreux autres appareils intéressants pour la robotique. Le conseil d'administration a été décidé de s'appeler RPiDuino, car il était censé fournir une symbiose de Raspberry Pi et Arduino.

Donc, ce que nous avons décidé de mettre au tableau.

Le module devait prendre le contrôle direct du pilote du moteur, des servos et des capteurs. Tout cela nécessite un microcontrôleur. Et puisque nous fabriquons un robot éducatif et que ce contrôleur devrait être facilement flashé par nos étudiants, le choix s'est porté sur le célèbre atmega328 avec un chargeur de démarrage Arduino à bord. La présence d'atmega fait du module un contrôleur autonome pour contrôler de petits robots d'entraînement.



Depuis que l'atmega est apparu sur la carte, un pont USB-UART était également nécessaire, pour lequel nous avons défini CP2102. Un autre signe de compatibilité Arduino est les connecteurs familiers sur les côtés de la carte, vous permettant de pousser les modules d'extension sur le dessus.

Le module doit contrôler les moteurs, donc le pilote correspondant est apparu. Les pilotes modernes sont devenus complètement microscopiques, de sorte qu'ils peuvent facilement s'adapter à la carte sans trop endommager les composants voisins. Ils ont choisi le DRV8833 de Pololu, car ils avaient déjà une certaine expérience avec eux. Le pilote est à deux canaux, avec un courant de travail du canal - 1A.



Enfin, un régulateur de tension était simplement nécessaire sur la carte. Initialement, il était censé produire une alimentation séparée pour la partie informatique et pour les servos, mais nous avons rencontré des problèmes mineurs avec la disposition. Il n'y avait donc qu'un seul stabilisateur LM2596, qui alimente le RPi, le microcontrôleur, la partie logique du pilote du moteur et les capteurs.



Aussi, le bouton de mise sous tension et le buzzer ont trouvé leur place sur la carte, avec l'aide de ce dernier le robot se plaint de ses problèmes.



Le RPiDuino se branche sur l'emplacement GPIO du Raspberry Pi, comme tous les modules similaires. Atmega328 et RPi communiquent via UART.



Les jambes restantes du GPIO sont tirées à travers, de sorte qu'elles peuvent être utilisées à votre discrétion.

Tableau des fonctionnalités clés de RPiDuino

La nutrition
Tension d'alimentation7.5-24 ( )
7.5-10.5 ( )
0,5 4, , ,
5
: //1.5/2/3
1%
5.52.1
2,7-10,5
/1/2
50
855622
855633 ( RaspberryPi)
49


Robot télécommandé basé sur RPi + RPiDuino

Une bonne démonstration des capacités de RPi est un robot télécommandé. Il peut montrer le travail coordonné de RPi et Arduino, où l'ancienne plateforme est engagée dans le traitement vidéo et l'interface utilisateur, et la seconde effectue ses tâches robotiques de routine.



Maintenant, le robot dispose d'une webcam avec support matériel pour la compression mjpg, connectée à Raspberry via USB. Le robot s'accroche au WiFi via le routeur USB TL-WN722N. Les moteurs sont renforcés, avec un rapport de 1: 120. Les roues sont grandes avec du caoutchouc souple pour s'accrocher au linoléum dans notre hackspace. Les codeurs sur les moteurs aident à niveler la variation de la poussée du moteur. Tout cela est alimenté par deux batteries LiIon de taille 18650.

Comment tout cela fonctionne

Sur RPiDuino, un programme tourne qui écoute les commandes de mouvement de l'UART et renvoie de la télémétrie. Dans mes projets, j'utilise la bibliothèque SerialFlow , écrite pour mon premier quadricoptère. Le code du programme pour RPiDuino peut également être trouvé sur github.

Côté Raspberry Pi, les choses sont un peu plus compliquées. Tout d'abord, le robot est contrôlé via l'interface web, j'ai donc dû monter un petit serveur web en python. L'écran de contrôle possède des flèches pour définir la direction du mouvement, un régulateur de vitesse, la télémétrie et une fenêtre pour afficher le flux de la webcam. Pour diffuser la vidéo, j'utilise traditionnellement mjpg-streamer.

Si vous souhaitez répéter quelque chose de similaire sur votre robot, l'algorithme d'installation sera le suivant.
1) Installez mjpg-streamer et configurez le transfert du flux vidéo vers http.
2) Installez le package physique.
3) Téléchargez et décompressez l'archive avec la partie serveur du programme de contrôle.
4) Nous remplissons l'esquisse de contrôle RPIDuino.
5) Configurez le wifi sur RPi.
6) Configurez l'exécution automatique du programme de contrôle sur RPi.



RPiDuino et ROS

Une autre raison pour laquelle nous avions besoin de ce module d'extension était la capacité de montrer à nos étudiants le bon concept de robot. Maintenant, cela ressemble à ceci: «Écoutez, le robot a un ordinateur hôte qui gère des calculs complexes. Il peut reconnaître des images, construire une carte en utilisant lidar et SLAM. Tout cela lui enlève beaucoup de ressources, de sorte qu'il ne peut plus contrôler avec sensibilité les roues d'un robot au sol, et Dieu nous en préserve, stabilisant le quadricoptère en vol. Pour ces opérations au niveau de la moelle épinière, il existe un autre ordinateur qui se spécialise dans des tâches simples spécifiques et qui n'est distrait par rien d'autre. "Ces deux ordinateurs sont connectés par un bus de données, à travers lequel ils communiquent entre eux et avec d'autres modules."

C'est là que le concept de ROS apparaît. Dans ce cas, le cœur du système tourne sur RPi et RPiDuino est le nœud ROS. Soit dit en passant, nous avons déjà créé un petit paquet pour gérer RPIDuino via ROS. Bientôt, nous publierons un article séparé sur ce sujet.

Et ensuite?

La version bêta du module s'est avérée digne. Maintenant, un petit nombre de tableaux peuvent être obtenus dans notre espace de hacks , écrivez à un personnel intéressé. Nous prévoyons de créer la prochaine version, avec de nouveaux pilotes de moteur, avec des indicateurs supplémentaires et quelques autres goodies. Le code source du forum sera certainement publié. Nous serons heureux de toute critique et participation!

Source: https://habr.com/ru/post/fr393947/


All Articles