Përmbajtje:

Roboti i Prezencës Virtuale: 15 Hapa
Roboti i Prezencës Virtuale: 15 Hapa

Video: Roboti i Prezencës Virtuale: 15 Hapa

Video: Roboti i Prezencës Virtuale: 15 Hapa
Video: MOSTING, GHOSTING, CASPERING▪️ZOMBIEING, BREADCRUMBING, ORBITING, HAUNTING▪️BENCHING:EGOICA PERFIDIA 2024, Nëntor
Anonim
Image
Image
Makinë robot celular
Makinë robot celular

Ky robot celular ndërvepron me mjedisin e tij fizik, duke përfaqësuar "praninë virtuale" të personit që e kontrollon atë nga distanca. Mund të arrihet nga kushdo, kudo në botë, për të shpërndarë trajtime dhe për të luajtur me ju.

Puna këtu është zhvilluar nga dy persona (një në Gjermani dhe një në SHBA) si një përpjekje për të kaluar përtej mjeteve tradicionale të komunikimit të bazuar në internet duke krijuar një ndërfaqe fizike për ndërveprim në distancë. Ndërsa COVID-19 vazhdon të ndikojë në botë, dhe të gjithë janë përgjegjës për kufizimin e ekspozimit tonë fizik ndaj njerëzve, ne përpiqemi të kthejmë lidhjen e prekshme që është pjesë e ndërveprimit fizik.

Ajo bazohet në ESP32-Camera-Robot-FPV-Teacher-Entry Instructable dhe e modifikuar për të përfshirë sensorin e distancës, shpërndarësin e trajtimit dhe aftësinë "kontroll nga kudo në botë", me kusht që të keni një lidhje disi të qëndrueshme në internet.

Furnizimet

Projekti ka 4 pjesë kryesore - një makinë robotike celulare, një bombol me vrimë nxjerrëse çipi, një xhojstik dhe konfigurim i komunikimit të rrjetit.

Makinë robot celular

  • Breadboard
  • Motor me 2 rrota dhe kuti roboti me shasi (përfshin rrota, motorë DC, bordin e montimit dhe vida)
  • Arduino Mega 2560 (nëse ndërtoni pa sensorin e distancës ose shpërndarësin e çipave, Uno do të ketë kunja të mjaftueshme)
  • (3) Bateri 9V (keni edhe disa të tjera përreth pasi do t'i shkarkoni ato të korrigjimit)
  • LM2596 Moduli i Furnizimit me Energji DC/DC Buck 3A Regulator (ose i ngjashëm)
  • Moduli WIFI ESP32-CAM
  • FT232RL FTDI USB në TTL Serial Converter (për programimin e ESP32-CAM)
  • Sensori i distancës tejzanor HC-SR04
  • Drejtuesi i motorit L298N
  • (3) LEDS (çdo ngjyrë)
  • (3) Rezistenca 220 Ohm

Dispenser çipi

  • (2) SG90 Servos
  • Karton / Karton

Xhojstik

  • Arduino Uno
  • Moduli i xhojstikut
  • Mini Breadboard, (1) LED, (1) Rezistencë 220 Ohm (opsionale)

Tjetër

Shumë Tela Jumper Breadboard Extra Cardboard / Paperboard Tape Gërshërë Mbajtësi / Shiriti Matës Kaçavidë e vogël PhilipsShkëndërrim Kaçavidë e Vogël Flathead

Durim =)

Hapi 1: Makinë robot celular

Shasia Robot Car shërben si një platformë e lëvizshme, me një Arduino MEGA si mikrokontrolluesi kryesor që drejton motorët, lexon vlerat e sensorit dhe aktivizon servot. Shumica e veprimeve kryhen duke kërkuar që Arduino MEGA të marrë komanda përmes komunikimit serik, të dërguar nga ESP32-CAM. Ndërsa ESP32 siguron transmetim të drejtpërdrejtë të kamerës për të kontrolluar robotin, funksioni tjetër i tij është të menaxhojë një lidhje pa tel midis robotit dhe serverit, kështu që lejon përdoruesit ta kontrollojnë atë nga kudo në botë. ESP32 merr komanda nga uebfaqja përmes shtypjes së tastit dhe i dërgon ato në Arduino MEGA si vlera të karakterit. Bazuar në vlerën e marrë makina do të shkojë përpara, prapa etj. Për shkak se telekomanda përmes internetit varet nga shumë faktorë të jashtëm duke përfshirë vonesën e lartë, cilësinë e dobët të transmetimit dhe madje edhe shkyçjet, një sensor distancë është i përfshirë për të mos lejuar që roboti të rrëzohet në objekte.*Për shkak të kërkesave të larta dhe të luhatshme të energjisë të çipit ESP32, një Rregullator i Furnizimit me Energji rekomandohet për përdorim me energjinë e baterisë (shiko diagramin e telave).

Hapi 2: Makinë robot celular - Diagrami i qarkut

Makinë Robot Mobile - Diagrami i Qarkut
Makinë Robot Mobile - Diagrami i Qarkut

Ne do t'ju përcjellim duke e montuar këtë hap pas hapi.

Hapi 3: Makinë robotike celulare - Asambleja (Motorët)

Makinë Robot Mobile - Kuvend (Motorë)
Makinë Robot Mobile - Kuvend (Motorë)

Pasi të keni montuar shasinë 2WD, ne fillojmë duke lidhur motorët dhe baterinë me Arduino MEGA përmes drejtuesit L298N.

Hapi 4: Makinë robotike celulare - Asambleja (Sensori i distancës)

Makinë Robot Mobile - Asamble (Sensor në distancë)
Makinë Robot Mobile - Asamble (Sensor në distancë)

Meqenëse ka mjaft përbërës për t'u lidhur, le të shtojmë një dërrasë buke, kështu që ne mund të lidhim fuqinë dhe tokën e përbashkët më lehtë. Pasi të riorganizojmë telat, lidhim sensorin e distancës dhe e rregullojmë atë në pjesën e përparme të robotit.

Hapi 5: Makinë robot celular - Asamble (ESP32 CAM)

Makinë Robot Mobile - Asamble (ESP32 CAM)
Makinë Robot Mobile - Asamble (ESP32 CAM)

Tjetra, lidhni modulin ESP32-CAM dhe rregulloni atë pranë sensorit të distancës pranë pjesës së përparme të robotit. Mos harroni se ky komponent mjaft i etur për energji kërkon baterinë e tij dhe një rregullator DC.

Hapi 6: Makinë robotike celulare - Kuvend (shpërndarës i çipave)

Makinë Robot Mobile - Asamble (Dispenser Chip)
Makinë Robot Mobile - Asamble (Dispenser Chip)

Tani, le të shtojmë shpërndarësin e çipave (më shumë për këtë në seksionin "Dispenser Chip"). Lidhni dy servo sipas diagramit Fritzing dhe fiksojeni shpërndarësin në bishtin e robotit.

Hapi 7: Makina Robot Mobile - Asamble (Cookies!)

Makinë Robot Mobile - Asamble (Cookies!)
Makinë Robot Mobile - Asamble (Cookies!)

Së fundi, ne shtojmë trajtime në bombol me vrimë nxjerrëse!

Hapi 8: Makinë robot celular - Kodi Arduino

RobotCar_Code është kodi që do t'ju duhet të ngarkoni në Arduino Mega.

Ja se si funksionon: Arduino dëgjon bajtët që dërgohen nga ESP32 përmes komunikimit serik në brezin 115200. Bazuar në bajtin e marrë, makina do të lëvizë përpara, prapa, majtas, djathtas etj. Duke dërguar një tension të lartë ose të ulët në motorët për të kontrolluar drejtimin, si dhe një ndryshore PWM midis 0-255 për të kontrolluar shpejtësinë. Për të shmangur përplasjet ky kod lexon edhe vlerat që vijnë nga sensori i distancës dhe nëse distanca është më e vogël se një prag i caktuar, roboti nuk do të ecë përpara. Së fundmi, nëse Arduino merr një komandë për të shpërndarë një trajtim, ai do të aktivizojë servot në Dispenser Chip.

Hapi 9: Makinë robot celular - Kodi ESP32

ESP32 lejon komunikimin midis serverit dhe Arduino përmes Wifi. Isshtë programuar veçmas nga Arduino, dhe ka kodin e vet:

  • ESP32_Code.ino është kodi për ESP32 për të dërguar informacion në Arduino
  • app_httpd.cpp është kodi i nevojshëm për serverin e paracaktuar të uebit ESP32 dhe vendos funksionin për të dëgjuar shtypjet e tastit. E mirë për korrigjimin dhe testimin në wifi lokal. Nuk përdoret për komunikim jashtë rrjetit lokal.
  • camera_index.h është kodi html për aplikacionin e paracaktuar të uebit
  • camera_pins.h përcakton kunjat në varësi të modelit ESP32

Kodi ESP32 përdor bibliotekën Wifi si dhe Shtesën ESP32, të cilat mund të instalohen në Arduino IDE duke ndjekur këto hapa:

  1. Në Arduino IDE shkoni te Skedari> Preferencat
  2. Pastaj në skedën Cilësimet nën URL -në e Menaxherit të Bordeve shtesë futni sa vijon "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Tani hapni Menaxherin e bordeve dhe shkoni te Mjetet> Bordi> Menaxherët e bordeve dhe kërkoni për ESP32 duke shtypur "ESP32"
  4. Ju duhet të shihni "esp32 by Espressif Systems". Kliko Instalo.
  5. Tani shtesa ESP32 duhet të instalohet. Për të kontrolluar, kthehuni te Arduino IDE dhe shkoni te Veglat> Bordi dhe zgjidhni "Modulin ESP32 Wrover".
  6. Përsëri shkoni te Mjetet> Shpejtësia e Ngarkimit dhe vendoseni në "115200".
  7. Së fundmi, shkoni te Mjetet> Skema e Ndarjes dhe vendoseni në "APP e madhe (3MB Pa OTA/1MB SPIFFS)
  8. Pasi ta keni përfunduar këtë, unë rekomandoj të ndiqni këtë tutorial nga RandomNerdTutorials i cili shpjegon në detaje se si të finalizoni vendosjen e ESP32 dhe ngarkimin e kodit me Programuesin FTDIProgramimi i ESP32

Hapi 10: Shpërndarësi i çipave

Dispenser çipi
Dispenser çipi

Dispenser Chip është një shtesë e lirë për robotin celular duke e lejuar atë të ndikojë në mjedisin lokal dhe të ndërveprojë me njerëzit / kafshët duke lënë një kënaqësi të shijshme. Përbëhet nga një kuti e jashtme prej kartoni me 2 servos të montuar brenda, si dhe një fishek kartoni të brendshëm i cili mban sende (të tilla si ëmbëlsira ose trajtime qensh) për t'u shpërndarë. Një servo vepron si një portë ndërsa tjetri e shtyn artikullin jashtë.

*Të gjitha dimensionet janë në milimetra

Hapi 11: Xhojstik

Xhojstik
Xhojstik

Ndërsa mund të jetë argëtuese të kontrollosh një robot me tastierë, është edhe më argëtuese dhe intuitive të përdorësh një levë, ku roboti reagon drejtpërdrejt bazuar në drejtimin që shtyn. Meqenëse ky robot aktivizohet përmes shtypjeve të tastit të regjistruar në faqen në internet, ne kishim nevojë për levën tonë për të imituar një tastierë. Në këtë mënyrë përdoruesit pa një levë ende mund të kontrollojnë robotin drejtpërdrejt nga një tastierë, por të tjerët mund të përdorin levën.

Për këtë ne kishim vetëm një Arduino Uno i cili nuk ka aftësinë për të përdorur bibliotekën, kështu që ne e programuam atë drejtpërdrejt duke përdorur një protokoll USB të njohur si Device Firmware Update (DFU) i cili lejon që arduino të ndizet me një firmware gjenerik të tastierës USB HID Me Me fjalë të tjera, kur arduino lidhet me usb nuk njihet më si arduino por si tastierë!

Hapi 12: Xhojstik - Diagrami i Qarkut

Xhojstik - Diagrami i Qarkut
Xhojstik - Diagrami i Qarkut

Ja se si e lidhëm levën me levë.

Hapi 13: Joystick - Emulator i tastierës

Në mënyrë që Arduino Uno juaj të imitojë një tastierë, duhet të programoni drejtpërdrejt çipin Atmega16u2 në Arduino përmes një përditësimi manual të pajisjes (DFU). Hapat e mëposhtëm do të përshkruajnë procesin për një makinë Windows, dhe shpresojmë t'ju ndihmojnë të shmangni disa nga çështjet që hasëm.

Hapi i parë është të shkruani manualisht drejtuesin Atmel usb në Arduino kështu që ai njihet si një USB dhe jo një Arduino i cili mundëson që ai të ndizet me programuesin FLIP.

  1. Shkarkoni Programuesin Atmel FLIP nga këtu
  2. Lidhni Arduino Uno -n tuaj
  3. Shkoni te Device Manager dhe gjeni Arduino. Do të jetë nën COM ose Pajisje të Panjohur. Lidheni dhe dilni për të siguruar që kjo është pajisja e duhur.
  4. Pasi të keni gjetur Arduino Uno në Menaxherin e Pajisjes, klikoni me të djathtën mbi të dhe zgjidhni vetitë> Shoferi> Përditëso shoferin> Shfletoni kompjuterin tim për programin e shoferit> Më lejoni të zgjedh nga një listë e drejtuesve të disponueshëm në kompjuterin tim> Disk> Shfletoni te skedarin "atmel_usb_dfu.inf" dhe zgjidhni atë. Kjo duhet të jetë në dosjen ku është instaluar Programuesi juaj Atmel FLIP. Në kompjuterin tim është këtu: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Instaloni shoferin
  6. Tani kthehuni te Menaxheri i Pajisjeve që duhet të shihni një "Pajisje USB Atmel" me Arduino Uno tani të etiketuar si një ATmega16u2!

Tani që kompjuteri njeh Arduino Uno si një pajisje USB, ne mund të përdorim programuesin FLIP për ta ndezur atë me 3 skedarë të veçantë dhe për ta kthyer atë në një tastierë.

Nëse e keni shkëputur prizën tuaj Arduino Uno pas pjesës së parë, lidheni përsëri.

  1. Hape FLIP
  2. Rivendosni Arduino Uno duke lidhur shkurtimisht fuqinë me tokën.
  3. Klikoni Përzgjedhja e Pajisjes (ikona si një mikroçip) dhe zgjidhni ATmega16U2
  4. Klikoni Zgjidhni një medium komunikimi (ikonë si një kordon USB) dhe zgjidhni USB. Nëse e keni përfunduar saktë pjesën e parë, butonat e tjerë të thinjur duhet të bëhen të përdorshëm.
  5. Shkoni te File> Load Hex File> dhe ngarkoni skedarin Arduino-usbserial-uno.hex
  6. Në dritaren FLIP duhet të shihni tre seksione: Operacionet Flow, FLASH Buffer Information dhe ATmega16U2. Në Operacionet Flow kontrolloni kutitë për Erase, Program dhe Verify, pastaj klikoni Run.
  7. Pasi të përfundojë ky proces, klikoni Start Application në seksionin ATmega16U2.
  8. Lidhni ciklin arduino duke e shkëputur nga kompjuteri dhe duke e lidhur përsëri.
  9. Rivendosni Arduino Uno duke lidhur shkurtimisht fuqinë me tokën.
  10. Hapni Arduino IDE dhe ngarkoni skedarin JoyStickControl_Code.ino në tabelë.
  11. Lidhni ciklin arduino duke e shkëputur nga kompjuteri dhe duke e lidhur përsëri.
  12. Rivendosni arduinon duke lidhur shkurtimisht fuqinë me tokën.
  13. Kthehuni te FLIP, sigurohuni që Përzgjedhja e Pajisjes të thotë Atmega16U2
  14. Klikoni Zgjidhni një medium komunikimi dhe zgjidhni USB.
  15. Shkoni te File> Load Hex File> dhe ngarkoni skedarin Arduino-keyboard-0.3.hex
  16. Në dritaren FLIP duhet të shihni tre seksione: Operacionet Flow, FLASH Buffer Information dhe ATmega16U2. Në Operacionet Flow kontrolloni kutitë për Erase, Program dhe Verify, pastaj klikoni Run.
  17. Pasi të përfundojë ky proces, klikoni Start Application në seksionin ATmega16U2.
  18. Lidhni ciklin arduino duke e shkëputur nga kompjuteri dhe duke e lidhur përsëri.
  19. Tani kur shkoni te Menaxheri i Pajisjeve duhet të ketë një pajisje të re Tastiere HID nën Tastiera.
  20. Hapni një fletore ose ndonjë redaktues teksti dhe filloni të lëvizni levën. Ju duhet të shihni numrat që shtypen!

Nëse doni të ndryshoni kodin në skicën Arduino, për shembull duke shkruar komanda të reja në levë, do t'ju duhet ta ndezni atë me të 3 skedarët çdo herë.

Disa lidhje të dobishme: Arduino DFUAtLibUsbDfu.dll nuk u gjet

Ky emulator i tastierës bazohet në këtë udhëzues nga Michael më 24 qershor 2012.

Hapi 14: Komunikimi në Rrjet

Komunikimi në Rrjet
Komunikimi në Rrjet

Për të marrë transmetim video dhe për të dërguar komanda te roboti nga kudo në botë, ne kemi nevojë për një mënyrë për të marrë të dhëna nga dhe nga ESP32-CAM. Kjo bëhet në dy pjesë, një mbajtës lidhjeje në rrjetin tuaj lokal dhe një server publik. Shkarkoni tre skedarët për ta arritur këtë:

  • Handlers.py: transmeton informacione nga ESP32-CAM dhe serveri publik (testuar në Python 3.8)
  • Flask_app.py: përcakton sesi aplikacioni juaj i përgjigjet kërkesave në hyrje.
  • Robot_stream.html: jep video në shfletuesin tuaj dhe dëgjon komandat përmes tastierës / levës (testuar në Chrome)

Ju mund ta kodoni këtë drejtpërdrejt në app_httpd.cpp, por për korrigjim më të lehtë ne përdorim një skript Python që funksionon në një kompjuter të lidhur me të njëjtin rrjet. Hapni handlers.py dhe përditësoni adresën IP dhe emrin e përdoruesit në tuajin, dhe jeni gati për të shkuar. Transmetimi do të fillojë kur ta ekzekutoni këtë skedar.

Server publik Për të hyrë në gjithçka në internet, mund të filloni një server me një PaaS të zgjedhur nga ju. Në pythonanywhere (PA) vendosja e kësaj kërkon më pak se 5 minuta:

  1. Regjistrohuni për një llogari dhe regjistrohuni
  2. Shkoni te skedari "Ueb" dhe shtypni "Shto një aplikacion të ri në internet", zgjidhni Flask dhe Python 3.6
  3. Kopjoni flask_app.py në drejtorinë /mysite
  4. Kopjoni robot_stream.html në direktorinë /mysite /templates
  5. Klikoni "Ringarko"

Dhe… jeni gati!

Përgjegjësia: Kjo rrjedhë e punës në rrjet është e shpejtë dhe e thjeshtë, por shumë larg idealit. RTMP ose prizat do të ishin më të përshtatshme për transmetim, por ato nuk mbështeten në PA dhe kërkon një përvojë me rrjetëzimin dhe konfigurimin e serverit. Rekomandohet gjithashtu që të shtoni një mekanizëm sigurie për të kontrolluar aksesin.

Hapi 15: Vendosja e të gjitha së bashku

Tani, ndizni robotin tuaj, drejtoni handlers.py në një kompjuter (i lidhur me të njëjtin rrjet me robotin) dhe mund ta kontrolloni robotin nga një shfletues bazuar në url -në që keni vendosur nga kudo që dëshironi. (p.sh.

Recommended: