Turinys:

Virtualus dalyvavimo robotas: 15 žingsnių
Virtualus dalyvavimo robotas: 15 žingsnių

Video: Virtualus dalyvavimo robotas: 15 žingsnių

Video: Virtualus dalyvavimo robotas: 15 žingsnių
Video: „KUKA Nordic“ virtualus užsakymas su „KUKA Sim“ internetiniu seminaru 2024, Lapkritis
Anonim
Image
Image
Mobilus robotas automobilis
Mobilus robotas automobilis

Šis mobilus robotas sąveikauja su savo fizine aplinka, atstovaudamas jį nuotoliniu būdu valdančio asmens „virtualiam buvimui“. Jį gali pasiekti bet kas, bet kurioje pasaulio vietoje, norėdamas atsisakyti skanėstų ir žaisti su jumis.

Darbą čia plėtoja du žmonės (vienas Vokietijoje ir vienas JAV), siekdami peržengti tradicines interneto ryšio priemones, sukurdami fizinę nuotolinės sąveikos sąsają. Kadangi COVID-19 ir toliau daro įtaką pasauliui, ir kiekvienas yra atsakingas už mūsų fizinio poveikio žmonėms ribojimą, mes stengiamės atkurti apčiuopiamą ryšį, kuris yra fizinės sąveikos dalis.

Jis pagrįstas ESP32-Camera-Robot-FPV-Teacher-Entry Instructable ir modifikuotas taip, kad į jį būtų įtrauktas atstumo jutiklis, gydymo dozatorius ir „valdymas iš bet kurios pasaulio vietos“, jei turite šiek tiek stabilų interneto ryšį.

Prekės

Projektas susideda iš 4 pagrindinių dalių - mobiliojo roboto automobilio, drožlių dozatoriaus, vairasvirtės ir tinklo ryšio sąrankos.

Mobilus robotas automobilis

  • Bandomoji Lenta
  • 2 ratų pavaros variklio ir važiuoklės robotų rinkinys (apima ratus, nuolatinės srovės variklius, tvirtinimo plokštę ir varžtus)
  • „Arduino Mega 2560“(jei statysite be atstumo jutiklio ar drožlių dozatoriaus, „Uno“užteks kaiščių)
  • (3) 9 V baterijos (turėkite dar keletą, nes jas išsekinsite derindami)
  • LM2596 maitinimo šaltinis DC/DC Buck 3A reguliatorius (arba panašus)
  • ESP32-CAM „Wifi“modulis
  • FT232RL FTDI USB į TTL serijos keitiklis (ESP32-CAM programavimui)
  • Ultragarsinis atstumo jutiklis HC-SR04
  • L298N variklio tvarkyklė
  • (3) šviesos diodai (bet kokia spalva)
  • (3) 220 omų rezistoriai

Lustų dalytuvas

  • (2) SG90 servos
  • Kartonas / kartonas

Vairasvirtė

  • Arduino Uno
  • Vairasvirtės modulis
  • Mini kepimo lenta, (1) LED, (1) 220 omų rezistorius (neprivaloma)

Kiti

Daug duonos lentų trumpiklių laidų Papildomas kartonas / kartonas Juosta Žirklės Valdiklis / matavimo juosta Mažas „Philips“atsuktuvas Mažas plokščias atsuktuvas

Kantrybės =)

1 žingsnis: Mobilus robotas

„Robot Car“važiuoklė tarnauja kaip mobili platforma, o „Arduino MEGA“yra pagrindinis mikrovaldiklis, valdantis variklius, skaitantis jutiklių vertes ir valdantis servo sistemas. Dauguma veiksmų atliekami, kai „Arduino MEGA“gauna komandas per serijinį ryšį, siunčiamus iš ESP32-CAM. Nors ESP32 teikia tiesioginį fotoaparato srautą robotui valdyti, kita jo funkcija yra valdyti belaidį ryšį tarp roboto ir serverio, todėl vartotojai gali jį valdyti iš bet kurios pasaulio vietos. ESP32 gauna komandas iš tinklalapio paspausdamas klavišus ir siunčia jas į „Arduino MEGA“kaip simbolių reikšmes. Atsižvelgiant į gautą vertę, automobilis važiuos pirmyn, atgal ir pan. Kadangi nuotolinis valdymas internetu priklauso nuo daugelio išorinių veiksnių, įskaitant didelį delsą, prastą srauto kokybę ir net atjungimus, atstumo jutiklis yra integruotas, kad robotas nenukristų *Dėl didelių ir kintančių ESP32 lusto energijos poreikių, maitinimo šaltinio reguliatorių rekomenduojama naudoti su akumuliatoriaus energija (žr. laidų schemą).

2 žingsnis: Mobilus robotas - grandinės schema

Mobilus robotų automobilis - grandinės schema
Mobilus robotų automobilis - grandinės schema

Mes žingsnis po žingsnio padėsime jums surinkti šį elementą.

3 žingsnis: mobiliojo roboto automobilio surinkimas (varikliai)

Mobilus robotų automobilis - surinkimas (varikliai)
Mobilus robotų automobilis - surinkimas (varikliai)

Surinkę 2WD važiuoklę, pirmiausia prijungiame variklius ir akumuliatorių prie „Arduino MEGA“per „L298N“tvarkyklę.

4 žingsnis: mobiliojo roboto automobilio surinkimas (atstumo jutiklis)

Mobilus robotų automobilis - surinkimas (atstumo jutiklis)
Mobilus robotų automobilis - surinkimas (atstumo jutiklis)

Kadangi prijungti reikia nemažai komponentų, pridėkime duonos lentą, kad galėtume lengviau prijungti maitinimą ir bendrą žemę. Pertvarkę laidus, prijunkite atstumo jutiklį ir pritvirtinkite jį roboto priekyje.

5 žingsnis: mobiliojo roboto automobilio surinkimas (ESP32 CAM)

Mobiliojo roboto automobilio surinkimas (ESP32 CAM)
Mobiliojo roboto automobilio surinkimas (ESP32 CAM)

Tada prijunkite ESP32-CAM modulį ir pritvirtinkite jį šalia atstumo jutiklio šalia roboto priekio. Atminkite, kad šiam gana energijos reikalaujančiam komponentui reikia savo baterijos ir nuolatinės srovės reguliatoriaus.

6 žingsnis: Mobilus robotų automobilis - surinkimas (drožlių dozatorius)

Mobilus robotų automobilis - surinkimas (drožlių dozatorius)
Mobilus robotų automobilis - surinkimas (drožlių dozatorius)

Dabar pridėkime lustų dozatorių (daugiau apie tai skiltyje „Lustų dozatorius“). Prijunkite du servo mazgus pagal Fritzingo diagramą ir pritvirtinkite dozatorių prie roboto uodegos.

7 žingsnis: Mobilus robotas - surinkimas (slapukai!)

Mobilus robotų automobilis - surinkimas (slapukai!)
Mobilus robotų automobilis - surinkimas (slapukai!)

Galiausiai į dozatorių dedame skanėstų!

8 žingsnis: Mobilus robotas automobilis - „Arduino“kodas

„RobotCar_Code“yra kodas, kurį turėsite įkelti į „Arduino Mega“.

Štai kaip tai veikia: „Arduino“klausosi baitų, kurie siunčiami iš ESP32 per serijinį ryšį 115200 juostoje. Pagal gautą baitą automobilis judės į priekį, atgal, į kairę, į dešinę ir pan., Siunčiant AUKŠTĄ arba ŽEMĄ įtampą varikliams valdyti kryptį, taip pat PWM kintamąjį tarp 0–255 greičiui valdyti. Siekiant išvengti susidūrimų, šis kodas taip pat skaito iš atstumo jutiklio gaunamas vertes ir, jei atstumas yra mažesnis už nurodytą slenkstį, robotas neis į priekį. Galiausiai, jei „Arduino“gauna komandą išduoti skanėstą, jis suaktyvins servetėles lustų dalytuve.

9 žingsnis: Mobilus robotas automobilis - ESP32 kodas

ESP32 leidžia bendrauti tarp serverio ir „Arduino“per „Wifi“. Jis užprogramuotas atskirai nuo „Arduino“ir turi savo kodą:

  • ESP32_Code.ino yra kodas, skirtas ESP32 siųsti informaciją „Arduino“
  • „app_httpd.cpp“yra kodas, reikalingas numatytajai ESP32 žiniatinklio serveriui, ir nustatykite funkciją, kad būtų klausomasi klavišų paspaudimų. Tinka derinimui ir vietinio „Wi -Fi“testavimui. Jis nenaudojamas bendravimui už vietinio tinklo ribų.
  • camera_index.h yra numatytosios žiniatinklio programos html kodas
  • camera_pins.h nustato kaiščius, priklausomai nuo ESP32 modelio

ESP32 kodas naudoja „Wifi“biblioteką ir ESP32 priedą, kurį galima įdiegti „Arduino IDE“atlikus šiuos veiksmus:

  1. „Arduino IDE“eikite į Failas> Nuostatos
  2. Tada skirtuko „Nustatymai“skiltyje Papildomų lentų tvarkyklės URL įveskite „https://dl.espressif.com/dl/package_esp32_index.json“
  3. Dabar atidarykite lentų tvarkyklę ir eikite į Įrankiai> Lenta> Lentų tvarkytuvė ir ieškokite ESP32 įvesdami „ESP32“
  4. Turėtumėte pamatyti „esp32 by Espressif Systems“. Spustelėkite Įdiegti.
  5. Dabar turėtų būti įdiegtas ESP32 priedas. Norėdami patikrinti, grįžkite į „Arduino IDE“ir eikite į Įrankiai> Lenta ir pasirinkite „ESP32 Wrover Module“.
  6. Vėl eikite į Įrankiai> Įkėlimo greitis ir nustatykite jį į „115200“.
  7. Galiausiai eikite į Įrankiai> Skirstymo schema ir nustatykite ją į „Didžiulė programa (3 MB be OTA/1 MB SPIFFS)
  8. Kai tai atliksite, rekomenduoju vadovautis šia „RandomNerdTutorials“pamoka, kurioje išsamiai paaiškinta, kaip užbaigti ESP32 nustatymą ir įkelti kodą naudojant FTDI programuotoją ESP32 programavimas

10 žingsnis: drožlių dozatorius

Lustų dalytuvas
Lustų dalytuvas

„Chip Dispenser“yra nebrangus mobiliojo roboto priedas, leidžiantis jam paveikti vietinę aplinką ir bendrauti su žmonėmis / gyvūnais, paliekant skanų skanėstą. Jį sudaro išorinė kartoninė dėžutė su 2 servo servetėlėmis, taip pat vidinė kartoninė kasetė, kurioje laikomi daiktai (pvz., Saldainiai ar šunų skanėstai). Vienas servo veikia kaip vartai, o kitas išstumia daiktą.

*Visi matmenys nurodyti milimetrais

11 žingsnis: vairasvirtė

Vairasvirtė
Vairasvirtė

Nors gali būti smagu valdyti robotą klaviatūra, dar smagiau ir intuityviau yra naudoti vairasvirtę, kur robotas reaguoja tiesiogiai pagal jūsų stumiamą kryptį. Kadangi šis robotas įjungiamas paspaudus tinklalapį, mums reikėjo mūsų vairasvirtės, kad imituotume klaviatūrą. Tokiu būdu vartotojai, neturintys kreiptuko, vis tiek gali valdyti robotą tiesiai iš klaviatūros, tačiau kiti gali naudoti vairasvirtę.

Tam turėjome tik „Arduino Uno“, kuris negali naudotis biblioteka, todėl mes jį užprogramavome tiesiogiai naudodami USB protokolą, žinomą kaip „Device Firmware Update“(DFU), kuris leidžia „arduino“atnaujinti naudojant bendrą USB HID klaviatūros programinę įrangą. Kitaip tariant, kai arduino yra prijungtas prie USB, jis nebepažįstamas kaip arduino, bet kaip klaviatūra!

12 žingsnis: vairasvirtė - grandinės schema

Vairasvirtė - grandinės schema
Vairasvirtė - grandinės schema

Štai kaip prijungėme vairasvirtę.

13 žingsnis: vairasvirtė - klaviatūros emuliatorius

Kad jūsų „Arduino Uno“imituotų klaviatūrą, turite tiesiogiai užprogramuoti „Atmega16u2“lustą „Arduino“naudodami rankinį įrenginio programinės įrangos atnaujinimą (DFU). Šie veiksmai aprašys „Windows“įrenginio procesą ir, tikiuosi, padės išvengti kai kurių problemų, su kuriomis susidūrėme.

Pirmasis žingsnis yra rankiniu būdu įrašyti „Atmel“USB tvarkyklę į „Arduino“, kad ji būtų atpažįstama kaip USB, o ne „Arduino“, kuri leidžia ją mirksėti naudojant FLIP programuotoją.

  1. Atsisiųskite „Atmel“FLIP programuotoją iš čia
  2. Prijunkite „Arduino Uno“
  3. Eikite į „Device Manager“ir raskite „Arduino“. Tai bus COM arba nežinomas įrenginys. Prijunkite ir išjunkite, kad įsitikintumėte, jog tai tinkamas įrenginys.
  4. Įrenginių tvarkytuvėje radę „Arduino Uno“, dešiniuoju pelės mygtuku spustelėkite jį ir pasirinkite ypatybės> Tvarkyklė> Atnaujinti tvarkyklę> Naršyti mano kompiuteryje ieškant tvarkyklės programinės įrangos> Leiskite man pasirinkti iš galimų mano kompiuterio tvarkyklių sąrašo> Turėti diską> Naršyti failą „atmel_usb_dfu.inf“ir pasirinkite jį. Tai turėtų būti aplanke, kuriame buvo įdiegtas jūsų „Atmel FLIP“programuotojas. Mano kompiuteryje jis yra čia: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Įdiekite tvarkyklę
  6. Dabar grįžkite į įrenginių tvarkytuvę, kur turėtumėte pamatyti „Atmel USB įrenginius“, o „Arduino Uno“dabar pažymėtas kaip ATmega16u2!

Dabar, kai kompiuteris atpažįsta „Arduino Uno“kaip USB įrenginį, galime naudoti „FLIP“programuotoją, norėdami jį blykstelėti su 3 atskirais failais ir paversti klaviatūra.

Jei po pirmosios dalies atjungėte „Arduino Uno“, vėl prijunkite.

  1. Atidarykite FLIP
  2. Iš naujo nustatykite „Arduino Uno“, trumpai prijungdami maitinimą prie žemės.
  3. Spustelėkite Įrenginio pasirinkimas (piktograma kaip mikroschema) ir pasirinkite ATmega16U2
  4. Spustelėkite Pasirinkite ryšio terpę (piktograma kaip USB laidas) ir pasirinkite USB. Jei teisingai užpildėte pirmąją dalį, kiti pilki mygtukai turėtų būti naudojami.
  5. Eikite į Failas> Įkelti šešioliktainį failą> ir įkelkite failą „Arduino-usbserial-uno.hex“
  6. FLIP lange turėtumėte pamatyti tris skyrius: Operacijų srautas, FLASH buferio informacija ir ATmega16U2. Operacijų eigoje pažymėkite langelius „Ištrinti, užprogramuoti ir patvirtinti“, tada spustelėkite Vykdyti.
  7. Kai šis procesas bus baigtas, skiltyje ATmega16U2 spustelėkite Pradėti taikymą.
  8. Prijunkite „arduino“ciklą, atjunkite jį nuo kompiuterio ir vėl prijunkite.
  9. Iš naujo nustatykite „Arduino Uno“, trumpai prijungdami maitinimą prie žemės.
  10. Atidarykite „Arduino IDE“ir į lentą įkelkite failą „JoyStickControl_Code.ino“.
  11. Prijunkite „arduino“ciklą, atjunkite jį nuo kompiuterio ir vėl prijunkite.
  12. Iš naujo nustatykite arduino, trumpai prijungdami maitinimą prie žemės.
  13. Grįžkite į FLIP, įsitikinkite, kad įrenginio pasirinkime parašyta „Atmega16U2“
  14. Spustelėkite Pasirinkite ryšio terpę ir pasirinkite USB.
  15. Eikite į Failas> Įkelti šešioliktainį failą> ir įkelkite failą „Arduino-keyboard-0.3.hex“
  16. FLIP lange turėtumėte pamatyti tris skyrius: Operacijų srautas, FLASH buferio informacija ir ATmega16U2. Operacijų eigoje pažymėkite laukelius Erase, Programme ir Verify, tada spustelėkite Vykdyti.
  17. Kai šis procesas bus baigtas, skiltyje ATmega16U2 spustelėkite Pradėti taikymą.
  18. Prijunkite „arduino“ciklą, atjunkite jį nuo kompiuterio ir vėl prijunkite.
  19. Dabar, kai einate į įrenginių tvarkytuvę, po klaviatūromis turėtų būti naujas HID klaviatūros įrenginys.
  20. Atidarykite bloknotą ar bet kurį teksto rengyklę ir pradėkite judinti vairasvirtę. Turėtumėte matyti įvestus skaičius!

Jei norite pakeisti „Arduino“eskizo kodą, pvz., Rašyti naujas komandas į vairasvirtę, kiekvieną kartą turėsite jį atnaujinti su visais 3 failais.

Kai kurios naudingos nuorodos: Arduino DFUAtLibUsbDfu.dll nerasta

Šis klaviatūros emuliatorius sukurtas pagal šią Michaelio pamoką 2012 m. Birželio 24 d.

14 žingsnis: Tinklo komunikacija

Tinklo komunikacija
Tinklo komunikacija

Norėdami gauti vaizdo įrašų srautą ir siųsti komandas robotui iš bet kurios pasaulio vietos, mums reikia būdų, kaip gauti duomenis į ESP32-CAM ir iš jos. Tai atliekama iš dviejų dalių: ryšio tvarkytojo vietiniame tinkle ir viešojo serverio. Norėdami tai padaryti, atsisiųskite tris failus:

  • Handlers.py: perduoda informaciją iš ESP32-CAM ir viešojo serverio (išbandyta naudojant „Python 3.8“)
  • Flask_app.py: apibrėžia, kaip jūsų programa reaguoja į gaunamas užklausas.
  • Robot_stream.html: pateikia vaizdo įrašą jūsų naršyklėje ir klauso komandų per klaviatūrą / vairasvirtę (išbandyta naudojant „Chrome“)

Ryšių tvarkyklė Galite tai koduoti tiesiogiai programoje app_httpd.cpp, tačiau, kad būtų lengviau derinti, naudojame „Python“scenarijų, veikiantį prie to paties tinklo prijungtame kompiuteryje. Atidarykite handler.py ir atnaujinkite IP adresą bei vartotojo vardą į savo, ir esate pasiruošę eiti. Srautas prasidės paleidus šį failą.

Viešasis serveris Norėdami pasiekti viską internete, galite paleisti serverį naudodami pasirinktą „PaaS“. „Pythonanywhere“(PA) nustatymas užtrunka mažiau nei 5 minutes:

  1. Užregistruokite paskyrą ir prisijunkite
  2. Eikite į skirtuką „Žiniatinklis“ir paspauskite „Pridėti naują žiniatinklio programą“, pasirinkite Kolba ir „Python 3.6“
  3. Nukopijuokite flask_app.py į /mysite katalogą
  4. Nukopijuokite robot_stream.html į /mysite /templates katalogą
  5. Spustelėkite „Įkelti iš naujo“

Ir … viskas paruošta!

Atsakomybės atsisakymas: ši tinklo darbo eiga yra greita ir paprasta, tačiau labai toli nuo idealo. RTMP arba lizdai būtų tinkamesni srautiniam perdavimui, tačiau jie nepalaikomi PA ir reikalauja tam tikros tinklo ir serverio sąrankos patirties. Taip pat rekomenduojama pridėti tam tikrą saugos mechanizmą prieigai valdyti.

15 žingsnis: surinkite viską kartu

Dabar įjunkite savo robotą, paleiskite handler.py kompiuteryje (prijungtame prie to paties tinklo kaip ir robotas) ir galėsite valdyti robotą iš naršyklės, atsižvelgdami į nustatytą URL iš bet kurios norimos vietos. (pvz.,

Rekomenduojamas: