Table des matières:

Voiture RasbperryPi avec caméra FPV. Contrôle par navigateur Web : 31 étapes (avec images)
Voiture RasbperryPi avec caméra FPV. Contrôle par navigateur Web : 31 étapes (avec images)

Vidéo: Voiture RasbperryPi avec caméra FPV. Contrôle par navigateur Web : 31 étapes (avec images)

Vidéo: Voiture RasbperryPi avec caméra FPV. Contrôle par navigateur Web : 31 étapes (avec images)
Vidéo: Caméra sans fil WIFI à 5€ incroyable ! DIY Vidéosurveillance Raspberry Pi [Chmaude77 - EP03] 2024, Novembre
Anonim
Image
Image

Nous allons construire une voiture 4x4 - la direction sera similaire à celle d'un tank - pour tourner un côté des roues tournera à une vitesse différente de l'autre. À la voiture sera placé la caméra sur un support spécial où nous pouvons changer la position de la caméra. Le robot sera contrôlé par un navigateur Web (chrome ou firefox sur le bureau, ou firefox sur un téléphone portable), au niveau du navigateur, nous obtiendrons la vidéo de la caméra (avec seulement 200 ms de latence), et à partir du navigateur, nous pourrons contrôler les mouvements de la voiture et position de la caméra. Pour rendre la communication plus facile, j'ai utilisé le système app.remoteme.org, il existe également un contrôle prêt à l'emploi de ce type de voiture. nouvelles possibilités etc.

Avant de connecter l'alimentation à votre PCB, veuillez vérifier toutes les connexions

Étape 1: Quelques informations sur App.remoteme.org

Le système comporte trois parties

  • application Web - lorsque vous hébergez vos pages Web de contrôle et qu'elle relie toutes les communications
  • programme rasbperryPi - programme qui envoie de la vidéo, gère vos scripts python
  • bibliothèques où vous trouvez la classe, les définitions de fonctions

Remoteme.org est un système rapide Vous reliez tous vos appareils entre eux, Vous pouvez y héberger vos pages Web, voir vos appareils connectés. Le système Remoteme.org a été conçu pour vous aider à commencer à créer vos projets, sans vous soucier des communications de protocole, l'idée principale est d'envoyer des messages binaires entre divers appareils tels que des pages Web, RasbeprryPI, arduino et des scripts.

D'autre part, Remoteme.org vous donne un contrôle total sur vos fichiers, vous pouvez facilement le modifier en écrivant votre propre fonctionnalité

Dans ce tutoriel, je vais vous montrer comment créer un projet génial presque sans écrire de code.

A la fin de ce tutoriel, j'ai mis des liens utiles qui vous aideront à comprendre le système remoteme.org.

Étape 2: Ce qui est nécessaire:

Ce qui est necessaire
Ce qui est necessaire
Ce qui est necessaire
Ce qui est necessaire
  • Framboise PI Zero W
  • Caméra dédiée
  • Pilote PWM/Servo Adafruit 16 canaux 12 bits - Interface I2C - PCA9685 ou son clone
  • Deux servomécanismes compatibles avec le support de caméra
  • Support de caméra
  • Batteries - En tutoriel deux possibilités de branchement
  • Pont en H TB6612FNG, pour contrôler la vitesse de la roue
  • Fichiers PCB eagle Il est facile de le faire méthode de transfert thermiqueDC-DC
  • Module de convertisseur abaisseur CC
  • Cas de robot

Étape 3: Connexions

Connexions
Connexions

Mécanisme d'asservissement de contrôle Raspberry Pi via le module PWM et la vitesse du moteur par le pont H qui est connecté aux broches RasbperryPi, l'entrée PWM au pont H est générée par le même module que j'ai utilisé pour les servos (les parties que je mentionne ci-dessus ne nécessitent aucun convertisseur logique)

Étape 4: PCB

PCB
PCB
PCB
PCB

Vous pouvez télécharger les fichiers PCB eagle à partir d'ici. Les chemins sont gros, il est donc facile de le faire par la méthode de transfert thermique

Étape 5: sorties PCB

Sorties PCB
Sorties PCB
Sorties PCB
Sorties PCB
  1. Entrée PWM pour les moteurs d'entraînement Doit être connectée aux 15e et 16e broches du module PWM (vérifier le rectangle vert sur l'image du module PWM)
  2. Entrée de puissance pour les moteurs d'entraînement (vérifiez avec quelle tension maximale vos moteurs peuvent fonctionner)
  3. Alimentation pour RasbperryPi et module PWM - doit être exactement
  4. Sorties du moteur d'entraînement (il y a deux sorties car nous allons coupler les moteurs d'entraînement)
  5. Alimentation des servomécanismes - Vous devez également vérifier quelle tension est bonne pour eux
  6. Jumper sa puissance actuelle de la 5ème entrée alimentera également les moteurs d'entraînement, donc pas besoin de connecter quoi que ce soit à l'entrée 2
  7. Cavalier si présent RasbperryPi sera alimenté par la 3ème entrée - avant de mettre le cavalier ici, vérifiez si les connexions sont correctes - Vous ne voulez pas graver votre RPi
  8. Permet de souder ici les câbles car nous n'avons pas besoin de convertisseurs logiques

Étape 6: Comment ça va fonctionner

Chez RasbperryPi, il existe un script python qui utilise deux bibliothèques

  • importer RPi. GPIO en tant que GPIO - pour les broches 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notation BCM) qui sont connectées au pont en H
  • importer Adafruit_PCA9685 pour le module PWM

Les broches Rpi sont connectées comme suit 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) et le mode de contrôle du pont en H (avant, arrière, arrêt, courte pause). Le pont H a également besoin de deux signaux PWM afin que nous puissions contrôler la vitesse ou la rotation du moteur. Parce qu'au projet, nous avons déjà un contrôleur PWM (utilisé pour le servo), nous l'utiliserons également pour générer PWM pour le pont en H.

Le module PWM utilise le protocole de communication I2C. J'ai utilisé le travail hors de la boîte Adafruit_PCA9685. une bibliothèque

Étape 7: Assemblage de la voiture - Roues

Assemblage de voitures - Roues
Assemblage de voitures - Roues
Assemblage de voitures - Roues
Assemblage de voitures - Roues

Nous allons commencer par connecter les moteurs d'entraînement au boîtier de la voiture. Les moteurs du côté gauche/côté se connectent ensemble, et les deux paires, se connectent à un câble d'alimentation qui sera plus tard connecté au PCB. Remarque importante lors de la connexion des moteurs, les roues de chaque côté doivent tourner dans le même sens.

Étape 8: Alimentation (piles de recharge AA) Option 1/2

Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2
Alimentation (piles de recharge AA) Option 1/2

J'écrirai deux possibilités d'alimentation. La première est à partir de piles de recharge 10xAA. Enfin l'image que j'ai dessinée par des cavaliers de couleurs rouges qu'il faut mettre.

Étape 9: Alimentation (batteries Li-Po 7,2 V) Option 2/2

Alimentation (batteries Li-Po 7,2 V) Option 2/2
Alimentation (batteries Li-Po 7,2 V) Option 2/2
Alimentation (batteries Li-Po 7,2 V) Option 2/2
Alimentation (batteries Li-Po 7,2 V) Option 2/2

Et la deuxième option est la batterie 7.2 LI-PO. Dans ce cas, nous avons obtenu 3 tensions - 5v pour le Rpi et le module, 6V pour les servos et directement à partir des batteries 7,2 volts pour les moteurs d'entraînement. J'ai dû utiliser deux modules abaisseurs

L'option 2 avec LI-PO est meilleure:

  • Les batteries ont une plus grande capacité – la voiture roulera plus longtemps
  • Tension plus élevée pour les moteurs d'entraînement - la voiture roulera plus vite
  • Il est moins probable qu'une fois que les moteurs d'entraînement commencent à se localiser, nous puissions avoir une chute de tension énorme et des redémarrages RPI.

Étape 10: Souder

Soudure
Soudure
Soudure
Soudure
Soudure
Soudure
Soudure
Soudure

J'ai mis au PCB des entretoises pour module PWM. Il n'y a rien à écrire, il suffit de vérifier les images comment tout souder ensemble

Étape 11: Appareil photo

Caméra
Caméra

nous connectons la caméra, ici est écrit comment centrer les mécanismes d'asservissement avant de les monter dans le support de caméra, mais le moyen le plus court est de vérifier doucement manuellement la position de rotation maximale et de régler les servos en position centrale. Ces mécanismes d'asservissement centrés que nous mettons dans le support de l'appareil photo en position centrale (l'appareil photo pointe tout droit comme sur la photo)

Étape 12: Assembler les pièces des voitures

Assembler des pièces de voitures
Assembler des pièces de voitures
Assembler des pièces de voitures
Assembler des pièces de voitures
Assembler des pièces de voitures
Assembler des pièces de voitures

Pour PCB, j'ai fait une petite table en plexiglas

Étape 13: Configuration de App.remoteme.org

Configuration de App.remoteme.org
Configuration de App.remoteme.org

J'ai utilisé le système gratuit app.remoteme.org, il vous aide à établir des connexions, et il contient déjà des scripts dont nous avons besoin

À ce instructable, je vais juste montrer étape par étape ce qui doit être fait pour rendre la conduite automobile (ici vous trouverez plus de détails)

  • Inscrivez-vous sur https://app.remoteme.org après votre inscription Vous serez automatiquement connecté
  • ouvrez l'onglet Jeton à gauche, puis cliquez sur "nouveau jeton", fournissez un nom et cliquez sur OK, nous venons de créer un nouveau jeton (image à l'écran)
  • dans cet exemple, la valeur du jeton est: ~1_&p@+BNnZ@A+x8 (le vôtre sera différent;))

Étape 14: Configuration de RasbperryPi

Configuration de RasbperryPi
Configuration de RasbperryPi

à la console putty (ici comment configurer notre RPi activer la communication I2c de la caméra)

git clone git://github.com/remoteme/remoteme.git

cd à distance

python3.5 install.py

  • L'installateur nous posera quelques questions pour toutes nos réponses [Oui] et confirmera par [enter]
  • lorsque l'installation demandera un jeton, nous collons (maj + insérer) le jeton copié à partir de l'application et entrez
  • le nom par exemple Rpi
  • DeviceId 1 Entrer
  • après l'installation - exécuter le programme

./runme.sh

Étape 15: Vérification des connexions

Vérification des connexions
Vérification des connexions

Revenons à

Dans l'onglet Appareils, nous verrons notre RPi connecté (l'icône de lien vert signifie que RPi est connecté en ce moment)

Étape 16: Ajout d'un script Python

Ajout d'un script Python
Ajout d'un script Python
Ajout d'un script Python
Ajout d'un script Python

Maintenant, nous allons ajouter un script python, il est déjà dans les modèles, nous n'avons donc rien à programmer.

Dans l'onglet Appareils, ouvrez le menu RasbperryPi et choisissez "Ajouter un script externe".

Lorsqu'une nouvelle fenêtre apparaît, fournissez les informations comme sur l'image ci-dessus

N'oubliez pas de choisir le modèle "car4wd". Après ces étapes, remoteme.org ajoutera le script python à notre RasbperryPi et le redémarrera

Étape 17: Vérifier si le script Python a été ajouté avec succès

Vérifier si le script Python a été ajouté avec succès
Vérifier si le script Python a été ajouté avec succès

Dans l'onglet Périphériques, un nouveau périphérique de script python doit être ajouté et son ID d'appareil est 2. Dans cette page Web d'ID d'appareil enverra des messages à la voiture de contrôle

Étape 18: Ajout d'une page Web à Control Car

Ajout d'une page Web à Control Car
Ajout d'une page Web à Control Car

dans l'onglet Périphériques, cliquez sur "Nouveau" puis sur "Page Web". Nous ajoutons simplement un autre appareil - la page Web nous l'utiliserons pour contrôler notre voiture. Et parce que nous avons utilisé le modèle "car4wdDesktop" sur la page Web, les fichiers sont déjà presque prêts à être utilisés

Étape 19: Configurez le périphérique de page Web pour contrôler la voiture 1/2

Configurer le périphérique de page Web pour contrôler la voiture 1/2
Configurer le périphérique de page Web pour contrôler la voiture 1/2

Développez la page Web dans l'onglet de l'appareil et cliquez sur index.html puis sur Ouvrir

Étape 20: Configurer le périphérique de page Web pour contrôler la voiture 2/2

Configurer le périphérique de page Web pour contrôler la voiture 2/2
Configurer le périphérique de page Web pour contrôler la voiture 2/2

La fenêtre apparaît alors nous devons fournir le deviceId de notre script python dans notre cas, deviceId est 2. Modifions l'endroit indiqué dans l'image

Étape 21: Ouvrez le centre de contrôle de voiture

Centre de contrôle de voiture ouvert
Centre de contrôle de voiture ouvert
Centre de contrôle de voiture ouvert
Centre de contrôle de voiture ouvert

Il est maintenant temps d'ouvrir notre page et de voir comment cela fonctionne. Dans l'onglet de l'appareil, cliquez sur index.html, puis sur "Ouvrir dans un nouvel onglet" Pour obtenir un aperçu vidéo, vous devez utiliser le navigateur Chrome ou Firefox. Les autres navigateurs ne prennent pas entièrement en charge webRTC

Étape 22: Configuration de la caméra 1/2

Configuration de la caméra 1/2
Configuration de la caméra 1/2

Lorsque nous déplaçons la souris sur la zone vidéo, la caméra doit changer de position et fonctionner exactement comme dans les jeux FPS. Il ne bougera probablement pas correctement

Étape 23: Configuration de la caméra 2/2

Configuration de la caméra 2/2
Configuration de la caméra 2/2

Ouvrez script.js (onglet Périphériques développez la page Web puis cliquez sur script.js puis ouvrez) et trouvez l'endroit que j'ai montré à l'écran

à mon cas, la position centrale est de 560 et 430 et la plage de mouvements est pour les deux axes 200

Vous devez expérimenter avec ces nombres afin d'obtenir le centre de la position de la caméra et des mouvements fluides. Si vous avez utilisé ce didacticiel, copiez simplement les valeurs données.

Étape 24: Conduite 1/2

Conduite 1/2
Conduite 1/2

Si vous appuyez sur la flèche vers le haut du clavier, les jauges doivent changer de position et la voiture doit rouler. Si vous appuyez sur la flèche « haut » et que la voiture tourne, vous devez ajouter/supprimer des moins à certains endroits de l'écran.

Après cette opération, après avoir appuyé sur la flèche « haut », la voiture doit avancer et la voiture à flèche vers le bas doit reculer.

Étape 25: Conduite 2/2

Conduite 2/2
Conduite 2/2

Maintenant, tournez - appuyez sur la flèche gauche si la voiture tourne à droite Vous devez retourner les câbles (vérifiez l'image ci-dessus)

Si vous soudez ces câbles, vous pouvez le modifier sur script.jsjustez l'ordre d'envoi de la vitesse des moteurs, avant:

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed())); pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

après:

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

et maintenant, vous devez jouer avec les inconvénients comme une étape avant de le faire fonctionner correctement;). et appuyez et maintenez à nouveau

Étape 26: Comment ça marche

La page Web envoie des messages de 9e octet au script python au format:

  • 1 octet un octet valeur entière 1
  • 2 octets entier X position de la caméra
  • 2 octets entier Y position de la caméra
  • 1 octet entier gauche mode moteur (3= arrière, 1= avant, 2=arrêt)
  • 1 octet entier vitesse moteur gauche
  • 1 octet entier mode moteur droit (3= arrière, 1= avant, 2=arrêt)
  • 1 octet entier droit vitesse du moteur

l'envoi du message est effectué dans le fichier script.js à la fonction "sendNow()"

à RasbperryPi python.py reçoit ce message dans la fonction "onUserMessage"

Vous pouvez le vérifier et jouer un peu pour que vous sachiez ce qui se passe.

Description des fonctions de classe ici

Étape 27: Tablette, direction mobile

Tablette, Pilotage Mobile
Tablette, Pilotage Mobile

Nous ajoutons une nouvelle page Web exactement comme nous l'avons fait la fois précédente, mais maintenant nous choisissons le modèle "car4wdMobile"

Ensuite, nous configurons tout dans script.js comme nous l'avons fait pour la page Web de contrôle du bureau. Le format du message est exactement le même, nous n'avons donc pas à modifier le script python.py.

Étape 28: Ouvrir la page sur le téléphone portable

Ouvrir la page sur le téléphone portable
Ouvrir la page sur le téléphone portable
Ouvrir la page sur le téléphone portable
Ouvrir la page sur le téléphone portable

Au lieu de vous connecter à votre compte à partir d'un mobile, scannez simplement l'URL QR Anymous.

détails du QR ici

Si votre contrôle mobile fonctionne lorsque RPi et mobile sont sur le même wifi mais ne le fait pas si vous utilisez Internet mobile, vous devez ajouter un serveur tournant, comment faire cela, j'ai écrit ici

Étape 29: Ajout du serveur Turn

Ajout de Turn Server
Ajout de Turn Server
Ajout de Turn Server
Ajout de Turn Server
Ajout de Turn Server
Ajout de Turn Server

Parfois (lorsque vous êtes derrière NAT ou certains paramètres de pare-feu), vous ne pouvez pas connecter votre robot à partir d'un autre réseau, alors votre robot est connecté. Ce n'est pas un gros problème et vous devez ensuite ajouter un serveur de tour.

J'ai testé le serveur de la société XIRSYS (c'est gratuit pour les développeurs) et je vais montrer comment configurer le serveur tournant à l'aide du système XIRSYS

S'inscrire:

global.xirsys.net/dashboard/signup

puis cliquez sur "plus" pour ajouter une application

à droite sous « crédits de virage statiques » Vous avez toutes les données dont vous avez besoin. Copiez-le dans le fichier webrtc_streamer.conf pour ce faire, allez sur

étendre les appareils RaspberryPi

cliquez sur le fichier webrtc_streamer.conf

cliquez sur ouvrir

et ajouter des informations

turn_server=turn_username=

turn_credential=

après avoir terminé l'édition, vous devriez avoir quelque chose comme à l'écran.

puis cliquez sur Enregistrer et redémarrez You Rpi, en cliquant sur le menu sur l'appareil RasbperryPi et choisissez redémarrer

Une fois le programme RPi redémarré, vous pouvez voir un aperçu vidéo sur votre téléphone mobile même si vous utilisez Internet mobile.

Étape 30: Pilotage mobile

Direction mobile
Direction mobile

au cercle 1, nous plaçons le pouce gauche, à 2 droite - pas besoin d'être exactement à ce point - la page Web définira la position zéro juste après que vous ayez touché l'écran, et en déplaçant vos pouces (conduite à gauche, position de la caméra à droite) Vous pouvez contrôler ta voiture

Étape 31: Résumé

J'espère que vous avez aimé ce didacticiel, comme je l'ai écrit auparavant dans ce didacticiel, vous trouverez plus de détails sur son fonctionnement sous le capot.

quelques liens:

remoteme.org - page d'accueil de remoteme.org Vous y trouvez des documentations et des tutoriels

FB fanpage - Facebook fanpage informations les plus récentes sur remoteme.org

Youtube - quelques vidéos de projet, tutoriels

À votre santé, Maciek

Conseillé: