Talaan ng mga Nilalaman:

Robot ng Pagkakaroon ng Virtual: 15 Mga Hakbang
Robot ng Pagkakaroon ng Virtual: 15 Mga Hakbang

Video: Robot ng Pagkakaroon ng Virtual: 15 Mga Hakbang

Video: Robot ng Pagkakaroon ng Virtual: 15 Mga Hakbang
Video: Magiging piloto na si Eva ng Voltes V robot? | Voltes V Legacy 2024, Nobyembre
Anonim
Image
Image
Mobile Robot Car
Mobile Robot Car

Nakikipag-ugnay ang mobile robot na ito sa pisikal na nakapaligid, sa pamamagitan ng kumakatawan sa "virtual na presensya" ng taong kinokontrol ito nang malayuan. Maaari itong ma-access ng sinuman, kahit saan sa mundo, upang maipamahagi ang mga pakikitungo at makipaglaro sa iyo.

Ang gawain dito ay binuo ng dalawang tao (isa sa Alemanya at isa sa US) bilang isang pagtatangka na lumipat nang lampas sa tradisyunal na paraan ng komunikasyon na nakabatay sa internet sa pamamagitan ng paglikha ng isang pisikal na interface para sa remote na pakikipag-ugnayan. Habang patuloy na nakakaapekto ang COVID-19 sa mundo, at responsable ang bawat isa sa paglilimita sa aming pisikal na pagkakalantad sa mga tao, sinubukan naming ibalik ang nasasalat na koneksyon na bahagi ng pisikal na pakikipag-ugnay.

Ito ay batay sa ESP32-Camera-Robot-FPV-Teacher-Entry na Maaaring turuan at mabago upang maisama ang distansya sensor, gamutin ang dispenser at "kontrol mula sa kahit saan sa mundo" na kakayahan, sa kondisyon na mayroon kang isang medyo matatag na koneksyon sa internet.

Mga gamit

Ang proyekto ay may 4 pangunahing bahagi - isang Mobile Robot Car, isang Chip Dispenser, isang Joystick, at Network Communication Setup.

Mobile Robot Car

  • Breadboard
  • 2 Wheel Drive Motor at Chassis Robot Kit (may kasamang mga gulong, DC motor, mounting board at Turnilyo)
  • Arduino Mega 2560 (kung bumuo ka nang walang distansya sensor o ang Chip Dispenser isang Uno ay magkakaroon ng sapat na mga pin)
  • (3) 9V Baterya (magkaroon ng ilang higit pa sa paligid dahil tatanggalin mo ang mga ito sa pag-debug)
  • LM2596 Power Supply Module DC / DC Buck 3A Regulator (o katulad)
  • ESP32-CAM Wifi Module
  • FT232RL FTDI USB sa TTL Serial Converter (para sa pagprograma ng ESP32-CAM)
  • HC-SR04 Ultrasonic Distance Sensor
  • L298N Motor Driver
  • (3) LEDS (anumang kulay)
  • (3) 220 Ohm Resistors

Dispenser ng Chip

  • (2) SG90 Mga Serbisyo
  • Karton / karton

Joystick

  • Arduino Uno
  • Module ng Joystick
  • Mini Breadboard, (1) LED, (1) 220 Ohm Resistor (opsyonal)

Iba pa

Maraming Breadboard Jumper WiresExtra Cardboard / PaperboardTapeScissorsRuler / Pagsukat ng TapeSmall Philips ScrewdriverSmall Flathead Screwdriver

Pasensya =)

Hakbang 1: Mobile Robot Car

Ang chassis ng Robot Car ay nagsisilbing isang mobile platform, na may isang Arduino MEGA bilang pangunahing micro-controller na nagmamaneho ng mga motor, binabasa ang mga halaga ng sensor at pinapagalaw ang mga servo. Karamihan sa mga pagkilos ay ginaganap sa pamamagitan ng pagkakaroon ng Arduino MEGA na makatanggap ng mga utos sa pamamagitan ng serial na komunikasyon, na ipinadala mula sa ESP32-CAM. Habang nagbibigay ang ESP32 ng live stream ng camera upang makontrol ang robot, ang iba pang pagpapaandar nito ay upang pamahalaan ang isang wireless na koneksyon sa pagitan ng robot at ng server, samakatuwid pinapayagan ang mga gumagamit na kontrolin ito mula sa kahit saan sa mundo. Ang ESP32 ay tumatanggap ng mga utos mula sa web page sa pamamagitan ng keypress at ipinapadala ang mga ito sa Arduino MEGA bilang mga halaga ng char. Batay sa natanggap na halagang ang kotse ay magpapatuloy, paatras atbp Dahil ang remote control sa pamamagitan ng internet ay nakasalalay sa maraming mga panlabas na kadahilanan kabilang ang mataas na latency, mahinang kalidad ng stream, at kahit na mga pagkakakonekta, isang distansya sensor ay isinasama upang mapanatili ang robot mula sa pag-crash sa mga bagay. * Dahil sa mataas at nagbabagu-bago na mga kinakailangan ng kuryente ng chip ng ESP32 isang rekomendasyon para sa Power Supply Regulator ay inirerekomenda para magamit sa lakas ng baterya (tingnan ang diagram ng mga kable).

Hakbang 2: Mobile Robot Car - Circuit Diagram

Mobile Robot Car - Diagram ng Circuit
Mobile Robot Car - Diagram ng Circuit

Dadalhin ka namin sa pamamagitan ng pag-iipon ng hakbang na ito.

Hakbang 3: Mobile Robot Car - Assembly (Motors)

Mobile Robot Car - Assembly (Motors)
Mobile Robot Car - Assembly (Motors)

Matapos mong tipunin ang 2WD chassis, nagsisimula kami sa pamamagitan ng pagkonekta sa mga motor at baterya sa Arduino MEGA sa pamamagitan ng driver ng L298N.

Hakbang 4: Mobile Robot Car - Assembly (Distance Sensor)

Mobile Robot Car - Assembly (Distance Sensor)
Mobile Robot Car - Assembly (Distance Sensor)

Tulad ng may ilang mga bahagi upang kumonekta, magdagdag tayo ng isang breadboard, upang madali nating maiugnay ang lakas at ibinahagi ang lupa. Pagkatapos naming ayusin muli ang mga wire, ikonekta ang distansya sensor at ayusin ito sa harap ng robot.

Hakbang 5: Mobile Robot Car - Assembly (ESP32 CAM)

Mobile Robot Car - Assembly (ESP32 CAM)
Mobile Robot Car - Assembly (ESP32 CAM)

Susunod, ikonekta ang module na ESP32-CAM, at ayusin ito sa tabi ng distansya sensor malapit sa harap ng robot. Alalahanin ang bahagyang nagugutom na sangkap na ito ay nangangailangan ng sarili nitong baterya at isang DC-regulator.

Hakbang 6: Mobile Robot Car - Assembly (Chip Dispenser)

Mobile Robot Car - Assembly (Chip Dispenser)
Mobile Robot Car - Assembly (Chip Dispenser)

Ngayon, idagdag natin ang chip-dispenser (higit pa dito sa seksyong "Chip Dispenser"). Wire up ang dalawang servos ayon sa diagram ng Fritzing, at ayusin ang dispenser sa buntot ng robot.

Hakbang 7: Mobile Robot Car - Assembly (Cookies!)

Mobile Robot Car - Assembly (Cookies!)
Mobile Robot Car - Assembly (Cookies!)

Sa wakas, nagdagdag kami ng mga gamot sa dispenser!

Hakbang 8: Mobile Robot Car - Arduino Code

Ang RobotCar_Code ay ang code na kakailanganin mong i-load sa Arduino Mega.

Narito kung paano ito gumagana: ang Arduino ay nakikinig sa mga byte na ipinadala mula sa ESP32 sa pamamagitan ng serial na komunikasyon sa bandang 115200. Batay sa natanggap na byte, ang kotse ay uusad, paatras, pakaliwa, kanan atbp sa pamamagitan ng pagpapadala ng alinman sa TAAS o MABABANG boltahe sa mga motor upang makontrol ang direksyon, pati na rin ang isang variable na PWM sa pagitan ng 0-255 upang makontrol ang bilis. Upang maiwasan ang mga banggaan ang code na ito ay binabasa din ang mga halagang nagmumula mula sa distansya sensor at kung ang distansya ay mas mababa sa isang tinukoy na threshold, ang robot ay hindi sumulong. Panghuli, kung ang Arduino ay tumatanggap ng isang utos na magtapon ng isang paggamot, buhayin nito ang mga servo sa Chip Dispenser.

Hakbang 9: Mobile Robot Car - ESP32 Code

Pinapayagan ng ESP32 ang komunikasyon sa pagitan ng server at Arduino sa pamamagitan ng Wifi. Ito ay nai-program na hiwalay mula sa Arduino, at mayroong sariling code:

  • Ang ESP32_Code.ino ay ang code para sa ESP32 upang magpadala ng impormasyon sa Arduino
  • Ang app_httpd.cpp ay ang code na kinakailangan para sa default na ESP32 webserver at itinakda ang pagpapaandar upang makinig para sa mga keypress. Mabuti para sa pag-debug at pagsubok sa lokal na wifi. Hindi ito ginagamit para sa komunikasyon sa labas ng lokal na network.
  • Ang camera_index.h ay ang html code para sa default na web application
  • tinutukoy ng camera_pins.h ang mga pin depende sa modelo ng ESP32

Gumagamit ang code ng ESP32 sa Wifi library pati na rin ang Add-on ng ESP32, na maaaring mai-install sa Arduino IDE sa pamamagitan ng pagsunod sa mga hakbang na ito:

  1. Sa Arduino IDE pumunta sa File> Mga Kagustuhan
  2. Pagkatapos sa tab na Mga Setting sa ilalim ng Karagdagang Mga Boards Manager URL ipasok ang sumusunod na "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Ngayon buksan ang Boards Manager at pumunta sa Tools> Board> Boards Manager at hanapin ang ESP32 sa pamamagitan ng pag-type ng "ESP32"
  4. Dapat mong makita ang "esp32 ng Espressif Systems". I-click ang I-install.
  5. Ngayon dapat na mai-install ang add-on na ESP32. Upang suriin bumalik sa Arduino IDE at pumunta sa Tools> Board at piliin ang "ESP32 Wrover Module".
  6. Muli pumunta sa Mga Tool> Bilis ng Pag-upload at itakda ito sa "115200".
  7. Panghuli, pumunta sa Mga Tool> Partition Scheme at itakda ito sa "Napakalaking APP (3MB Walang OTA / 1MB SPIFFS)
  8. Kapag nakumpleto mo na ito, inirerekumenda kong sundin ang tutorial na ito ng RandomNerdTutorials na nagpapaliwanag nang detalyado kung paano i-finalize ang pag-set up ng ESP32 at i-upload ang code kasama ang FTDI ProgrammerProgramming ang ESP32

Hakbang 10: Dispenser ng Chip

Dispenser ng Chip
Dispenser ng Chip

Ang Chip Dispenser ay isang murang karagdagan sa mobile robot na pinapayagan itong makaapekto sa lokal na kapaligiran at makipag-ugnay sa mga tao / hayop sa pamamagitan ng pag-iwan ng masarap na gamutin. Binubuo ito ng isang panlabas na kahon ng karton na may 2 servos na naka-mount sa loob, pati na rin isang panloob na karton ng karton na nagtataglay ng mga item (tulad ng kendi o aso na tinatrato) upang maalis. Ang isang servo ay gumaganap bilang isang gate habang ang isa ay itinutulak ang item sa labas.

* Lahat ng mga sukat ay nasa millimeter

Hakbang 11: Joystick

Joystick
Joystick

Habang maaaring maging kasiya-siya upang makontrol ang isang robot gamit ang keyboard, mas masaya at intuitive na gumamit ng isang joystick, kung saan direktang reaksyon ang robot batay sa direksyong itinulak mo. Dahil ang robot na ito ay na-aktibo sa pamamagitan ng mga keypress na naitala sa webpage kailangan namin ang aming joystick upang tularan ang isang keyboard. Sa ganitong paraan ang mga gumagamit na walang isang joystick ay maaari pa ring makontrol ang robot nang direkta mula sa isang keyboard, ngunit ang iba ay maaaring gumamit ng joystick.

Para sa mga ito nagkaroon lamang kami ng Arduino Uno na walang kakayahang gamitin ang library kaya't na-program namin ito nang direkta gamit ang isang USB protocol na kilala bilang Device Firmware Update (DFU) na nagpapahintulot sa arduino na ma-flash gamit ang isang generic na USB HID keyboard firmware. Sa madaling salita, kapag ang arduino ay naka-plug sa usb hindi na ito kinikilala bilang isang arduino ngunit bilang isang keyboard!

Hakbang 12: Joystick - Circuit Diagram

Joystick - Circuit Diagram
Joystick - Circuit Diagram

Narito kung paano namin nag-wire ang joystick.

Hakbang 13: Joystick - Keyboard Emulator

Upang ang iyong Arduino Uno ay gayahin ang isang keyboard, kailangan mong direktang programa ang Atmega16u2 chip sa Arduino sa pamamagitan ng isang Manu-manong Device Firmware Update (DFU). Ang mga sumusunod na hakbang ay ilalarawan ang proseso para sa isang Windows machine, at sana ay matulungan kang maiwasan ang ilan sa mga isyung nasagasaan namin.

Ang unang hakbang ay manu-manong isulat ang Atmel usb driver sa Arduino kaya kinikilala ito bilang isang USB at hindi isang Arduino na nagbibigay-daan sa ito upang mai-flash kasama ang FLIP programmer.

  1. I-download ang Atmel's FLIP Programmer mula rito
  2. I-plug ang iyong Arduino Uno
  3. Pumunta sa Device Manager at hanapin ang Arduino. Ito ay sasailalim sa COM o Unknown Device. I-plug in at palabas upang matiyak na ito ang tamang aparato.
  4. Kapag nahanap mo ang Arduino Uno sa Device Manager, i-right click ito at piliin ang mga pag-aari> Driver> Update Driver> Browse My Computer For Driver Software> Hayaan akong pumili mula sa isang listahan ng mga magagamit na driver sa aking computer> Magkaroon ng Disk> Mag-browse sa file "atmel_usb_dfu.inf" at piliin ito. Dapat itong nasa folder kung saan naka-install ang iyong Atmel FLIP Programmer. Sa aking computer narito ito: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. I-install ang driver
  6. Bumalik ngayon sa Device Manager dapat mong makita ang isang "Atmel USB Devices" na may Arduino Uno na may label na ngayon bilang isang ATmega16u2!

Ngayon na kinikilala ng computer ang Arduino Uno bilang isang USB Device maaari naming gamitin ang FLIP Programmer upang i-flash ito sa 3 magkakahiwalay na mga file at gawin itong isang keyboard.

Kung na-unplug mo ang iyong Arduino Uno pagkatapos ng unang bahagi, i-plug in muli ito.

  1. Buksan ang FLIP
  2. I-reset ang Arduino Uno sa pamamagitan ng maikling pagdugtong ng lakas sa lupa.
  3. I-click ang Pagpili ng Device (icon tulad ng isang microchip) at piliin ang ATmega16U2
  4. I-click ang Piliin ang isang Medium ng Komunikasyon (icon tulad ng isang usb cord) at piliin ang USB. Kung nakumpleto mo nang tama ang unang bahagi ang iba pang mga greyed na pindutan ay dapat magamit.
  5. Pumunta sa File> Load Hex File> at i-upload ang file na Arduino-usbserial-uno.hex
  6. Sa window ng FLIP dapat mong makita ang tatlong mga seksyon: Daloy ng Mga Operasyon, Impormasyon ng FLASH Buffer, at ATmega16U2. Sa Daloy ng Mga Operasyon suriin ang mga kahon para sa Burahin, Program, at I-verify, pagkatapos ay i-click ang Run.
  7. Kapag nakumpleto ang prosesong ito, i-click ang Start Application sa seksyong ATmega16U2.
  8. I-plug ang arduino sa pamamagitan ng pag-unplug nito mula sa computer at i-plug ito muli.
  9. I-reset ang Arduino Uno sa pamamagitan ng maikling pagdugtong ng lakas sa lupa.
  10. Buksan ang Arduino IDE at i-upload ang file na JoyStickControl_Code.ino sa pisara.
  11. I-plug ang arduino sa pamamagitan ng pag-unplug nito mula sa computer at i-plug ito muli.
  12. I-reset ang arduino sa pamamagitan ng maikling pagdugtong ng lakas sa lupa.
  13. Bumalik sa FLIP, tiyakin na ang Pinili ng Device ay nagsabi ng Atmega16U2
  14. I-click ang Piliin ang isang Medium ng Komunikasyon at piliin ang USB.
  15. Pumunta sa File> Load Hex File> at i-upload ang file na Arduino-keyboard-0.3.hex
  16. Sa window ng FLIP dapat mong makita ang tatlong mga seksyon: Daloy ng Mga Operasyon, Impormasyon ng FLASH Buffer, at ATmega16U2. Sa Daloy ng Mga Operasyon suriin ang mga kahon para sa Burahin, Program, at I-verify, pagkatapos ay i-click ang Run.
  17. Kapag nakumpleto ang prosesong ito, i-click ang Simulan ang Application sa seksyong ATmega16U2.
  18. I-plug ang arduino sa pamamagitan ng pag-unplug nito mula sa computer at i-plug ito muli.
  19. Ngayon kapag nagpunta ka sa Device Manager dapat mayroong isang bagong HID Keyboard Device sa ilalim ng Mga Keyboard.
  20. Magbukas ng isang notepad o anumang text editor at simulang ilipat ang joystick. Dapat mong makita ang mga numero na nai-type!

Kung nais mong baguhin ang code sa Arduino sketch, halimbawa ng pagsusulat ng mga bagong utos sa joystick, kakailanganin mong i-flash ito sa lahat ng 3 mga file sa bawat oras.

Ang ilang mga kapaki-pakinabang na link: Hindi nahanap ang Arduino DFUAtLibUsbDfu.dll

Ang emulator ng keyboard na ito ay batay sa tutorial na ito ni Michael noong Hunyo 24, 2012.

Hakbang 14: Komunikasyon sa Network

Komunikasyon sa Network
Komunikasyon sa Network

Upang makatanggap ng video stream at magpadala ng mga utos sa robot mula sa kahit saan sa mundo, kailangan namin ng isang paraan ng pagkuha ng data papunta at mula sa ESP32-CAM. Ginagawa ito sa dalawang bahagi, isang handler ng koneksyon sa iyong lokal na network, at isang pampublikong server. I-download ang tatlong mga file upang makamit ito:

  • Handlers.py: nagpapasa ng impormasyon mula sa ESP32-CAM at sa pampublikong server (nasubukan sa Python 3.8)
  • Ang Flask_app.py: tumutukoy sa kung paano tumutugon ang iyong app sa mga papasok na kahilingan.
  • Robot_stream.html: nagbibigay ng video sa iyong browser at nakikinig para sa mga utos sa pamamagitan ng keyboard / joystick (nasubukan sa Chrome)

Maaari mong mai-code ito nang direkta sa app_httpd.cpp, ngunit para sa mas madaling pag-debug ay gumagamit kami ng isang Python script na tumatakbo sa isang PC na konektado sa parehong network. Buksan ang handlers.py at i-update ang IP address at username sa iyong sarili, at handa ka nang pumunta. Magsisimula ang stream kapag pinatakbo mo ang file na ito.

Public Server Upang ma-access ang lahat sa internet, maaari kang magsimula sa isang server na may gusto mong PaaS. Sa pythonanywhere (PA) pagse-set up na ito ay kukuha ng mas mababa sa 5 minuto:

  1. Mag-sign up para sa isang account at mag-log in
  2. Pumunta sa tab na "Web" at pindutin ang "Magdagdag ng isang bagong Web App", piliin ang Flask at Python 3.6
  3. Kopyahin ang flask_app.py sa direktoryo / mysite
  4. Kopyahin ang robot_stream.html sa direktoryo / mysite / template
  5. I-click ang "Reload"

At… handa ka na!

Pagwawaksi: Ang daloy ng trabaho sa networking na ito ay mabilis at simple ngunit napakalayo mula sa perpekto. Ang RTMP o sockets ay magiging mas naaangkop para sa streaming, ngunit hindi sila suportado sa PA at nangangailangan ng ilang karanasan sa pag-set up ng network at server. Inirerekumenda rin na magdagdag ka ng ilang mekanismo sa seguridad upang makontrol ang pag-access.

Hakbang 15: Pagsasama-sama sa Lahat ng Ito

Ngayon, i-on ang iyong robot, magpatakbo ng handlers.py sa isang computer (konektado sa parehong network tulad ng robot), at makontrol mo ang robot mula sa isang browser batay sa url na itinakda mo mula sa kahit saan mo nais. (hal.

Inirerekumendang: