Table des matières:
- Fournitures
- Étape 1: Voiture robotique mobile
- Étape 2: Voiture robotique mobile - Schéma de circuit
- Étape 3: Voiture robotisée mobile - Assemblage (moteurs)
- Étape 4: Voiture robotisée mobile - Assemblage (capteur de distance)
- Étape 5: Voiture robotisée mobile - Assemblage (ESP32 CAM)
- Étape 6: Voiture robotisée mobile - Assemblage (distributeur de puces)
- Étape 7: Voiture robotique mobile - Assemblage (Cookies !)
- Étape 8: Voiture robotique mobile - Code Arduino
- Étape 9: Voiture robotique mobile - Code ESP32
- Étape 10: Distributeur de puces
- Étape 11: Manette de jeu
- Étape 12: Joystick - Schéma de circuit
- Étape 13: Joystick - Émulateur de clavier
- Étape 14: Communication réseau
- Étape 15: Tout assembler
Vidéo: Robot de présence virtuelle : 15 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Ce robot mobile interagit avec son environnement physique, en représentant la « présence virtuelle » de la personne qui le contrôle à distance. Il peut être consulté par n'importe qui, n'importe où dans le monde, pour distribuer des friandises et jouer avec vous.
Le travail ici est développé par deux personnes (une en Allemagne et une aux États-Unis) dans le but d'aller au-delà des moyens traditionnels de communication sur Internet en créant une interface physique pour l'interaction à distance. Alors que COVID-19 continue d'affecter le monde et que chacun est responsable de limiter notre exposition physique aux gens, nous essayons de rétablir le lien tangible qui fait partie de l'interaction physique.
Il est basé sur le ESP32-Camera-Robot-FPV-Teacher-Entry Instructable et modifié pour inclure un capteur de distance, un distributeur de friandises et une capacité de "contrôle de n'importe où dans le monde", à condition que vous disposiez d'une connexion Internet quelque peu stable.
Fournitures
Le projet comporte 4 parties principales - une voiture robotique mobile, un distributeur de puces, un joystick et une configuration de communication réseau.
Voiture robotique mobile
- Planche à pain
- Kit robotique pour moteur et châssis à 2 roues motrices (comprend les roues, les moteurs à courant continu, la plaque de montage et les vis)
- Arduino Mega 2560 (si vous construisez sans le capteur de distance ou le distributeur de puces, un Uno aura suffisamment de broches)
- (3) Piles 9V (en avoir quelques-unes de plus car vous les épuiserez lors du débogage)
- Module d'alimentation LM2596 Régulateur DC/DC Buck 3A (ou similaire)
- Module Wifi ESP32-CAM
- Convertisseur série FT232RL FTDI USB vers TTL (pour programmer l'ESP32-CAM)
- Capteur de distance à ultrasons HC-SR04
- Pilote de moteur L298N
- (3) LED (n'importe quelle couleur)
- (3) Résistances 220 Ohms
Distributeur de puces
- (2) Servomoteurs SG90
- Carton / Carton
Manette
- Arduino Uno
- Module de manette de jeu
- Mini planche à pain, (1) LED, (1) résistance de 220 ohms (en option)
Autre
Beaucoup de fils de cavalier de planche à painCarton/carton supplémentaireRubanCiseauxRègle/ruban à mesurerPetit tournevis PhilipsPetit tournevis à tête plate
Patience =)
Étape 1: Voiture robotique mobile
Le châssis Robot Car sert de plate-forme mobile, avec un Arduino MEGA comme microcontrôleur principal pilotant les moteurs, lisant les valeurs des capteurs et actionnant les servos. La plupart des actions sont effectuées en faisant en sorte que l'Arduino MEGA reçoive des commandes via une communication série, envoyées depuis l'ESP32-CAM. Alors que l'ESP32 fournit un flux en direct de caméra pour contrôler le robot, son autre fonction est de gérer une connexion sans fil entre le robot et le serveur, permettant ainsi aux utilisateurs de le contrôler de n'importe où dans le monde. L'ESP32 reçoit des commandes de la page Web via une touche et les envoie à l'Arduino MEGA sous forme de valeurs de caractère. En fonction de la valeur reçue, la voiture avancera, reculera, etc. Étant donné que la télécommande via Internet dépend de nombreux facteurs externes, notamment une latence élevée, une mauvaise qualité de flux et même des déconnexions, un capteur de distance est intégré pour empêcher le robot de s'écraser. en objets. * En raison des exigences d'alimentation élevées et fluctuantes de la puce ESP32, un régulateur d'alimentation est recommandé pour une utilisation avec l'alimentation par batterie (voir le schéma de câblage).
Étape 2: Voiture robotique mobile - Schéma de circuit
Nous vous guiderons tout au long de l'assemblage de cette étape par étape.
Étape 3: Voiture robotisée mobile - Assemblage (moteurs)
Après avoir assemblé le châssis 2WD, nous commençons par connecter les moteurs et la batterie à l'Arduino MEGA via le pilote L298N.
Étape 4: Voiture robotisée mobile - Assemblage (capteur de distance)
Comme il y a pas mal de composants à connecter, ajoutons une maquette, afin de pouvoir connecter plus facilement l'alimentation et la terre partagée. Après avoir réorganisé les fils, connectez le capteur de distance et fixez-le à l'avant du robot.
Étape 5: Voiture robotisée mobile - Assemblage (ESP32 CAM)
Ensuite, connectez le module ESP32-CAM et fixez-le à côté du capteur de distance près de l'avant du robot. N'oubliez pas que ce composant plutôt gourmand en énergie nécessite sa propre batterie et un régulateur CC.
Étape 6: Voiture robotisée mobile - Assemblage (distributeur de puces)
Ajoutons maintenant le distributeur de puces (plus d'informations à ce sujet dans la section "Distributeur de puces"). Câblez les deux servos selon le schéma de Fritzing, et fixez le distributeur à la queue du robot.
Étape 7: Voiture robotique mobile - Assemblage (Cookies !)
Enfin, nous ajoutons des friandises au distributeur!
Étape 8: Voiture robotique mobile - Code Arduino
RobotCar_Code est le code que vous devrez charger sur l'Arduino Mega.
Voici comment cela fonctionne: l'Arduino écoute les octets envoyés depuis l'ESP32 via une communication série sur la bande 115200. En fonction de l'octet reçu, la voiture avancera, reculera, gauche, droite, etc. en envoyant une tension HAUTE ou BASSE aux moteurs pour contrôler la direction, ainsi qu'une variable PWM entre 0 et 255 pour contrôler la vitesse. Pour éviter les collisions, ce code lit également les valeurs provenant du capteur de distance et si la distance est inférieure à un seuil spécifié, le robot n'avancera pas. Enfin, si l'Arduino reçoit une commande pour distribuer une friandise, il activera les servos dans le distributeur de puces.
Étape 9: Voiture robotique mobile - Code ESP32
L'ESP32 permet la communication entre le serveur et Arduino via Wifi. Il est programmé séparément de l'Arduino, et possède son propre code:
- ESP32_Code.ino est le code pour ESP32 pour envoyer des informations à l'Arduino
- app_httpd.cpp est le code nécessaire pour le serveur Web ESP32 par défaut et définit la fonction pour écouter les pressions de touche. Bon pour le débogage et les tests sur le wifi local. Il n'est pas utilisé pour la communication en dehors du réseau local.
- camera_index.h est le code html de l'application Web par défaut
- camera_pins.h définit les broches en fonction du modèle ESP32
Le code ESP32 utilise la bibliothèque Wifi ainsi que le module complémentaire ESP32, qui peut être installé dans l'IDE Arduino en suivant ces étapes:
- Dans l'IDE Arduino, allez dans Fichier> Préférences
- Ensuite, dans l'onglet Paramètres sous l'URL du gestionnaire de cartes supplémentaires, entrez le suivant "https://dl.espressif.com/dl/package_esp32_index.json"
- Ouvrez maintenant le gestionnaire de cartes et accédez à Outils> Carte> Gestionnaire de cartes et recherchez l'ESP32 en tapant "ESP32"
- Vous devriez voir "esp32 by Espressif Systems". Cliquez sur Installer.
- Maintenant, le module complémentaire ESP32 doit être installé. Pour vérifier, revenez à l'IDE Arduino et accédez à Outils> Carte et sélectionnez le "module ESP32 Wrover".
- Allez à nouveau dans Outils > Vitesse de téléchargement et réglez-le sur "115200".
- Enfin, allez dans Outils> Schéma de partition et réglez-le sur "Énorme APP (3 Mo sans OTA/1 Mo SPIFFS)
- Une fois que vous avez terminé, je vous recommande de suivre ce tutoriel de RandomNerdTutorials qui explique en détail comment finaliser la configuration de l'ESP32 et télécharger le code avec le programmeur FTDIProgrammer l'ESP32
Étape 10: Distributeur de puces
Le distributeur de jetons est un ajout peu coûteux au robot mobile lui permettant d'affecter l'environnement local et d'interagir avec les personnes / les animaux en laissant une friandise savoureuse. Il se compose d'une boîte extérieure en carton avec 2 servos montés à l'intérieur, ainsi que d'une cartouche intérieure en carton qui contient des articles (tels que des bonbons ou des friandises pour chiens) à distribuer. Un servo agit comme une porte tandis que l'autre pousse l'article vers l'extérieur.
*Toutes les dimensions sont en millimètres
Étape 11: Manette de jeu
S'il peut être amusant de contrôler un robot avec le clavier, il est encore plus amusant et intuitif d'utiliser un joystick, où le robot réagit directement en fonction de la direction dans laquelle vous poussez. Étant donné que ce robot est actionné via des touches enregistrées sur la page Web, nous avions besoin de notre joystick pour émuler un clavier. De cette façon, les utilisateurs sans joystick peuvent toujours contrôler le robot directement à partir d'un clavier, mais d'autres peuvent utiliser le joystick.
Pour cela, nous n'avions qu'un Arduino Uno qui n'a pas la possibilité d'utiliser la bibliothèque, nous l'avons donc programmé directement à l'aide d'un protocole USB connu sous le nom de Device Firmware Update (DFU) qui permet à l'arduino d'être flashé avec un firmware de clavier USB HID générique. Autrement dit, lorsque l'arduino est branché sur l'usb il n'est plus reconnu comme un arduino mais comme un clavier !
Étape 12: Joystick - Schéma de circuit
Voici comment nous avons câblé le joystick.
Étape 13: Joystick - Émulateur de clavier
Pour que votre Arduino Uno émule un clavier, vous devez programmer directement la puce Atmega16u2 sur l'Arduino via une mise à jour manuelle du micrologiciel de l'appareil (DFU). Les étapes suivantes décriront le processus pour une machine Windows et, espérons-le, vous aideront à éviter certains des problèmes que nous avons rencontrés.
La première étape consiste à écrire manuellement le pilote USB Atmel sur l'Arduino afin qu'il soit reconnu comme un USB et non comme un Arduino, ce qui lui permet d'être flashé avec le programmeur FLIP.
- Téléchargez le programmeur FLIP d'Atmel à partir d'ici
- Branchez votre Arduino Uno
- Allez dans le Gestionnaire de périphériques et trouvez l'Arduino. Ce sera sous COM ou Périphérique inconnu. Branchez-le et débranchez-le pour vous assurer qu'il s'agit du bon appareil.
- Une fois que vous avez trouvé l'Arduino Uno dans le Gestionnaire de périphériques, cliquez dessus avec le bouton droit et sélectionnez Propriétés> Pilote> Mettre à jour le pilote> Parcourir mon ordinateur pour le logiciel de pilote> Laissez-moi choisir parmi une liste de pilotes disponibles sur mon ordinateur> Disque fourni> Naviguez jusqu'au fichier "atmel_usb_dfu.inf" et sélectionnez-le. Cela devrait être dans le dossier où votre programmeur Atmel FLIP a été installé. Sur mon ordinateur, c'est ici: C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf
- Installer le pilote
- Revenez maintenant au Gestionnaire de périphériques, vous devriez voir un "Périphériques USB Atmel" avec l'Arduino Uno maintenant étiqueté comme un ATmega16u2!
Maintenant que l'ordinateur reconnaît l'Arduino Uno comme un périphérique USB, nous pouvons utiliser le programmeur FLIP pour le flasher avec 3 fichiers séparés et le transformer en clavier.
Si vous avez débranché votre Arduino Uno après la première partie, rebranchez-le.
- Ouvrir FLIP
- Réinitialisez l'Arduino Uno en connectant brièvement l'alimentation à la terre.
- Cliquez sur Sélection de périphérique (icône comme une puce électronique) et sélectionnez ATmega16U2
- Cliquez sur Sélectionner un support de communication (icône comme un cordon USB) et sélectionnez USB. Si vous avez terminé correctement la première partie, les autres boutons grisés devraient devenir utilisables.
- Allez dans Fichier> Charger le fichier Hex> et téléchargez le fichier Arduino-usbserial-uno.hex
- Dans la fenêtre FLIP, vous devriez voir trois sections: Operations Flow, FLASH Buffer Information et ATmega16U2. Dans le flux des opérations, cochez les cases Effacer, Programmer et Vérifier, puis cliquez sur Exécuter.
- Une fois ce processus terminé, cliquez sur Démarrer l'application dans la section ATmega16U2.
- Branchez l'arduino en le débranchant de l'ordinateur et en le rebranchant.
- Réinitialisez l'Arduino Uno en connectant brièvement l'alimentation à la terre.
- Ouvrez l'IDE Arduino et téléchargez le fichier JoyStickControl_Code.ino sur la carte.
- Branchez le cycle de l'arduino en le débranchant de l'ordinateur et en le rebranchant.
- Réinitialisez l'arduino en connectant brièvement l'alimentation à la terre.
- Retournez à FLIP, assurez-vous que la sélection de périphérique indique Atmega16U2
- Cliquez sur Sélectionner un support de communication et sélectionnez USB.
- Allez dans Fichier> Charger le fichier Hex> et téléchargez le fichier Arduino-keyboard-0.3.hex
- Dans la fenêtre FLIP, vous devriez voir trois sections: Operations Flow, FLASH Buffer Information et ATmega16U2. Dans le flux des opérations, cochez les cases Effacer, Programmer et Vérifier, puis cliquez sur Exécuter.
- Une fois ce processus terminé, cliquez sur Démarrer l'application dans la section ATmega16U2.
- Branchez l'arduino en le débranchant de l'ordinateur et en le rebranchant.
- Maintenant, lorsque vous accédez au Gestionnaire de périphériques, il devrait y avoir un nouveau périphérique de clavier HID sous Claviers.
- Ouvrez un bloc-notes ou n'importe quel éditeur de texte et commencez à déplacer le joystick. Vous devriez voir des chiffres en train d'être tapés !
Si vous souhaitez modifier le code dans le sketch Arduino, par exemple en écrivant de nouvelles commandes sur le joystick, vous devrez le flasher avec les 3 fichiers à chaque fois.
Quelques liens utiles: Arduino DFUAtLibUsbDfu.dll introuvable
Cet émulateur de clavier est basé sur ce tutoriel de Michael le 24 juin 2012.
Étape 14: Communication réseau
Pour recevoir un flux vidéo et envoyer des commandes au robot depuis n'importe où dans le monde, nous avons besoin d'un moyen d'obtenir des données vers et depuis l'ESP32-CAM. Cela se fait en deux parties, un gestionnaire de connexion sur votre réseau local et un serveur public. Téléchargez les trois fichiers pour y parvenir:
- Handlers.py: relaie les informations de ESP32-CAM et du serveur public (testé sur Python 3.8)
- Flask_app.py: définit la manière dont votre application répond aux demandes entrantes.
- Robot_stream.html: rend la vidéo dans votre navigateur et écoute les commandes via le clavier/le joystick (testé sur Chrome)
Gestionnaire de connexion Vous pouvez le coder directement dans app_httpd.cpp, mais pour un débogage plus facile, nous utilisons un script Python exécuté sur un PC connecté au même réseau. Ouvrez handlers.py et mettez à jour l'adresse IP et le nom d'utilisateur, et vous êtes prêt à partir. Le flux démarrera lorsque vous exécuterez ce fichier.
Serveur public Pour accéder à tout sur Internet, vous pouvez démarrer un serveur avec un PaaS de votre choix. Sur pythonanywhere (PA), la configuration prend moins de 5 minutes:
- Créez un compte et connectez-vous
- Allez dans l'onglet "Web" et appuyez sur "Ajouter une nouvelle application Web", choisissez Flask et Python 3.6
- Copiez flask_app.py dans le répertoire /mysite
- Copiez robot_stream.html dans le répertoire /mysite/templates
- Cliquez sur « Recharger »
Et… vous êtes prêt !
Avis de non-responsabilité: ce workflow de mise en réseau est rapide et simple, mais très loin d'être idéal. RTMP ou sockets seraient plus appropriés pour la diffusion en continu, mais ils ne sont pas pris en charge sur PA et nécessitent une certaine expérience de la mise en réseau et de la configuration du serveur. Il est également recommandé d'ajouter un mécanisme de sécurité pour contrôler l'accès.
Étape 15: Tout assembler
Maintenant, allumez votre robot, exécutez handlers.py sur un ordinateur (connecté au même réseau que le robot) et vous pouvez contrôler le robot à partir d'un navigateur en fonction de l'URL que vous avez définie depuis n'importe où. (par exemple
Conseillé:
Système de suivi des mouvements de la tête pour la réalité virtuelle : 8 étapes
Système de suivi des mouvements de la tête pour VR : Je m'appelle Sam KODO. Dans ce tuto, je vais vous apprendre étape par étape comment utiliser les capteurs Arduino IMU pour créer un système de suivi de la tête pour la VR. Dans ce projet, vous aurez besoin de : - Un écran LCD HDMI :https://www.amazon.com/Elecrow-Capacitive-interfac…- Un
Réalité virtuelle sur Raspberry Pi avec BeYourHero ! : 19 étapes (avec photos)
Réalité virtuelle sur Raspberry Pi avec BeYourHero ! : Bienvenue sur "Be Your Hero" projet ! J'espère que vous êtes prêt à entrer dans la prochaine génération d'immersion en réalité virtuelle ! Ce projet vous donnera un contrôle gestuel total de n'importe quel héros virtuel que vous aimez avec un ensemble simple d'appareils peu coûteux utilisant se
Programmer l'horloge : votre assistant de productivité virtuelle : 6 étapes (avec photos)
Horaire de l'horloge : votre assistant de productivité virtuelle. : Je suis un procrastinateur professionnel ! Ce verrouillage m'a mis dans une boucle temporelle, où chaque jour vole sans aucun travail productif. Pour vaincre ma procrastination, j'ai fabriqué cette horloge simple et rapide, qui programme mon travail. Maintenant, je peux simplement m'en tenir à
Comment rediriger un modem USB vers une machine virtuelle VMware ESXi : 14 étapes
Comment rediriger un modem USB vers une machine virtuelle VMware ESXi : Bonjour à tous ! Aujourd'hui, je vais vous expliquer comment rediriger un modem USB vers une machine virtuelle VMware ESXi. De la même manière, vous pouvez rediriger une clé USB et d'autres périphériques USB. Cette fonction VMware établie de longue date a ses avantages et ses inconvénients, nous
Machine virtuelle Virtualbox : 6 étapes
Machine virtuelle Virtualbox : Bienvenue dans le tutoriel sur l'installation et l'utilisation de VirtualBox