Turinys:

„RasbperryPi“automobilis su FPV kamera. Valdymas naudojant žiniatinklio naršyklę: 31 žingsnis (su paveikslėliais)
„RasbperryPi“automobilis su FPV kamera. Valdymas naudojant žiniatinklio naršyklę: 31 žingsnis (su paveikslėliais)

Video: „RasbperryPi“automobilis su FPV kamera. Valdymas naudojant žiniatinklio naršyklę: 31 žingsnis (su paveikslėliais)

Video: „RasbperryPi“automobilis su FPV kamera. Valdymas naudojant žiniatinklio naršyklę: 31 žingsnis (su paveikslėliais)
Video: LNU7210R 2MP Night IR Car 2024, Liepa
Anonim
Image
Image

Mes sukursime 4wd automobilį - vairas bus panašus kaip bake - pasukti vieną ratų pusę suksis skirtingu greičiu nei kitas. Prie automobilio kamera bus padėta ant specialaus laikiklio, kuriame galėsime pakeisti kameros padėtį. Robotas bus valdomas žiniatinklio naršykle („Chrome“arba „Firefox“darbalaukyje arba „Firefox“mobiliajame telefone), naršyklėje, Gausime vaizdo kamerą (tik 200 ms delsos), o iš naršyklės galime valdyti automobilio judesius ir kameros padėtis. Kad bendravimas būtų lengvesnis, aš naudojau sistemą app.remoteme.org, taip pat dirba tokio tipo automobilio valdymas, todėl jums nereikia rašyti savo kodo, bet, žinoma, galite keisti scenarijus naujų galimybių ir pan.

Prieš prijungdami maitinimą prie PCB, dar kartą patikrinkite visas jungtis

1 veiksmas: tam tikra informacija apie „App.remoteme.org“

Sistemą sudaro trys dalys

  • žiniatinklio taikymas - kai priglobiate savo valdymo tinklalapius ir jis susieja visą komunikaciją
  • „rasbperryPi“programa - programa, siunčianti vaizdo įrašus, valdanti jūsų „python“scenarijus
  • bibliotekos, kuriose rasite klasių, funkcijų apibrėžimus

Remoteme.org yra greita sistema. Jūs susiejate visus savo įrenginius, galite ten priglobti savo tinklalapius, peržiūrėti prijungtus įrenginius. Remoteme.org sistema buvo sukurta tam, kad padėtų jums pradėti kurti savo projektus, nesijaudindami dėl protokolinio ryšio, pagrindinė idėja yra siųsti dvejetainius pranešimus tarp įvairių įrenginių, tokių kaip tinklalapiai, RasbeprryPI, arduino ir scenarijai.

Kita vertus, „Remoteme.org“suteikia jums visišką failų valdymą, galite lengvai jį pakeisti, rašydami savo funkcijas

Šioje pamokoje aš jums parodysiu, kaip padaryti nuostabų projektą, nerašant jokio kodo.

Šios pamokos pabaigoje įdėjau naudingų nuorodų, kurios padės jums suprasti remoteme.org sistemą.

2 žingsnis: ko reikia:

Ko reikia
Ko reikia
Ko reikia
Ko reikia
  • Aviečių PI Zero W
  • Speciali kamera
  • „Adafruit“16 kanalų 12 bitų PWM/servo tvarkyklė - I2C sąsaja - PCA9685 arba jo klonas
  • Du servo mechanizmai, suderinami su fotoaparato laikikliu
  • Fotoaparato laikiklis
  • Baterijos - Pamokoje dvi prijungimo galimybės
  • H tiltas TB6612FNG, skirtas vairo vairui valdyti
  • PCB erelio failai Tai lengva padaryti šiluminio perdavimo metodu DC-DC
  • „DC Down“keitiklio modulis
  • Roboto dėklas

3 žingsnis: jungtys

Sujungimai
Sujungimai

„Raspberry pi“valdymo servo mechanizmas per PWM modulį ir variklio greitis per „H“tiltą, kuris yra prijungtas prie „RasbperryPi“kaiščių, PWM įvestį į „H“tiltą generuoja tas pats modulis, kurį naudoju servo sistemoms (kurias dalis minėjau aukščiau, loginių keitiklių nereikia)

4 žingsnis: PCB

PCB
PCB
PCB
PCB

Iš čia galite atsisiųsti PCB erelio failus. Keliai yra riebūs, todėl juos lengva padaryti naudojant terminio perdavimo metodą

5 žingsnis: PCB išvestys

PCB išėjimai
PCB išėjimai
PCB išėjimai
PCB išėjimai
  1. PWM įvestis pavaros varikliams Turėtų būti prijungta prie PWM modulio 15 ir 16 kaiščių (patikrinkite žalią stačiakampį PWM modulio paveikslėlyje)
  2. Pavaros variklių įėjimo galia (patikrinkite, su kokia maksimalia įtampa gali veikti jūsų varikliai)
  3. „RasbperryPi“ir PWM modulio maitinimas turi būti tiksliai toks
  4. Pavaros variklio išėjimai (yra du išėjimai, nes suporuosime pavaros variklius)
  5. Servo mechanizmų galia - taip pat turite patikrinti, kokia įtampa jiems tinka
  6. Perjungus dabartinę 5 -osios įvesties galią, bus varomi ir varikliai, todėl nieko nereikia prijungti prie 2 įvesties
  7. Trumpiklis, jei yra „RasbperryPi“bus maitinamas iš trečiojo įvesties - prieš padėdami trumpiklį čia patikrinkite, ar jungtys yra geros - nenorite sudeginti savo RPi
  8. Leiskite čia lituoti kabelius, nes mums nereikia loginių keitiklių

6 žingsnis: kaip tai veiks

„RasbperryPi“yra „python“scenarijus, kuriame naudojamos dvi bibliotekos

  • importuoti RPi. GPIO kaip GPIO-kaiščiams 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM žymėjimas), kurie yra prijungti prie H tilto
  • importuoti „Adafruit_PCA9685“PWM moduliui

Rpi kaiščiai yra sujungti taip: 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) ir H tilto valdymo režimas (pirmyn, atgal, sustojimas, trumpa pertrauka). H tiltui taip pat reikia dviejų PWM signalų, kad galėtume valdyti greitį arba variklio sukimąsi. Kadangi projekte mes jau turime PWM valdiklį (naudojamą servo), mes jį taip pat naudosime generuodami PWM H tiltui.

PWM modulis naudoja I2C ryšio protokolą. Aš naudoju darbą iš dėžutės „Adafruit_PCA9685“. biblioteka

7 žingsnis: automobilio surinkimas - ratai

Automobilio surinkimas - ratai
Automobilio surinkimas - ratai
Automobilio surinkimas - ratai
Automobilio surinkimas - ratai

Pradėsime nuo pavaros variklių prijungimo prie automobilio dėklo. Kairysis/šoninis varikliai jungiasi kartu ir abu suporuojami, prijungiami prie tam tikro maitinimo kabelio, kuris vėliau bus prijungtas prie PCB. Svarbi pastaba jungiant variklių ratus iš abiejų pusių turi suktis ta pačia kryptimi.

8 veiksmas: maitinimas (AA įkraunamos baterijos) 1/2

Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2
Maitinimas (AA įkraunamos baterijos) 1/2

Parašysiu dvi maitinimo galimybes Automobilis pirmasis yra iš 10xAA įkrovimo baterijų Pagaliau paveikslėlyje nupiešiau raudonų spalvų džemperius, kuriuos reikia uždėti.

9 veiksmas: maitinimas („Li-Po“7,2 V baterijos) 2/2 parinktis

Maitinimas (Li-Po 7.2V baterijos) 2/2 variantas
Maitinimas (Li-Po 7.2V baterijos) 2/2 variantas
Maitinimas (Li-Po 7.2V baterijos) 2/2 variantas
Maitinimas (Li-Po 7.2V baterijos) 2/2 variantas

Antrasis variantas yra 7.2 LI-PO baterija. Šiuo atveju mes gavome 3 įtampas - 5v Rpi ir moduliui, 6V servo ir tiesiogiai iš akumuliatorių 7,2 voltų pavaros varikliams. Turėjau naudoti du pakopinius modulius

2 variantas su LI-PO yra geresnis:

  • Baterijos yra didesnės talpos - automobilis važiuos ilgiau
  • Didesnė pavaros variklių įtampa - automobilis važiuos greičiau
  • Mažesnė tikimybė, kad pradėjus surasti varomuosius variklius, galime patirti didžiulį įtampos kritimą ir RPI paleidimą iš naujo.

10 žingsnis: litavimas

Litavimas
Litavimas
Litavimas
Litavimas
Litavimas
Litavimas
Litavimas
Litavimas

Aš įdėjau į PCB keletą tarpiklių PWM moduliui. Nėra ką rašyti, tik peržiūrėkite vaizdus, kaip viską sulieti

11 veiksmas: fotoaparatas

Fotoaparatas
Fotoaparatas

Mes prijungiame fotoaparatą, čia yra parašyta, kaip centruoti servo mechanizmus prieš montuojant į fotoaparato laikiklį, tačiau trumpiausias būdas yra švelniai rankiniu būdu patikrinti maksimalią sukimosi padėtį ir nustatyti servo centrinę padėtį. Šiuos centrinius servo mechanizmus įdėjome į fotoaparato laikiklį centrinėje padėtyje (fotoaparatas nukreiptas tiesiai į priekį, kaip ir nuotraukoje)

12 žingsnis: automobilių dalių sujungimas

Automobilių dalių sujungimas
Automobilių dalių sujungimas
Automobilių dalių sujungimas
Automobilių dalių sujungimas
Automobilių dalių sujungimas
Automobilių dalių sujungimas

PCB aš padariau mažą organinio stiklo stalą

13 veiksmas: „App.remoteme.org“konfigūracija

„App.remoteme.org“konfigūracija
„App.remoteme.org“konfigūracija

Aš naudoju nemokamą sistemą app.remoteme.org, kuri padeda jums užmegzti ryšius, ir ji jau turi mums reikalingus scenarijus

Pagal šią pamoką aš žingsnis po žingsnio parodysiu, ką reikia padaryti norint vairuoti automobilį (čia rasite daugiau informacijos)

  • Prisiregistravę dainuokite https://app.remoteme.org. Jūs būsite automatiškai prisijungę
  • kairėje atidarykite skirtuką „Žetonas“, tada spustelėkite „naujas žetonas“, nurodykite pavadinimą ir spustelėkite Gerai, mes ką tik sukūrėme naują žetoną (vaizdas ekrane)
  • šiame pavyzdyje simbolinė vertė yra: ~ 1_ & p@+BNnZ@A+x8 (jūsų bus kitokia;))

14 veiksmas: „RasbperryPi“konfigūracija

„RasbperryPi“konfigūracija
„RasbperryPi“konfigūracija

glaistymo pulte (čia kaip nustatyti mūsų RPi įjungti kameros I2c ryšį)

git klonas git: //github.com/remoteme/remoteme.git

cd nuotoliniu būdu

python3.5 install.py

  • „Instalator“užduos mums keletą klausimų, kai atsakysime [Y], ir patvirtins [enter]
  • kai diegimas paprašys prieigos rakto, įklijuosime („Shift“+„Insert“), nukopijuotą iš programos, ir „Enter“
  • Pavadinimas, pavyzdžiui, Rpi
  • deviceId 1 Įveskite
  • po įdiegimo - paleiskite programą

./runme.sh

15 veiksmas: jungčių tikrinimas

Jungčių tikrinimas
Jungčių tikrinimas

Grįžkime į

Įrenginių skirtuke matysime prijungtą RPi (žalia nuorodos piktograma reiškia, kad RPi yra prijungtas dabar)

16 veiksmas: pridėkite „Python“scenarijų

Pridedamas „Python“scenarijus
Pridedamas „Python“scenarijus
Pridedamas „Python“scenarijus
Pridedamas „Python“scenarijus

Dabar pridėsime „python“scenarijų, kuris jau yra šablonuose, todėl mums nieko nereikia programuoti.

Įrenginių skirtuke atidarykite „RasbperryPi“meniu ir pasirinkite „Pridėti išorinį scenarijų“.

Kai pasirodys naujas langas, pateikite informaciją, kaip parodyta aukščiau

Nepamirškite pasirinkti šablono „car4wd“. Po šių veiksmų remoteme.org pridės „python“scenarijų prie mūsų „RasbperryPi“ir paleis jį iš naujo

17 veiksmas: patikrinkite, ar „Python“scenarijus buvo pridėtas sėkmingai

Tikrinama, ar „Python“scenarijus buvo pridėtas sėkmingai
Tikrinama, ar „Python“scenarijus buvo pridėtas sėkmingai

Įrenginių skirtuke turėtų būti pridėtas naujas „Python“scenarijaus įrenginys, o jo įrenginio ID yra 2. Į šį įrenginio ID tinklalapį bus siunčiami pranešimai, skirti valdyti automobilį

18 veiksmas: tinklalapio pridėjimas prie „Control Car“

Tinklalapio pridėjimas prie „Control Car“
Tinklalapio pridėjimas prie „Control Car“

Įrenginių skirtuke spustelėkite „Naujas“, tada „Interneto puslapis“. Mes tiesiog pridedame kitą įrenginį - „webPage“, kurį naudosime savo automobiliui valdyti. Kadangi tinklalapyje naudojome šabloną „car4wdDesktop“, jau yra beveik paruošti naudoti failai

19 veiksmas: sukonfigūruokite „WebPage“įrenginį, kad jis valdytų automobilį 1/2

„WebPage“įrenginio konfigūravimas automobiliui valdyti 1/2
„WebPage“įrenginio konfigūravimas automobiliui valdyti 1/2

Įrenginio skirtuke išplėskite „WebPage“ir spustelėkite index.html, tada - „Open“

20 veiksmas: sukonfigūruokite „WebPage“įrenginį, kad jis valdytų automobilį 2/2

„WebPage“įrenginio konfigūravimas automobiliui valdyti 2/2
„WebPage“įrenginio konfigūravimas automobiliui valdyti 2/2

Pasirodo langas, tada turime pateikti įrenginio ID mūsų python scenarijų mūsų atveju deviceId yra 2. Pakeiskime paveikslėlyje parodytą vietą

21 veiksmas: atidarykite automobilio valdymo centrą

Atidarykite automobilio valdymo centrą
Atidarykite automobilio valdymo centrą
Atidarykite automobilio valdymo centrą
Atidarykite automobilio valdymo centrą

Dabar atėjo laikas atidaryti mūsų puslapį ir pamatyti, kaip jis veikia. Įrenginio skirtuke spustelėkite index.html, tada „Atidaryti naujame skirtuke“Norėdami gauti vaizdo įrašo peržiūrą, turite naudoti „Chrome“arba „Firefox“naršyklę, kitos naršyklės visiškai nepalaiko „webRTC“

22 veiksmas: fotoaparato konfigūracija 1/2

Kameros konfigūracija 1/2
Kameros konfigūracija 1/2

Kai perkelsime pelę į vaizdo sritį, kamera turėtų pakeisti padėtį ir ji turėtų veikti tiksliai kaip FPS žaidimuose. Tikriausiai jis nejudės teisingai

23 veiksmas: fotoaparato konfigūracija 2/2

Fotoaparato konfigūracija 2/2
Fotoaparato konfigūracija 2/2

Atidarykite „script.js“(skirtukas „Įrenginiai“išplėskite tinklalapį, tada spustelėkite „script.js“, tada atidarykite) ir raskite vietą, kurią rodžiau ekrane

mano korpuso centro padėtis yra 560 ir 430, o judesių diapazonas - abiem ašims 200

Turite eksperimentuoti su šiais skaičiais, kad gautumėte fotoaparato padėties centrą ir sklandžius judesius. Jei naudojote šią pamoką, tiesiog nukopijuokite įklijuotas duotas vertes

24 žingsnis: vairavimas 1/2

Vairavimas 1/2
Vairavimas 1/2

Jei paspausite klaviatūros rodyklę aukštyn, matuokliai turėtų pakeisti padėtį ir automobilis turėtų važiuoti. Jei paspausite rodyklę „aukštyn“ir automobilis suksis, tada ekrano vietose turite pridėti/pašalinti minusą.

Po šios operacijos paspaudus „aukštyn“rodyklę automobilis turėtų važiuoti į priekį, o rodyklė žemyn - atgal.

25 žingsnis: vairavimas 2/2

Vairavimas 2/2
Vairavimas 2/2

Dabar sukite - paspauskite rodyklę į kairę, jei automobilis sukasi į dešinę Turite apversti kabelius (patikrinkite paveikslėlį aukščiau)

Jei lituosite šiuos kabelius, galite juos pakeisti adresu script.js, tiesiog pakeiskite variklių greičio siuntimo tvarką, prieš:

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

po:

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

ir dabar jūs turite žaisti su minusais kaip vieną žingsnį anksčiau, kad jis veiktų tinkamai;). Kaip jūs tikriausiai pastebėjote po paspaustos rodyklės automobilis nevažiuoja visu greičiu, kad automobilis judėtų greičiau, tik greitai atleiskite rodyklę aukštyn, kai ji yra maksimalioje padėtyje ir dar kartą paspauskite ir palaikykite

26 žingsnis: kaip tai veikia

Tinklalapis siunčia 9 baitų pranešimus į „python“scenarijų tokiu formatu:

  • 1 baitas vieno baito sveikasis skaičius 1
  • 2 baitai sveiko skaičiaus X kameros padėtis
  • 2 baitai sveiko skaičiaus Y kameros padėties
  • 1 baitų sveiko kairiojo variklio režimas (3 = atgal, 1 = pirmyn, 2 = sustojimas)
  • 1 baito sveiko kairiojo variklio greitis
  • 1 baitų sveikojo variklio režimas (3 = atgal, 1 = pirmyn, 2 = sustojimas)
  • 1 baitas sveikasis variklio greitis

pranešimas siunčiamas faile „script.js“, esant funkcijai „sendNow ()“

adresu RasbperryPi python.py gauna šį pranešimą į funkciją „onUserMessage“

Galite tai patikrinti ir šiek tiek pažaisti, kad žinotumėte, kas vyksta.

klasės funkcijų aprašymas čia

27 veiksmas: planšetinis kompiuteris, valdymas mobiliuoju telefonu

Planšetinis kompiuteris, vairas mobiliesiems
Planšetinis kompiuteris, vairas mobiliesiems

Mes pridėjome naują tinklalapį nepaprastai, kaip ir anksčiau, bet dabar pasirenkame šabloną „car4wdMobile“

Tada viską sukonfigūruosime scenarijuje.

28 veiksmas: atidarykite puslapį mobiliajame telefone

Atidarykite puslapį mobiliajame telefone
Atidarykite puslapį mobiliajame telefone
Atidarykite puslapį mobiliajame telefone
Atidarykite puslapį mobiliajame telefone

Užuot prisijungę prie savo paskyros iš mobiliojo telefono, tiesiog nuskaitykite anoniminį QR adresą.

išsami informacija apie QR čia

Jei jūsų mobiliojo telefono valdymas veikia, kai RPi ir mobilusis veikia tuo pačiu „Wi -Fi“ryšiu, bet neveikia, jei naudojate mobilųjį internetą, turite pridėti posūkio serverį, kaip tai padaryti, parašiau čia

29 veiksmas: „Turn Server“pridėjimas

Pridedamas „Turn Server“
Pridedamas „Turn Server“
Pridedamas „Turn Server“
Pridedamas „Turn Server“
Pridedamas „Turn Server“
Pridedamas „Turn Server“

Kartais (kai esate už NAT ar kai kurių užkardos nustatymų) Jūs negalite prijungti savo roboto iš kito tinklo, tada jūsų robotas yra prijungtas. Tai nėra didelė problema, tada turite pridėti posūkių serverį.

Aš išbandžiau XIRSYS įmonės serverį (jis nemokamas kūrėjams) ir parodysiu, kaip sukonfigūruoti posūkio serverį naudojant XIRSYS sistemą

Registruotis:

global.xirsys.net/dashboard/signup

tada spustelėkite „pliusas“, kad pridėtumėte programą

dešinėje, skiltyje „Statiniai posūkio kredencialai“Turite visus reikiamus duomenis. Nukopijuokite jį į failą webrtc_streamer.conf, norėdami tai padaryti, eikite į

išplėsti RaspberryPi deivces

spustelėkite failą webrtc_streamer.conf

spustelėkite atidaryti

ir pridėti informaciją

turn_server = turn_username =

turn_credential =

baigę redaguoti Turėtumėte turėti kažką panašaus į ekraną.

tada spustelėkite Išsaugoti ir iš naujo paleiskite „Rpi“, spustelėdami „RasbperryPi“įrenginio meniu ir pasirinkite iš naujo

Paleidus RPi programą, galite peržiūrėti vaizdo įrašo peržiūrą savo mobiliajame telefone, net jei naudojate mobilųjį internetą.

30 žingsnis: vairavimas mobiliuoju telefonu

Mobilusis vairavimas
Mobilusis vairavimas

1 apskritime mes dedame kairįjį nykštį, 2 - dešinėje - nebūtinai turi būti tiksliai šiuose taškuose - tinklalapis nustatys nulinę padėtį iškart palietus ekraną ir judindamas nykščius (kairė vairavimo kryptis, dešinė kameros padėtis) Galite valdyti tavo mašina

31 žingsnis: Santrauka

Tikiuosi, kad jums patiko ši pamoka, kaip jau rašiau šioje pamokoje, yra daugiau informacijos apie tai, kaip ji veikia po gaubtu.

kai kurios nuorodos:

remoteme.org - pagrindinis remoteme.org puslapis, kuriame rasite dokumentus ir vadovėlius

FB gerbėjų puslapis - „Facebook“gerbėjų puslapio naujausia informacija apie remoteme.org

„Youtube“- keletas projekto vaizdo įrašų, pamokų

Sveikinimai, Maciek

Rekomenduojamas: