Taula de continguts:

Cotxe RasbperryPi amb càmera FPV. Control per navegador web: 31 passos (amb imatges)
Cotxe RasbperryPi amb càmera FPV. Control per navegador web: 31 passos (amb imatges)

Vídeo: Cotxe RasbperryPi amb càmera FPV. Control per navegador web: 31 passos (amb imatges)

Vídeo: Cotxe RasbperryPi amb càmera FPV. Control per navegador web: 31 passos (amb imatges)
Vídeo: ПиКар-X. Автомобиль-робот на базе Raspberry Pi. Предоставлено SunFounder 2024, De novembre
Anonim
Image
Image

Construirem un cotxe de quatre rodes (la direcció serà similar a la d’un tanc) per girar un costat de les rodes girant amb una velocitat diferent a l’altra. Al cotxe es col·locarà la càmera en un suport especial on podrem canviar la posició de la càmera. El robot es controlarà mitjançant un navegador web (Chrome o Firefox a l’escriptori o firefox al telèfon mòbil), al navegador, rebrem vídeo de càmera (amb només 200 ms de latència) i, des del navegador, podem controlar els moviments del cotxe i posició de la càmera. Per fer més fàcil la comunicació, he utilitzat el sistema app.remoteme.org, també hi ha un control fora d’aquest tipus de cotxes, de manera que no heu d’escriure el vostre propi codi, però, per descomptat, podeu modificar noves possibilitats, etc.

Abans de connectar l'alimentació a la vostra PCB, comproveu totes les connexions

Pas 1: informació sobre App.remoteme.org

El sistema té tres parts

  • aplicació web: quan allotgeu les vostres pàgines web de control i enllaça totes les comunicacions
  • programa rasbperryPi: programa que envia vídeo, gestiona els scripts de Python
  • biblioteques on trobeu definicions de classe, funcions

Remoteme.org és un sistema ràpid. Enllaceu tots els vostres dispositius, hi podeu allotjar les vostres pàgines web, veure els vostres dispositius connectats. El sistema Remoteme.org s'ha creat per ajudar-vos a començar a fer els vostres projectes, sense preocupar-vos de les comunicacions de protocols, la idea principal és enviar missatges binaris entre diversos dispositius, com ara pàgines web, RasbeprryPI, arduino i scripts.

D’altra banda, Remoteme.org us proporciona un control complet dels vostres fitxers. Podeu modificar-lo fàcilment escrivint la vostra pròpia funcionalitat

En aquest tutorial us mostraré com fer un projecte impressionant sense escriure cap codi.

Al final d'aquest tutorial he posat enllaços útils que us ajudaran a entendre el sistema remoteme.org.

Pas 2: què cal:

Què cal
Què cal
Què cal
Què cal
  • Raspberry PI Zero W
  • Càmera dedicada
  • Adafruit PWM / Servo Driver de 16 canals de 12 canals - interfície I2C - PCA9685 o el seu clon
  • Dos mecanismes servo compatibles amb el suport de la càmera
  • Suport de càmera
  • Bateries: al tutorial hi ha dues possibilitats de connexió
  • Pont H TB6612FNG, per controlar la velocitat de la roda
  • Fitxers PCB àguila És fàcil convertir-lo en mètode de transferència tèrmica DC-DC
  • Redueix el mòdul del convertidor de corrent continu
  • Estoig del robot

Pas 3: connexions

Connexions
Connexions

Raspberry pi controla el mecanisme servo mitjançant el mòdul PWM i la velocitat del motor mitjançant el pont H que està connectat als pins RasbperryPi; l’entrada PWM al pont H es genera amb el mateix mòdul que he utilitzat per als servos (de les parts que menciono més amunt no calen convertidors lògics)

Pas 4: PCB

PCB
PCB
PCB
PCB

Podeu descarregar fitxers d'àguila PCB des d'aquí

Pas 5: Sortides de PCB

Sortides PCB
Sortides PCB
Sortides PCB
Sortides PCB
  1. L'entrada PWM per als motors d'accionament s'hauria de connectar al mòdul PWM de 15 i 16 pins (comproveu el rectangle verd a la imatge del mòdul PWM)
  2. Potència d'entrada per als motors d'accionament (comproveu amb quina tensió màxima poden treballar els vostres motors)
  3. La potència del mòdul RasbperryPi i PWM: ha de ser exactament
  4. Sortides del motor d'accionament (hi ha dues sortides perquè emparellarem els motors d'accionament)
  5. Potència dels mecanismes servo: també heu de comprovar quina tensió els és bona
  6. Saltar la seva actual potència des de la cinquena entrada també accionarà motors, de manera que no cal connectar res a l'entrada 2
  7. El pont si està present, el RasbperryPi serà alimentat des de la tercera entrada. Abans de posar el pont aquí, comproveu si les connexions estan bé. No voleu gravar el vostre RPi
  8. Permet soldar aquí els cables, ja que no necessitem convertidors lògics

Pas 6: Com funciona?

A RasbperryPi hi ha un script python que utilitza dues biblioteques

  • importar RPi. GPIO com a GPIO: per als pins 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notació BCM) que estan connectats al pont H
  • importar Adafruit_PCA9685 per al mòdul PWM

Els pins Rpi es connecten de la següent manera 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) i el mode de control del pont H (cap endavant, cap enrere, parada, interrupció curta). El pont H també necessita dos senyals PWM perquè puguem controlar la velocitat o la rotació del motor. Com que al projecte ja tenim controlador PWM (utilitzat per al servo), l’utilitzarem també per generar PWM per al pont H.

El mòdul PWM utilitza el protocol de comunicació I2C. He utilitzat treballar fora de la caixa Adafruit_PCA9685. biblioteca

Pas 7: Muntatge de cotxes: rodes

Muntatge de cotxes: rodes
Muntatge de cotxes: rodes
Muntatge de cotxes: rodes
Muntatge de cotxes: rodes

Començarem des de connectar els motors de transmissió a la caixa del cotxe. Els motors laterals esquerre / lateral es connecten junts, i els dos parells es connecten a algun cable d'alimentació que posteriorment es connectarà a la PCB. Nota important mentre es connecten les rodes dels motors per cada costat han de girar en la mateixa direcció.

Pas 8: alimentació (bateries de recàrrega AA) Opció 1/2

Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2
Alimentació (bateries de recàrrega AA) Opció 1/2

Escriuré dues possibilitats de potència El primer cotxe és a partir de bateries de recàrrega de 10xAA. A la darrera imatge he dibuixat els ponts de colors vermells que cal posar.

Pas 9: alimentació (bateries Li-Po 7.2V) Opció 2/2

Alimentació (bateries Li-Po 7.2V) Opció 2/2
Alimentació (bateries Li-Po 7.2V) Opció 2/2
Alimentació (bateries Li-Po 7.2V) Opció 2/2
Alimentació (bateries Li-Po 7.2V) Opció 2/2

I la segona opció és la bateria 7.2 LI-PO. En aquest cas, obtenim 3 tensions: 5v per Rpi i mòdul, 6V per servos i directament de les bateries, 7,2 volts per als motors d’acció. Vaig haver d’utilitzar dos mòduls de baixada

És millor l'opció 2 amb LI-PO:

  • Les bateries tenen una capacitat més gran: el cotxe conduirà més temps
  • Voltatge més gran per als motors de transmissió: el cotxe conduirà més ràpidament
  • Menys probabilitats que després de començar a localitzar-se els motors d’acció, puguem tenir una caiguda de tensió enorme i que es reiniciï RPI.

Pas 10: soldar

Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura

He posat al PCB alguns espaiadors per al mòdul PWM. No hi ha res a escriure, només cal veure imatges per soldar-ho tot junt

Pas 11: càmera

Càmera
Càmera

connectem la càmera, aquí s’escriu com centrar els mecanismes servo abans de muntar-los al suport de la càmera, però la forma més curta és comprovar manualment la posició màxima de rotació manualment i establir els servos a la posició central. Els servomecanismes centrats els posem al suport de la càmera a la posició central (la càmera apunta cap endavant com a la foto)

Pas 12: ajuntar peces de cotxes

Unir peces de cotxes
Unir peces de cotxes
Unir peces de cotxes
Unir peces de cotxes
Unir peces de cotxes
Unir peces de cotxes

Per al PCB he fet una petita taula de plexiglàs

Pas 13: Configuració de App.remoteme.org

Configuració de App.remoteme.org
Configuració de App.remoteme.org

He utilitzat el sistema app.remoteme.org gratuït que us ajuda a establir connexions i ja té scripts que necessitem

En aquest instructiu, només mostraré pas a pas què s’ha de fer per conduir el cotxe (aquí trobareu més detalls)

  • Canteu-vos a https://app.remoteme.org després de registrar-vos. Inicieu la sessió automàticament
  • obriu la pestanya de token a l'esquerra i, a continuació, feu clic a "nou testimoni" i proporcioneu un nom i feu clic a D'acord. Acabem de crear un nou testimoni (imatge a la pantalla)
  • en aquest exemple, el valor del testimoni és: ~ 1_ & p @ + BNnZ @ A + x8 (el vostre serà diferent;))

Pas 14: configuració de RasbperryPi

Configuració de RasbperryPi
Configuració de RasbperryPi

a consola de massilla (aquí com configurar el nostre RPi activar la comunicació I2c de la càmera)

git clonar git: //github.com/remoteme/remoteme.git

cd remoteme

python3.5 install.py

  • L’Instal·lador ens farà algunes preguntes per a totes les respostes que fem [Y] i confirmarem mitjançant [enter]
  • quan la instal·lació demanarà un testimoni, enganxem (majúscules + insereix) el testimoni copiat de l'aplicació i Enter
  • el nom per exemple Rpi
  • deviceId 1 Introduïu
  • després de la instal·lació: executeu el programa

./runme.sh

Pas 15: comprovació de les connexions

Comprovació de connexions
Comprovació de connexions

Tornem a

A la pestanya Dispositius veurem el nostre RPi connectat (la icona d’enllaç verd significa que RPi està connectat en aquest moment)

Pas 16: afegir script Python

Afegint script Python
Afegint script Python
Afegint script Python
Afegint script Python

Ara afegirem script Python, ja està a les plantilles, de manera que no hem de programar res.

A la pestanya Dispositius, obriu el menú RasbperryPi i trieu "Afegeix un script extern".

Quan aparegui una finestra nova, proporcioneu la informació de la imatge superior

No oblideu triar la plantilla "car4wd". Després d’aquests passos, remoteme.org afegirà script Python al RasbperryPi i el reiniciarà

Pas 17: comprovar si s'ha afegit correctament l'script de Python

Comprovació de si l’escriptura Python s’ha afegit correctament
Comprovació de si l’escriptura Python s’ha afegit correctament

A la pestanya Dispositius, s'hauria d'afegir un nou dispositiu de script Python i el seu ID de dispositiu és 2. A la pàgina web d'identificació d'aquest dispositiu s'enviaran missatges per controlar el cotxe

Pas 18: afegir una pàgina web a Control Car

Addició de pàgina web a Control Car
Addició de pàgina web a Control Car

a la pestanya Dispositius, feu clic a "Nou" i després a "Pàgina web". Simplement afegim un altre dispositiu: webPage l’utilitzarem per controlar el nostre cotxe. I com que hem utilitzat la plantilla "car4wdDesktop" a la pàgina web, ja hi ha fitxers gairebé a punt per utilitzar-los

Pas 19: configureu el dispositiu de pàgina web per controlar el cotxe 1/2

Configureu el dispositiu WebPage per controlar el cotxe 1/2
Configureu el dispositiu WebPage per controlar el cotxe 1/2

Amplieu la pàgina web a la pestanya del dispositiu i feu clic a index.html i després a Obre

Pas 20: configureu el dispositiu de pàgina web per controlar el cotxe 2/2

Configureu el dispositiu WebPage per controlar el cotxe 2/2
Configureu el dispositiu WebPage per controlar el cotxe 2/2

La finestra apareix, llavors hem de proporcionar DeviceId del nostre script Python al nostre cas DeviceId és 2. Canviem el lloc que es mostra a la imatge

Pas 21: obriu el centre de control del cotxe

Obre el Centre de Control de Cotxes
Obre el Centre de Control de Cotxes
Obre el Centre de Control de Cotxes
Obre el Centre de Control de Cotxes

Ara és hora d’obrir la nostra pàgina i veure com funciona. A la pestanya del dispositiu, feu clic a index.html i, a continuació, a "Obre a la pestanya nova" Per obtenir una visualització prèvia del vídeo Heu d'utilitzar el navegador Chrome o Firefox altres navegadors no admeten completament webRTC

Pas 22: Configuració de la càmera 1/2

Configuració de la càmera 1/2
Configuració de la càmera 1/2

Quan movem el ratolí cap a l'àrea de vídeo, la càmera hauria de canviar de posició i hauria de funcionar exactament com en els jocs FPS. Probablement no es mourà correctament

Pas 23: Configuració de la càmera 2/2

Configuració de la càmera 2/2
Configuració de la càmera 2/2

Obriu script.js (pestanya de dispositius amplieu la pàgina web i feu clic a script.js i obriu) i cerqueu el lloc que he mostrat a la pantalla

al meu cas, la posició central és 560 i 430 i la gamma de moviments és per a tots dos eixos 200

Heu d’experimentar amb aquests números per obtenir un centre de posició de la càmera i moviments suaus. Si utilitzeu aquest tutorial, només copieu els valors enganxats.

Pas 24: conduir 1/2

Conducció 1/2
Conducció 1/2

Si premeu la fletxa cap amunt al teclat, els indicadors haurien de canviar de posició i el cotxe hauria de conduir. Si premeu la fletxa cap amunt i el cotxe gira, haureu d'afegir / eliminar menys en llocs de la pantalla.

Després d'aquesta operació, després de prémer el fletxa cap amunt, el cotxe hauria de conduir cap endavant i el fletxa cap avall hauria de conduir cap enrere.

Pas 25: conduir 2/2

Conduir 2/2
Conduir 2/2

Ara gireu: toqueu la fletxa esquerra si el cotxe gira a la dreta Cal girar els cables (consulteu la imatge superior)

Si heu soldat aquests cables, podeu canviar-lo a script.jsjust canvieu l’ordre d’enviament de la velocitat dels motors, abans:

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));

despré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));

i ara heu de jugar amb menys com un pas abans perquè funcionés correctament;). Com probablement heu notat després de colpejar la fletxa cap amunt, el cotxe no circula a tota velocitat per fer que el cotxe es mogui més ràpidament, només cal que deixeu anar la fletxa cap amunt quan es troba en la posició màxima i manteniu premut de nou

Pas 26: Com funciona

La pàgina web envia missatges de missatge de 9 octets a un script Python en format:

  • 1 byte valor enter 1 byte
  • Posició de la càmera X enter de 2 bytes
  • Posició de la càmera enter de 2 bytes
  • Mode motor esquerre de 1 byte enter (3 = enrere, 1 = endavant, 2 = aturar)
  • Velocitat del motor enter de 1 byte esquerre
  • Mode de motor enter de 1 byte dret (3 = enrere, 1 = endavant, 2 = aturar)
  • Velocitat del motor enter de 1 byte

l'enviament del missatge es fa al fitxer script.js a la funció "sendNow ()"

a RasbperryPi python.py rep aquest missatge a la funció "onUserMessage"

Podeu comprovar-ho i jugar una mica per saber què passa.

descripció de les funcions de classe aquí

Pas 27: tauleta, direcció mòbil

Tauleta, direcció mòbil
Tauleta, direcció mòbil

Afegim una nova pàgina web de manera especial, com hem fet anteriorment, però ara triem la plantilla "car4wdMobile"

A continuació, configurem tot a script.js tal com vam fer per a la pàgina web de control d'escriptori. El format del missatge és exactament el mateix, de manera que no hem de canviar l'script python.py.

Pas 28: obriu la pàgina al telèfon mòbil

Obre la pàgina al telèfon mòbil
Obre la pàgina al telèfon mòbil
Obriu la pàgina al telèfon mòbil
Obriu la pàgina al telèfon mòbil

En lloc d’iniciar sessió al vostre compte des del mòbil, només heu d’escanejar qualsevol URL url QR.

detalls de QR aquí

Si el vostre control mòbil funciona quan RPi i mòbil estan al mateix wifi, però no si feu servir Internet mòbil, heu d'afegir un servidor de torn, com fer-ho, he escrit aquí

Pas 29: afegir Turn Server

Addició de Turn Server
Addició de Turn Server
Addició de Turn Server
Addició de Turn Server
Addició de Turn Server
Addició de Turn Server

De vegades (quan esteu darrere de NAT o alguns paràmetres del tallafoc) no podeu connectar el robot des d'una altra xarxa, llavors el vostre robot està connectat. No és un gran problema i després heu d'afegir el servidor de torn.

He provat el servidor de la companyia XIRSYS (és gratuït per a ús del desenvolupador) i mostraré com configurar el servidor de torns mitjançant el sistema XIRSYS

registre:

global.xirsys.net/dashboard/signup

a continuació, feu clic a "més" per afegir l'aplicació

a la dreta a "Credencials de gir estàtic" Teniu totes les dades que necessiteu. Copieu-lo al fitxer webrtc_streamer.conf per fer-ho, aneu a

amplieu RaspberryPi deivces

feu clic al fitxer webrtc_streamer.conf

feu clic a obre

i afegir informació

turn_server = turn_username =

turn_credential =

després d'acabar l'edició, hauríeu de tenir alguna cosa semblant a la pantalla.

a continuació, feu clic a Desa i reinicieu You Rpi, fent clic al menú del dispositiu RasbperryPi i trieu reiniciar

Després de reiniciar el programa RPi, podeu veure la visualització prèvia del vídeo al vostre telèfon mòbil, fins i tot si utilitzeu Internet mòbil.

Pas 30: direcció mòbil

Direcció mòbil
Direcció mòbil

al cercle 1, col·loquem el polze esquerre, a 2 a la dreta (no cal que sigui exactament en aquests punts): la pàgina web establirà la posició zero just després de tocar la pantalla i movent els polzes (conduir a l'esquerra, posició de la càmera dreta) Podeu controlar el teu cotxe

Pas 31: resum

Espero que us hagi agradat aquest tutorial, ja que he escrit abans en aquest tutorial, hi ha més detalls sobre com funciona sota el capó.

alguns enllaços:

remoteme.org - pàgina d'inici de remoteme.org allà Hi trobareu documentacions i tutorials

Pàgina de fans de FB: nova informació de la pàgina de fans de Facebook sobre remoteme.org

Youtube: alguns vídeos del projecte, tutorials

Salut, Maciek

Recomanat: