INHOUDSOPGAWE:

RasbperryPi -motor met FPV -kamera. Beheer deur die webblaaier: 31 stappe (met foto's)
RasbperryPi -motor met FPV -kamera. Beheer deur die webblaaier: 31 stappe (met foto's)

Video: RasbperryPi -motor met FPV -kamera. Beheer deur die webblaaier: 31 stappe (met foto's)

Video: RasbperryPi -motor met FPV -kamera. Beheer deur die webblaaier: 31 stappe (met foto's)
Video: "Smart Technologies": Robotica, Wearables, Augmented Reality, Virtual Reality, Smart Sensoring 2024, November
Anonim
Image
Image

Ons bou 'n vierwielmotor - die stuur sal dieselfde wees as in 'n tenk - om een kant van die wiele te draai, draai dit met 'n ander spoed as die ander. By die motor sal die kamera op 'n spesiale houer geplaas word, waar ons die kamera se posisie kan verander. Die robot word beheer deur 'n webblaaier (chroom of firefox op die tafelblad, of firefox op die selfoon), in die blaaier, ons kry kameravideo (met slegs 200 ms vertraging), en vanuit die blaaier kan ons die motorbewegings en kameraposisie. Om die kommunikasie te vergemaklik, het ek die app.remoteme.org -stelsel gebruik, en daar word ook outomaties beheer van hierdie soort motors gedoen, dus hoef u nie u eie kode te skryf nie, maar u kan natuurlik die skrifte verander nuwe moontlikhede ens.

Kontroleer alle verbindings voordat u krag aan u PCB koppel

Stap 1: 'n bietjie inligting oor App.remoteme.org

Die stelsel bestaan uit drie dele

  • webtoepassing - as u u beheerwebblaaie huisves en alle kommunikasie verbind word
  • rasbperryPi -program - 'n program wat video stuur en u python -skrifte bestuur
  • biblioteke waar u klasse, funksies definisies vind

Remoteme.org is vinnig stelsel U skakel al u toestelle saam, u kan u webblaaie daar huisves, u gekoppelde toestelle sien. Remoteme.org -stelsel is gemaak om u te help om u projekte te begin maak, sonder om bekommerd te wees oor protokolkommunikasie, die belangrikste idee is om binêre boodskappe te stuur tussen verskillende toestelle, soos 'n webblad, RasbeprryPI, arduino en skrifte.

Aan die ander kant gee Remoteme.org u volle beheer oor u lêers, u kan dit maklik verander deur u eie funksies te skryf

In hierdie handleiding sal ek jou wys hoe om 'n wonderlike projek volmaak te maak sonder om enige kode te skryf.

Aan die einde van hierdie tutoriaal het ek nuttige skakels geplaas wat u sal help om die remoteme.org -stelsel te verstaan.

Stap 2: Wat is nodig:

Wat is nodig
Wat is nodig
Wat is nodig
Wat is nodig
  • Framboos PI Zero W
  • Toegewyde kamera
  • Adafruit 16 -kanaals 12 -bis PWM/Servo -bestuurder - I2C -koppelvlak - PCA9685 of die kloon daarvan
  • Twee servomeganismes verenigbaar met die kamerahouer
  • Kamera houer
  • Batterye - In die tutoriaal twee verbindingsmoontlikhede
  • H brug TB6612FNG, vir die bestuur van die wiele
  • PCB-arendlêers Dit is maklik om dit termiese oordragmetode DC-DC te maak
  • Step Down -omskakelingsmodule DC
  • Robottas

Stap 3: Verbindings

Verbindings
Verbindings

Framboos pi -bedienings servomeganisme deur middel van PWM -module en motorsnelheid deur H -brug wat aan RasbperryPi -penne gekoppel is, PWM -invoer na H -brug word gegenereer deur dieselfde module as wat ek vir servo's gebruik het (watter dele wat ek hierbo noem, is nie nodig nie)

Stap 4: PCB

PCB
PCB
PCB
PCB

U kan PCB -arendlêers van hier af aflaai. Paaie is vet, so dit is maklik om dit deur middel van termiese oordragmetode te maak

Stap 5: PCB -uitsette

PCB -uitsette
PCB -uitsette
PCB -uitsette
PCB -uitsette
  1. PWM -invoer vir dryfmotors Moet gekoppel word aan PWM -module 15de en 16de penne (kyk groen reghoek by PWM -modulebeeld)
  2. Kraginvoer vir dryfmotors (kyk met watter maksimum spanning u motors kan werk)
  3. Krag vir RasbperryPi en PWM module - moet presies wees
  4. Aangedrewe motoruitsette (daar is twee uitsette omdat ons aandrywingsmotors sal koppel)
  5. Servomeganismes krag - ook U moet kyk watter spanning goed is vir hulle
  6. Die huidige krag van die 5de ingang sal die motor ook aandryf, dus hoef u niks aan ingang 2 te koppel nie
  7. Jas, indien teenwoordig, RasbperryPi sal die krag van die derde ingang hê - voordat die jumper hier geplaas word, kyk of die verbindings reg is - u wil nie u RPi verbrand nie
  8. Laat kabels hier soldeer, aangesien ons geen logiese omsetters nodig het nie

Stap 6: Hoe dit gaan werk

By RasbperryPi is daar 'n python -skrip wat twee biblioteke gebruik

  • voer RPi. GPIO in as GPIO-vir penne 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM-notasie) wat aan die H-brug gekoppel is
  • voer Adafruit_PCA9685 in vir PWM -module

Rpi-penne word soos volg verbind: 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) en die beheermodus van H-brug (vorentoe, agteruit, stop, kort onderbreking). H brug benodig ook twee PWM seine sodat ons die snelheid of motorrotasie kan beheer. Omdat ons by die projek reeds 'n PWM -beheerder het (gebruik vir servo), sal ons dit ook gebruik om PWM vir H -brug te genereer.

Die PWM -module gebruik I2C -kommunikasieprotokol. Ek het gebruik om uit die boks te werk Adafruit_PCA9685. biblioteek

Stap 7: Montering van motors - wiele

Montering van motors - wiele
Montering van motors - wiele
Montering van motors - wiele
Montering van motors - wiele

Ons begin met die aansluit van dryfmotors na die motorkas. Motors aan die linker- en sykant verbind aan mekaar, en albei word gekoppel aan 'n kragkabel wat later aan die PCB gekoppel sal word. Belangrike opmerking tydens die koppeling van motors moet wiele aan elke kant in dieselfde rigting draai.

Stap 8: krag (AA herlaai batterye) Opsie 1/2

Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2
Krag (AA herlaaibatterye) Opsie 1/2

Ek sal twee moontlikhede van krag skryf. Die eerste motor is van 10xAA herlaai batterye. Laastens het ek 'n prentjie getrek deur rooi kleure, wat geplaas moet word.

Stap 9: Krag (Li-Po 7.2V-batterye) Opsie 2/2

Krag (Li-Po 7.2V-batterye) Opsie 2/2
Krag (Li-Po 7.2V-batterye) Opsie 2/2
Krag (Li-Po 7.2V-batterye) Opsie 2/2
Krag (Li-Po 7.2V-batterye) Opsie 2/2

En die tweede opsie is 'n 7,2 LI-PO-battery. In hierdie geval het ons 3 spannings - 5v vir Rpi en module, 6V vir servo's en direk van batterye 7,2 volt vir dryfmotors. Ek moes twee afstapmodules gebruik

Opsie 2 met LI-PO is beter:

  • Batterye het 'n groter kapasiteit - die motor sal langer ry
  • Groter spanning vir dryfmotors - die motor sal vinniger ry
  • Minder waarskynlikheid dat ons, nadat dryfmotors begin opspoor het, 'n groot spanningsval kan hê en RPI weer begin.

Stap 10: Soldeer

Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer
Soldeer

Ek het 'n paar afstandhouers vir die PWM -module op die PCB gesit. Daar is niks om te skryf nie, kyk na die beelde om alles saam te soldeer

Stap 11: kamera

Kamera
Kamera

Ons sluit die kamera aan, hier word geskryf hoe om die servomeganismes te sentreer voordat u dit in die kamerahouer monteer, maar die kortste manier is om die maksimum rotasieposisie saggies te kontroleer en servo's in die middelposisie te stel. Hierdie gesentreerde servomeganismes plaas ons in die kamerahouer in die middelste posisie (kamera wys reguit vorentoe, soos op die foto)

Stap 12: Onderdele van motors saamvoeg

Sit motors se onderdele bymekaar
Sit motors se onderdele bymekaar
Sit motors se onderdele bymekaar
Sit motors se onderdele bymekaar
Sit motors se onderdele bymekaar
Sit motors se onderdele bymekaar

Vir PCB het ek 'n klein plexiglas tafel gemaak

Stap 13: App.remoteme.org -opset

App.remoteme.org -opset
App.remoteme.org -opset

Ek het 'n gratis app.remoteme.org -stelsel gebruik, dit help u om verbindings te maak, en dit bevat reeds skrifte wat ons nodig het

In hierdie instruksies sal ek net stap vir stap wys wat u moet doen om motor te bestuur (hier vind u meer besonderhede)

  • Sing op https://app.remoteme.org na aanmelding U sal outomaties aangemeld word
  • maak die tabblad Token aan die linkerkant oop, klik dan op 'nuwe token', gee 'n naam en klik op OK, ons het pas 'n nuwe teken gemaak (prent op die skerm)
  • in hierdie voorbeeld is die tokenwaarde: ~ 1_ & p@+BNnZ@A+x8 (joune sal anders wees;))

Stap 14: RasbperryPi -konfigurasie

RasbperryPi -opstelling
RasbperryPi -opstelling

op stopverfkonsole (hier is hoe ons ons RPi -kamera -I2c -kommunikasie kan opstel)

git kloon git: //github.com/remoteme/remoteme.git

cd -afstandbeheer

python3.5 install.py

  • Instalator sal ons 'n paar vrae stel vir alles wat ons reageer en bevestig deur [enter]
  • wanneer die installasie vra vir die teken, plak ons (shift+insert) token wat uit die toepassing gekopieer is en Enter
  • die naam byvoorbeeld Rpi
  • deviceId 1 Voer in
  • na die installasie - voer die program uit

./runme.sh

Stap 15: Kontroleer verbindings

Kontroleer verbindings
Kontroleer verbindings

Kom ons gaan terug na

Op die oortjie -toestelle sal ons ons gekoppelde RPi sien (groen skakel -ikoon beteken dat RPi nou verbind is)

Stap 16: Voeg Python Script by

Voeg Python Script by
Voeg Python Script by
Voeg Python Script by
Voeg Python Script by

Nou sal ons 'n python -script byvoeg, dit is reeds by die sjablone, sodat ons niks hoef te programmeer nie.

Open die RasbperryPi -kieslys op die oortjie -toestelle en kies 'Voeg eksterne skrif by'.

As 'n nuwe venster verskyn, verskaf inligting soos op die prent hierbo

Moenie vergeet om die sjabloon "car4wd" te kies nie. Na hierdie stappe sal remoteme.org 'n python -script by ons RasbperryPi voeg en dit weer begin

Stap 17: Kontroleer of Python -script suksesvol bygevoeg is

Kontroleer of Python -script suksesvol bygevoeg is
Kontroleer of Python -script suksesvol bygevoeg is

Op die oortjie -oortjie moet 'n nuwe python -scripttoestel bygevoeg word, en die deviceId daarvan is 2. In hierdie toestel -ID -webbladsy sal boodskappe na die motor gestuur word

Stap 18: Voeg webblad by Control Car

Voeg webblad by Control Car
Voeg webblad by Control Car

Klik op die oortjie "New" en dan op "Webbladsy". Ons het net 'n ander toestel bygevoeg - 'n webbladsy, ons sal dit gebruik om ons motor te beheer. En omdat ons die sjabloon "car4wdDesktop" op die webblad gebruik het, is lêers reeds byna gereed om te gebruik

Stap 19: Stel die webbladtoestel op om die motor 1/2 te beheer

Stel webbladsy -toestel op om motor 1/2 te beheer
Stel webbladsy -toestel op om motor 1/2 te beheer

Brei webbladsy uit op die oortjie toestel en klik op index.html en dan oop

Stap 20: Stel die webbladtoestel op om die motor 2/2 te beheer

Stel die webbladsy -toestel op om die motor 2/2 te beheer
Stel die webbladsy -toestel op om die motor 2/2 te beheer

Die venster verskyn, dan moet ons deviceId van ons python -script verskaf by ons case deviceId is 2. Kom ons verander die plek in die prentjie

Stap 21: Maak die motorbeheersentrum oop

Maak die motorbeheersentrum oop
Maak die motorbeheersentrum oop
Maak die motorbeheersentrum oop
Maak die motorbeheersentrum oop

Dit is nou tyd om ons bladsy oop te maak en te sien hoe dit werk. Klik op die apparaat -oortjie op index.html en dan op "Maak oop in nuwe oortjie" Om 'n voorskou van video te kry, moet u Chrome of Firefox -blaaier gebruik, ander blaaier ondersteun webRTC nie volledig nie

Stap 22: Kamerakonfigurasie 1/2

Kamera -opstelling 1/2
Kamera -opstelling 1/2

As ons die muis na die videogebied beweeg, moet die kamera van posisie verander, en dit moet presies werk soos in FPS -speletjies. Dit sal waarskynlik nie reg beweeg nie

Stap 23: Kamerakonfigurasie 2/2

Kamera -opstelling 2/2
Kamera -opstelling 2/2

Maak script.js oop (tabblad toestelle brei webblad uit, klik dan op script.js en maak oop) en vind die plek wat ek op die skerm gewys het

in my geval is die middelste posisie 560 en 430, en die bewegingsreeks is vir beide as 200

U moet met hierdie getalle eksperimenteer, sodat u die kameraposisiesentrum en gladde bewegings kry. As u hierdie handleiding gebruik, kopieer u slegs gegewe waardes

Stap 24: Ry 1/2

Ry 1/2
Ry 1/2

As u die pyltjie op die sleutelbord ingedruk het, moet meters van posisie verander en die motor moet ry. As u op die pyltjie "op" druk en die motor draai, moet u minus byvoeg/verwyder op plekke op die skerm.

Na hierdie operasie moet die pyltjie na bo getref word, en die pyltjie af moet agteruit ry.

Stap 25: Ry 2/2

Ry 2/2
Ry 2/2

Draai nou - druk die pyl na links as die motor regs draai. U moet die kabels draai (kyk na die prent hierbo)

As u hierdie kabels soldeer, kan u dit verander op script.jsjust volgorde van stuur van motorsnelheid verander, voor:

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

na:

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

en nou moet u net soos 'n stap met minusse speel om dit korrek te laat werk;). en hou dit weer ingedruk

Stap 26: Hoe werk dit

Die webwerf stuur 'n 9-byte-boodskap na die python-script in die volgende formaat:

  • 1 byte een byte heelgetalwaarde 1
  • 2 grepe heelgetal X kameraposisie
  • 2 grepe heelgetal Y kameraposisie
  • 1 byte heelgetal linkermotormodus (3 = agteruit, 1 = vorentoe, 2 = stop)
  • 1 byte heel getal motorsnelheid
  • 1 byte heelgetal regtermotormodus (3 = agteruit, 1 = vorentoe, 2 = stop)
  • 1 byte heelgetal regter motorsnelheid

die stuur van 'n boodskap word gemaak by die script.js -lêer by die funksie "sendNow ()"

by RasbperryPi kry python.py hierdie boodskap in funksie "onUserMessage"

U kan dit kyk en 'n bietjie speel sodat u weet wat aan die gang is.

klas funksies beskrywing hier

Stap 27: tablet, mobiele stuur

Tablet, mobiele stuur
Tablet, mobiele stuur

Ons voeg 'n nuwe webblad by soos ons die vorige keer gedoen het, maar nou kies ons die sjabloon "car4wdMobile"

Vervolgens konfigureer ons alles in script.js soos ons gedoen het vir tafelbladbeheerwebblad Die boodskapformaat is presies dieselfde, sodat ons nie die python.py -script hoef te verander nie.

Stap 28: Maak bladsy oop by selfoon

Maak bladsy oop by selfoon
Maak bladsy oop by selfoon
Maak bladsy oop by selfoon
Maak bladsy oop by selfoon

In plaas daarvan om vanaf u selfoon by u rekening aan te meld, moet u slegs 'n QR -URL soek.

besonderhede van QR hier

As u selfoonbeheer werk as RPi en selfoon op dieselfde wifi is, maar nie as u mobiele internet gebruik nie, moet u 'n draai -bediener byvoeg, hoe doen ek dit wat ek hier geskryf het

Stap 29: Voeg Turn Server by

Voeg Turn Server by
Voeg Turn Server by
Voeg Turn Server by
Voeg Turn Server by
Voeg Turn Server by
Voeg Turn Server by

Soms (as u agter NAT of sommige firewall -instellings is), kan u u robot nie van 'n ander netwerk koppel nie, dan is u robot gekoppel. Dit is nie 'n groot probleem nie, en dan moet u 'n draai -bediener byvoeg.

Ek het die bediener van die XIRSYS -onderneming getoets (dit is gratis vir ontwikkelaarsgebruik) en ek sal wys hoe om die bediener met die XIRSYS -stelsel op te stel

registreer:

global.xirsys.net/dashboard/signup

klik dan op "plus" om die toepassing by te voeg

regs onder "static turn credentials" U het alle data wat u benodig. Kopieer dit na die lêer webrtc_streamer.conf om dit te doen, gaan na

brei RaspberryPi -afdelings uit

klik op lêer webrtc_streamer.conf

klik oop

en voeg inligting by

turn_server = turn_username =

turn_credential =

nadat u klaar is met redigering, moet u iets soos die skerm hê.

klik dan op Stoor en herbegin U Rpi deur op die menu op die RasbperryPi -toestel te klik en herbegin te kies

Nadat die RPi -program herbegin is, kan u die video -voorskou op u selfoon sien, selfs as u 'n mobiele internet gebruik.

Stap 30: Mobiele stuur

Mobiele stuur
Mobiele stuur

in sirkel 1 plaas ons die linker duim, by 2 regs - hoef nie presies op hierdie punte te wees nie - die webblad sal die nulposisie stel net nadat u die skerm raak, en deur u duime te beweeg (links ry, regter kameraposisie) kan u beheer jou kar

Stap 31: Opsomming

Ek hoop dat u van hierdie tutoriaal gehou het, soos ek voorheen in hierdie tutoriaal geskryf het, meer inligting oor hoe dit onder die enjinkap werk.

'n paar skakels:

remoteme.org - tuisblad van remoteme.org daar U vind dokumentasies en tutoriale

FB fanpage - Facebook fanpage nuutste inligting oor remoteme.org

Youtube - 'n paar video's van projekte, tutoriale

Groete, Maciek

Aanbeveel: