Satura rādītājs:

Virtuālās klātbūtnes robots: 15 soļi
Virtuālās klātbūtnes robots: 15 soļi

Video: Virtuālās klātbūtnes robots: 15 soļi

Video: Virtuālās klātbūtnes robots: 15 soļi
Video: Добре Дошли в Метавселената. Началото на Новата Ера 2024, Novembris
Anonim
Image
Image
Mobilais robotu auto
Mobilais robotu auto

Šis mobilais robots mijiedarbojas ar savu fizisko apkārtni, pārstāvot tās personas "virtuālo klātbūtni", kas to attālināti kontrolē. Tam var piekļūt ikviens un jebkur pasaulē, lai izsniegtu kārumus un spēlētu ar jums.

Darbu šeit izstrādā divi cilvēki (viens Vācijā un otrs ASV), mēģinot pārsniegt tradicionālos interneta saziņas līdzekļus, izveidojot fizisku saskarni attālai mijiedarbībai. Tā kā COVID-19 turpina ietekmēt pasauli un ikviens ir atbildīgs par mūsu fiziskās iedarbības ierobežošanu uz cilvēkiem, mēs cenšamies atjaunot taustāmo saikni, kas ir daļa no fiziskās mijiedarbības.

Tas ir balstīts uz ESP32-Camera-Robot-FPV-Teacher-Entry Instructable un ir modificēts, lai iekļautu attāluma sensoru, ārstniecības līdzekļa dozatoru un iespēju “kontrolēt no jebkuras vietas pasaulē”, ja jums ir nedaudz stabils interneta savienojums.

Piegādes

Projektam ir 4 galvenās daļas - mobilais robotu automobilis, mikroshēmu dozators, kursorsvira un tīkla sakaru iestatīšana.

Mobilais robotu auto

  • Maizes dēlis
  • 2 riteņu piedziņas motors un šasijas robotu komplekts (ietver riteņus, līdzstrāvas motorus, montāžas dēli un skrūves)
  • Arduino Mega 2560 (ja veidojat bez attāluma sensora vai mikroshēmu dozatora, Uno būs pietiekami daudz tapas)
  • (3) 9 V baterijas (turiet vēl dažas, jo tās iztukšos atkļūdošanu)
  • LM2596 strāvas padeves modulis DC/DC Buck 3A regulators (vai līdzīgs)
  • ESP32-CAM Wifi modulis
  • FT232RL FTDI USB uz TTL sērijas pārveidotājs (ESP32-CAM programmēšanai)
  • HC-SR04 ultraskaņas attāluma sensors
  • L298N motora vadītājs
  • (3) LED (jebkura krāsa)
  • (3) 220 omu rezistori

Skaidu dozators

  • (2) Servo SG90
  • Kartons / kartons

Kursorsvira

  • Arduino Uno
  • Kursorsviras modulis
  • Mini maizes dēlis, (1) LED, (1) 220 omu rezistors (pēc izvēles)

Citi

Daudz maizes dēļu džemperu vadu Papildus kartons / kartons Līmlente Šķēres Rullītis / mērlente Mazs Philips skrūvgriezis Mazs plakans skrūvgriezis

Pacietību =)

1. darbība. Mobilā robotu automašīna

Robotu automašīnas šasija kalpo kā mobila platforma, un Arduino MEGA ir galvenais mikrokontrolleris, kas vada motorus, nolasa sensoru vērtības un iedarbina servos. Lielāko daļu darbību veic, liekot Arduino MEGA saņemt komandas, izmantojot seriālo komunikāciju, kas nosūtītas no ESP32-CAM. Lai gan ESP32 nodrošina kameras tiešraidi, lai kontrolētu robotu, tā cita funkcija ir pārvaldīt bezvadu savienojumu starp robotu un serveri, tādējādi ļaujot lietotājiem to kontrolēt no jebkuras vietas pasaulē. ESP32 saņem komandas no tīmekļa lapas, nospiežot taustiņus, un nosūta tās uz Arduino MEGA kā char vērtības. Pamatojoties uz saņemto vērtību, automašīna virzīsies uz priekšu, atpakaļ utt. Tā kā tālvadības pults, izmantojot internetu, ir atkarīga no daudziem ārējiem faktoriem, tostarp augsta latentuma, sliktas straumes kvalitātes un pat atvienošanās, ir iebūvēts attāluma sensors, lai robots nenokristu *Tā kā ESP32 mikroshēmas jaudas prasības ir augstas un svārstīgas, barošanas avota regulatoru ieteicams izmantot kopā ar akumulatora enerģiju (skat. elektroinstalācijas shēmu).

2. darbība. Mobilā robotu automašīna - shēmas shēma

Mobilā robotu automašīna - shēmas shēma
Mobilā robotu automašīna - shēmas shēma

Mēs jums soli pa solim parādīsim šīs montāžas iespējas.

3. solis: mobilā robotu automašīna - montāža (motori)

Mobilā robotu automašīna - montāža (motori)
Mobilā robotu automašīna - montāža (motori)

Pēc 2WD šasijas salikšanas mēs vispirms savienojam motorus un akumulatoru ar Arduino MEGA, izmantojot draiveri L298N.

4. solis: mobilā robotu automašīna - montāža (attāluma sensors)

Mobilā robotu automašīna - montāža (attāluma sensors)
Mobilā robotu automašīna - montāža (attāluma sensors)

Tā kā savienošanai ir diezgan daudz komponentu, pievienosim maizes dēli, lai varētu vieglāk savienot strāvu un koplietošanas zemi. Pēc vadu pārkārtošanas pievienojiet attāluma sensoru un nostipriniet to robota priekšpusē.

5. solis: mobilā robotu automašīnas montāža (ESP32 CAM)

Mobilā robotu automašīnas montāža (ESP32 CAM)
Mobilā robotu automašīnas montāža (ESP32 CAM)

Pēc tam pievienojiet ESP32-CAM moduli un piestipriniet to blakus attāluma sensoram robota priekšpusē. Atcerieties, ka šim diezgan jaudīgajam komponentam ir nepieciešams savs akumulators un līdzstrāvas regulators.

6. solis: mobilā robotu automašīna - montāža (mikroshēmu dozators)

Mobilā robotu automašīna - montāža (mikroshēmu dozators)
Mobilā robotu automašīna - montāža (mikroshēmu dozators)

Tagad pievienosim mikroshēmu dozatoru (vairāk par to sadaļā "Mikroshēmu dozators"). Pievienojiet divus servos vadus saskaņā ar Fritzinga diagrammu un piestipriniet dozatoru pie robota astes.

7. solis: mobilā robotu automašīna - montāža (sīkfaili!)

Mobilā robotu automašīna - montāža (sīkfaili!)
Mobilā robotu automašīna - montāža (sīkfaili!)

Visbeidzot, mēs pievienojam kārumus dozētājam!

8. solis: mobilā robotu automašīna - Arduino kods

RobotCar_Code ir kods, kas jums būs jāielādē Arduino Mega.

Tas darbojas šādi: Arduino klausās baitus, kas tiek sūtīti no ESP32, izmantojot sērijveida sakarus 115200 joslā. Pamatojoties uz saņemto baitu, automašīna virzīsies uz priekšu, atpakaļ, pa kreisi, pa labi utt., Nosūtot motoriem AUGSTU vai ZEMU spriegumu, lai kontrolētu virzienu, kā arī PWM mainīgo starp 0–255, lai kontrolētu ātrumu. Lai izvairītos no sadursmēm, šis kods nolasa arī vērtības, kas nāk no attāluma sensora, un, ja attālums ir mazāks par noteikto slieksni, robots nevirzīsies uz priekšu. Visbeidzot, ja Arduino saņem komandu izsniegt kārumu, tas aktivizēs servos mikroshēmu dozatorā.

9. solis: mobilais robotu automobilis - ESP32 kods

ESP32 ļauj sazināties starp serveri un Arduino, izmantojot Wifi. Tas ir ieprogrammēts atsevišķi no Arduino, un tam ir savs kods:

  • ESP32_Code.ino ir kods ESP32, lai nosūtītu informāciju Arduino
  • app_httpd.cpp ir kods, kas nepieciešams noklusējuma ESP32 tīmekļa serverim, un iestatiet funkciju, lai klausītos taustiņu nospiešanu. Piemērots atkļūdošanai un vietējā wifi testēšanai. To neizmanto saziņai ārpus lokālā tīkla.
  • camera_index.h ir noklusējuma tīmekļa lietojumprogrammas html kods
  • camera_pins.h nosaka tapas atkarībā no ESP32 modeļa

ESP32 kods izmanto Wifi bibliotēku, kā arī ESP32 papildinājumu, ko var instalēt Arduino IDE, veicot šādas darbības:

  1. Arduino IDE dodieties uz Fails> Preferences
  2. Pēc tam cilnē Iestatījumi sadaļā Papildu dēļu pārvaldnieka URL ievadiet šādu "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Tagad atveriet dēļu pārvaldnieku un dodieties uz Rīki> Padome> Dēļu pārvaldnieks un meklējiet ESP32, ierakstot "ESP32"
  4. Jums vajadzētu redzēt "esp32 by Espressif Systems". Noklikšķiniet uz Instalēt.
  5. Tagad ir jāinstalē papildinājums ESP32. Lai pārbaudītu, atgriezieties Arduino IDE un dodieties uz Rīki> Padome un atlasiet “ESP32 Wrover Module”.
  6. Atkal dodieties uz Rīki> Augšupielādes ātrums un iestatiet to uz "115200".
  7. Visbeidzot, dodieties uz Rīki> Sadalīšanās shēma un iestatiet to uz "Milzīga APP (3 MB bez OTA/1 MB SPIFFS)"
  8. Kad esat to pabeidzis, iesaku sekot šai RandomNerdTutorials apmācībai, kurā sīki izskaidrots, kā pabeigt ESP32 iestatīšanu un augšupielādēt kodu, izmantojot FTDI programmētāju ESP32 programmēšana

10. darbība: mikroshēmu dozators

Skaidu dozators
Skaidu dozators

Mikroshēmu dozators ir lēts mobilā robota papildinājums, kas ļauj tam ietekmēt vietējo vidi un mijiedarboties ar cilvēkiem / dzīvniekiem, atstājot garšīgu kārumu. Tas sastāv no kartona ārējās kastes ar 2 servos, kas uzstādīti iekšpusē, kā arī no iekšējās kartona kasetnes, kurā var uzglabāt priekšmetus (piemēram, konfektes vai suņu kārumus). Viens servo darbojas kā vārti, bet otrs izstumj priekšmetu.

*Visi izmēri ir norādīti milimetros

11. solis: kursorsvira

Kursorsvira
Kursorsvira

Lai gan var būt jautri vadīt robotu ar tastatūru, vēl jautrāk un intuitīvāk ir izmantot kursorsviru, kur robots reaģē tieši atkarībā no virzītā virziena. Tā kā šis robots tiek iedarbināts, izmantojot tīmekļa lapā ierakstītos taustiņus, mums bija nepieciešama kursorsvira, lai atdarinātu tastatūru. Tādā veidā lietotāji bez kursorsviras joprojām var vadīt robotu tieši no tastatūras, bet citi var izmantot kursorsviru.

Šim nolūkam mums bija tikai Arduino Uno, kuram nav iespējas izmantot bibliotēku, tāpēc mēs to ieprogrammējām tieši, izmantojot USB protokolu, kas pazīstams kā ierīces programmaparatūras atjauninājums (DFU), kas ļauj arduino mirgot ar vispārēju USB HID tastatūras programmaparatūru. Citiem vārdiem sakot, kad arduino ir pievienots USB, tas vairs netiek atpazīts kā arduino, bet gan kā tastatūra!

12. solis: kursorsvira - shēmas shēma

Kursorsvira - shēmas shēma
Kursorsvira - shēmas shēma

Lūk, kā mēs savienojām kursorsviru.

13. solis: kursorsvira - tastatūras emulators

Lai jūsu Arduino Uno varētu atdarināt tastatūru, jums ir jāprogrammē Amega 16u2 mikroshēma Arduino, izmantojot manuālu ierīces programmaparatūras atjauninājumu (DFU). Turpmākās darbības aprakstīs procesu Windows mašīnai un, cerams, palīdzēs izvairīties no dažām problēmām, ar kurām mēs saskārāmies.

Pirmais solis ir manuāli ierakstīt Atmel USB draiveri Arduino, lai tas tiktu atpazīts kā USB, nevis Arduino, kas ļauj to mirgot ar FLIP programmētāju.

  1. Lejupielādējiet Atmel FLIP programmētāju no šejienes
  2. Pievienojiet savu Arduino Uno
  3. Dodieties uz ierīču pārvaldnieku un atrodiet Arduino. Tas būs zem COM vai nezināmas ierīces. Pievienojiet un izslēdziet to, lai pārliecinātos, ka šī ir pareizā ierīce.
  4. Kad esat atradis Arduino Uno ierīču pārvaldniekā, ar peles labo pogu noklikšķiniet uz tā un atlasiet rekvizītus> Draiveris> Atjaunināt draiveri> Pārlūkot manu datoru, lai atrastu draivera programmatūru> Ļaujiet man izvēlēties no sava datora pieejamo draiveru saraksta> Ir disks> Pārlūkot uz failu "atmel_usb_dfu.inf" un atlasiet to. Tam vajadzētu būt mapē, kurā tika instalēts jūsu Atmel FLIP programmētājs. Manā datorā tas ir šeit: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Instalējiet draiveri
  6. Tagad atgriezieties ierīču pārvaldniekā, un jums vajadzētu redzēt "Atmel USB ierīces" ar Arduino Uno, kas tagad ir marķēts kā ATmega16u2!

Tagad, kad dators atpazīst Arduino Uno kā USB ierīci, mēs varam izmantot FLIP programmētāju, lai to mirgo ar 3 atsevišķiem failiem un pārvērstu par tastatūru.

Ja pēc pirmās daļas atvienojāt Arduino Uno, pievienojiet to atpakaļ.

  1. Atveriet FLIP
  2. Atiestatiet Arduino Uno, īsi pievienojot strāvu zemei.
  3. Noklikšķiniet uz ierīces izvēles (ikona kā mikroshēma) un atlasiet ATmega16U2
  4. Noklikšķiniet uz Atlasīt saziņas līdzekli (ikona kā USB vads) un atlasiet USB. Ja pirmo daļu aizpildījāt pareizi, pārējām pelēkotajām pogām vajadzētu kļūt izmantojamām.
  5. Dodieties uz Fails> Ielādēt heksadatu failu> un augšupielādējiet failu Arduino-usbserial-uno.hex
  6. FLIP logā jums vajadzētu redzēt trīs sadaļas: Darbību plūsma, FLASH bufera informācija un ATmega16U2. Darbību plūsmā atzīmējiet izvēles rūtiņas Dzēst, programmēt un pārbaudīt, pēc tam noklikšķiniet uz Palaist.
  7. Kad šis process ir pabeigts, sadaļā ATmega16U2 noklikšķiniet uz Sākt lietojumprogrammu.
  8. Pievienojiet arduino ciklam, atvienojot to no datora un atkal pievienojot.
  9. Atiestatiet Arduino Uno, īsi pievienojot strāvu zemei.
  10. Atveriet Arduino IDE un augšupielādējiet failā JoyStickControl_Code.ino.
  11. Pievienojiet arduino ciklam, atvienojot to no datora un atkal pievienojot.
  12. Atiestatiet arduino, īslaicīgi pievienojot strāvu zemei.
  13. Atgriezieties pie FLIP un pārliecinieties, vai ierīces atlasē ir rakstīts Atmega16U2
  14. Noklikšķiniet uz Atlasīt saziņas līdzekli un atlasiet USB.
  15. Dodieties uz Fails> Ielādēt heksadatu failu> un augšupielādējiet failu Arduino-keyboard-0.3.hex
  16. FLIP logā jums vajadzētu redzēt trīs sadaļas: Darbību plūsma, FLASH bufera informācija un ATmega16U2. Darbību plūsmā atzīmējiet izvēles rūtiņas Dzēst, programmēt un pārbaudīt, pēc tam noklikšķiniet uz Palaist.
  17. Kad šis process ir pabeigts, noklikšķiniet uz Sākt lietojumprogrammu sadaļā ATmega16U2.
  18. Pievienojiet arduino ciklam, atvienojot to no datora un atkal pievienojot.
  19. Tagad, dodoties uz ierīču pārvaldnieku, zem tastatūras jābūt jaunai HID tastatūras ierīcei.
  20. Atveriet piezīmju grāmatiņu vai jebkuru teksta redaktoru un sāciet kustināt kursorsviru. Jums vajadzētu redzēt ciparu rakstīšanu!

Ja vēlaties mainīt kodu Arduino skicē, piemēram, rakstot jaunas komandas kursorsvirā, jums tas katru reizi jāatspoguļo ar visiem 3 failiem.

Dažas noderīgas saites: Arduino DFUAtLibUsbDfu.dll nav atrasts

Šī tastatūras emulatora pamatā ir šī Maikla apmācība 2012. gada 24. jūnijā.

14. darbība. Tīkla komunikācija

Tīkla komunikācija
Tīkla komunikācija

Lai saņemtu video straumi un nosūtītu komandas robotam no jebkuras vietas pasaulē, mums ir nepieciešams veids, kā iegūt datus no ESP32-CAM un no tā. Tas tiek darīts divās daļās - savienojuma apstrādātājs jūsu lokālajā tīklā un publiskais serveris. Lai to panāktu, lejupielādējiet trīs failus:

  • Handlers.py: pārsūta informāciju no ESP32-CAM un publiskā servera (pārbaudīts Python 3.8)
  • Flask_app.py: nosaka, kā jūsu lietotne reaģē uz ienākošajiem pieprasījumiem.
  • Robot_stream.html: renderē video jūsu pārlūkprogrammā un klausās komandas, izmantojot tastatūru / kursorsviru (pārbaudīts pārlūkā Chrome)

Savienojumu apstrādātājs Jūs varat to kodēt tieši vietnē app_httpd.cpp, bet ērtākai atkļūdošanai mēs izmantojam Python skriptu, kas darbojas datorā, kas savienots ar to pašu tīklu. Atveriet handler.py un atjauniniet savu IP adresi un lietotājvārdu uz savu, un esat gatavs doties. Straume sāksies, palaižot šo failu.

Publiskais serveris Lai piekļūtu visam internetā esošajam, varat palaist serveri ar izvēlēto PaaS. Pythonanywhere (PA) iestatīšana aizņem mazāk nekā 5 minūtes:

  1. Reģistrējieties kontam un piesakieties
  2. Dodieties uz cilni “Web” un nospiediet “Pievienot jaunu tīmekļa lietotni”, izvēlieties kolbu un Python 3.6
  3. Kopējiet flask_app.py direktorijā /mysite
  4. Kopējiet robot_stream.html direktorijā /mysite /templates
  5. Noklikšķiniet uz “Atkārtoti ielādēt”

Un … viss ir gatavs!

Atruna: šī tīkla darbplūsma ir ātra un vienkārša, bet ļoti tālu no ideāla. RTMP vai kontaktligzdas būtu piemērotākas straumēšanai, taču tās netiek atbalstītas PA, un tām ir nepieciešama pieredze tīkla izveidē un servera iestatīšanā. Ieteicams arī pievienot kādu drošības mehānismu, lai kontrolētu piekļuvi.

15. solis: salieciet to visu kopā

Tagad ieslēdziet savu robotu, palaidiet datorā handler.py (savienots ar to pašu tīklu kā robots), un jūs varat vadīt robotu no pārlūkprogrammas, pamatojoties uz jūsu iestatīto URL no jebkuras vietas. (piemēram,

Ieteicams: