Table des matières:

Robot caméra ESP32 - FPV : 6 étapes
Robot caméra ESP32 - FPV : 6 étapes

Vidéo: Robot caméra ESP32 - FPV : 6 étapes

Vidéo: Robot caméra ESP32 - FPV : 6 étapes
Vidéo: Surveillance Car using ESP32 Cam module | ESP32 Camera wi-fi car 🚓 2024, Novembre
Anonim
Image
Image
Robot caméra ESP32 - FPV
Robot caméra ESP32 - FPV
Robot caméra ESP32 - FPV
Robot caméra ESP32 - FPV

Le module caméra ESP32 est un automate peu coûteux et puissant. Il inclut même la reconnaissance faciale !

Construisons un robot First Person Viewpoint que vous conduisez via une interface Web intégrée !

Ce projet utilise le module Geekcreit ESP32 avec la caméra OV2640. Il est basé sur le module AIThinker.

Il existe de nombreux clones de caméra ESP32 différents. Certains fonctionnent, d'autres non. Je vous suggère d'utiliser le même module que moi afin que vous ayez une bonne chance de réussir.

Le robot fonctionne comme suit.

L'ESP32 diffuse une URL Web vers votre réseau qui présente le flux vidéo en direct avec quelques cases à cocher pour utiliser certaines fonctions de la caméra. Il reçoit également les pressions de touches envoyées à la page Web à partir du clavier qui sont des commandes directionnelles pour le robot. Vous souhaiterez peut-être créer le bouclier du joystick USB afin de pouvoir piloter le robot avec le joystick plutôt que de taper des commandes au clavier.

Lorsque l'ESP32 reçoit des touches, il transmet ces octets à l'Arduino Nano qui entraîne ensuite les moteurs pour faire bouger le robot.

Ce projet est de difficulté moyenne à élevée. Veuillez prendre votre temps.

Commençons!

Fournitures

  • Module caméra ESP-32 avec caméra OV2640 - Je recommanderais le produit Geekcreit
  • Antenne externe encliquetable pour l'ESP-32 afin de maximiser la force du signal
  • Arduino Nano
  • Arduino Leonardo pour le module Joystick (nous avons besoin d'une émulation de clavier USB fournie par le Leonardo)
  • Module Joystick générique
  • Puce L293D Quad pont en H
  • DC-DC Buck Coverter avec sortie 5V pour alimenter l'ESP32
  • Adaptateur série FTDI pour programmer l'ESP32
  • Un châssis de robot générique avec deux motoréducteurs - n'importe quel châssis fonctionnera. Les moteurs 3 à 6V sont recommandés
  • 2 batteries LiPo 7.4V 1300mAh (ou similaire) pour alimenter l'ESP32 et les moteurs
  • 1 pile 9V pour alimenter l'Arduino Nano

Étape 1: programmer la caméra ESP32

Programmer la caméra ESP32
Programmer la caméra ESP32
Programmer la caméra ESP32
Programmer la caméra ESP32

À l'aide d'une maquette, connectez votre caméra ESP32 à l'adaptateur FTDI comme suit:

FTDI ESP32

3.3V ----------- 3.3V

GND ----------- GND

TX ----------- U0R

Rx ----------- U0T

De plus, connectez la broche IO0 ("eye-oh-zero") à GND. Vous devez faire cela pour mettre l'ESP32 en mode programmation.

Décompressez le fichier esp32CameraWebRobotforInstructable.zip.

Il y a 4 fichiers dans ce projet:

esp32CameraWebRobotforInstructable.ino est l'esquisse Arduino.

ap_httpd.cpp est le code qui gère le serveur Web et gère la configuration des fonctionnalités de la caméra à partir de la page Web et la réception des touches de la page Web.

camera_index.h contient le code HTML/JavaScript pour l'application Web sous forme de tableaux d'octets. La modification de l'application Web dépasse largement le cadre de ce projet. J'inclurai un lien pour savoir comment modifier le HTML/JavaScript plus tard.

camera_pins.h est le fichier d'en-tête relatif à la configuration des broches de la caméra ESP32.

Pour mettre l'ESP32 en mode programmation, vous devez connecter IO0 ("eye-oh-zero") à la terre.

Lancez votre IDE Arduino et accédez à Tools/Boards/Boards Manager. Recherchez esp32 et installez la bibliothèque esp32.

Ouvrez le projet dans votre IDE Arduino.

Mettez l'ID de réseau de VOTRE routeur et VOTRE mot de passe dans les lignes mises en évidence dans l'image ci-dessus. Enregistrez le projet.

Allez dans le menu Outils et effectuez les sélections comme indiqué dans l'image ci-dessus.

Carte: ESP32 Wrover

Vitesse de téléchargement: 115 200

Schéma de partition: « Énorme application (3 Mo sans OTA) »

et choisissez le port auquel votre adaptateur FTDI est connecté.

Cliquez sur le bouton "Télécharger".

Maintenant, parfois, l'ESP32 ne démarre pas le téléchargement. Soyez donc prêt à appuyer sur le bouton RESET à l'arrière de l'ESP32 lorsque vous commencez à voir les caractères …---… apparaître dans la console pendant le téléchargement. Il commencera alors à télécharger.

Lorsque vous voyez « appuyez sur RST » sur la console, le téléchargement est terminé.

DÉBRANCHEZ IO0 de la terre. Déconnectez la ligne 3.3V entre l'adaptateur FTDI et l'ESP32.

La caméra ESP32 nécessite beaucoup de courant pour bien fonctionner. Connectez un adaptateur secteur 5V 2A aux broches 5V et GND de l'ESP32.

Ouvrez le moniteur série, réglez le débit en bauds sur 115200, puis observez le redémarrage de l'ESP32. Finalement, vous verrez l'URL du serveur.

Accédez à votre navigateur et entrez l'URL. Lorsque le site Web se charge, cliquez sur le bouton « Démarrer la diffusion » et le flux vidéo en direct devrait commencer. Si vous cochez la case « Floodlight », la LED du flash intégré doit s'allumer. Fais attention! C'EST LUMINEUX !

Étape 2: Construisez le robot

Construisez le robot
Construisez le robot

Vous avez besoin d'un châssis de robot à deux roues. N'importe qui fera l'affaire. Assemblez le châssis selon les instructions du fabricant.

Branchez ensuite le robot selon le schéma. Laissez les connexions de la batterie pour l'instant.

Le L293D est utilisé pour contrôler les moteurs. Notez que la demi-encoche sur la puce est VERS l'ESP32.

En règle générale, 6 broches sont nécessaires sur l'Arduino pour contrôler deux moteurs.

Ce robot ne nécessite que 4 broches et fonctionne toujours pleinement.

Les broches 1 et 9 sont connectées à la source 5V de l'Arduino, elles sont donc en permanence à l'état HAUT. Câblage du robot de cette façon signifie que nous avons besoin de deux broches de moins sur l'Arduino pour contrôler les moteurs.

Dans les directions directes, les broches INPUT sont définies sur LOW et les broches de modulation d'onde d'impulsion du moteur sont définies sur des valeurs comprises entre 0 et 255, 0 signifiant OFF et 255 signifiant la vitesse maximale.

Dans les directions inverses, les broches INPUT sont réglées sur HIGH et les valeurs PWM sont inversées. 0 signifie vitesse maximale et 255 signifie arrêt.

Décompressez et téléchargez l'esquisse ArduinoMotorControl sur l'Arduino Nano.

Étape 3: HÉ ! Attends une seconde! Pourquoi ai-je besoin d'un Arduino Nano ?

Vous vous dites probablement: « Hé ! Il y a au moins 4 broches IO disponibles sur la caméra ESP32. Pourquoi ne puis-je pas les utiliser pour contrôler les moteurs ?

Bon, c'est vrai, il y a des broches sur l'ESP32 comme suit:

IO0 - nécessaire pour mettre l'ESP32 en mode programmation

IO2 - disponible

IO4 - la LED Flash

IO12, IO13, IO14, IO15, IO16 - broches GPIO supplémentaires.

Si vous chargez simplement une esquisse de base sur l'ESP32 pour contrôler les broches avec des commandes PWM, elles fonctionnent.

CEPENDANT, une fois que vous avez activé les bibliothèques CAMERA dans vos croquis, ces broches ne sont plus disponibles.

La chose la plus simple à faire est donc d'utiliser simplement un Nano pour contrôler les moteurs via PWM et d'envoyer les commandes de l'ESP32 par communications série sur un fil (ESP32 U0T vers Arduino Rx0) et GND. Très simple.

Étape 4: câblez le joystick USB (facultatif)

Vous pouvez conduire le robot en envoyant des pressions de touche sur la page Web comme suit:

8 - En avant

9 - Avant droit

7 - Avant gauche

4 - Rotation à gauche

5 - Arrêter

1 - Inverser à gauche

2 - Inverser

3 - Inverser à droite.

L'esquisse du joystick USB traduit les entrées du joystick en touches et les envoie à l'interface Web qui les transmet à l'Arduino pour piloter le robot.

Connectez le joystick à l'Arduino LEONARDO comme suit:

Joystick de Léonard

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

Ouvrez le croquis usbJoyStick, sélectionnez Arduino Leonardo comme tableau et téléchargez-le sur le Leonardo.

Si vous voulez le tester, ouvrez simplement un éditeur de texte sur votre ordinateur, cliquez sur la souris dans la fenêtre et commencez à déplacer le joystick. Vous devriez voir les valeurs de 1 à 9 s'afficher dans la fenêtre

Étape 5: ALLONS ROULER

Prenez le temps de revoir votre câblage pour vous assurer que tout est correct.

Ensuite, connectez vos batteries comme suit.

1. Mettez la caméra ESP32 sous tension. Il faut quelques secondes pour démarrer le serveur Web.

2. Mettez l'Arduino Nano sous tension.

3. Mettez les moteurs sous tension.

Lancez votre navigateur et accédez à l'URL de l'ESP32.

Cliquez sur le bouton Démarrer la diffusion.

Cliquez avec votre souris quelque part dans l'écran du navigateur pour que l'écran soit maintenant le focus.

Commencez à conduire votre robot avec le joystick (ou le clavier).

J'ai trouvé que la taille d'image par défaut fonctionne bien pour diffuser la vidéo en direct de manière assez réactive via WiFi. Cependant, à mesure que vous augmentez la taille du cadre, le flux deviendra plus saccadé car vous essayez de diffuser des images plus grandes.

Il s'agit d'un projet stimulant qui vous donne l'opportunité de commencer à travailler avec le streaming vidéo en direct et à conduire un robot via WiFi. J'espère que vous l'avez trouvé amusant !

ALLEZ MAINTENANT ET FAITES QUELQUE CHOSE DE MERVEILLEUX !

Mise à jour de janvier 2020 - Les dernières photos montrent la version finale du robot, soudée et solidement montée sur le châssis.

Les trois commutateurs montés en façade sont les suivants:

Gauche - Batterie d'alimentation du moteur

Centre - Batterie Arduino

Droite - Batterie de l'appareil photo ESP32

Je pourrais utiliser une grosse batterie avec des transformateurs buck-boost (j'en utilise un pour l'ESP32 - c'est en bas à droite de la photo de face), mais par souci de simplicité, je ne garde que les 3 batteries.

Robot maintenant sur Access Point

Je trouve fastidieux de faire la démonstration de ce robot à l'extérieur de chez moi car mon réseau d'entreprise scolaire ne me permet pas d'y connecter le serveur web du robot. Comme solution, j'ai fait des recherches sur l'utilisation de la fonction de point d'accès du serveur Web ESP32. Cela demande un peu de travail, mais nécessite des modifications assez minimes de l'esquisse du robot principal pour que l'ESP32 diffuse sa propre adresse IP. Ce n'est pas aussi puissant qu'un hub wifi haut débit dédié (se bloque parfois si vous vous déplacez trop vite), mais cela fonctionne assez bien et maintenant je peux démontrer le robot où je veux sans avoir à le connecter à un réseau ! Une fois que le robot fonctionne, essayez de le convertir vous-même en point d'accès !

Étape 6: Détails sur la façon de modifier le code HTML/Javascript pour le serveur Web

Ce n'est pas nécessaire, mais j'ai eu quelques demandes.

J'ai fourni à ce document Google des détails sur l'utilisation de CyberChef pour effectuer des conversions entre HTML/Javascript et les représentations de tableau d'octets dans le fichier camera_index.h.

Conseillé: