Sisällysluettelo:

Virtuaalinen läsnäolorobotti: 15 vaihetta
Virtuaalinen läsnäolorobotti: 15 vaihetta

Video: Virtuaalinen läsnäolorobotti: 15 vaihetta

Video: Virtuaalinen läsnäolorobotti: 15 vaihetta
Video: Virtuaalinen putkentaivutus 2024, Marraskuu
Anonim
Image
Image
Mobiili robotti auto
Mobiili robotti auto

Tämä mobiilirobotti on vuorovaikutuksessa fyysisen ympäristön kanssa edustamalla sitä etäyhteydellä ohjaavan henkilön "virtuaalista läsnäoloa". Siihen voi päästä kuka tahansa kaikkialla maailmassa, jotta hän voi jakaa herkkuja ja leikkiä kanssasi.

Kaksi henkilöä (yksi Saksassa ja yksi Yhdysvalloissa) kehittää tätä työtä yrittäessään siirtyä perinteisten Internet-pohjaisten viestintäkeinojen ulkopuolelle luomalla fyysisen rajapinnan etäyhteyttä varten. Koska COVID-19 vaikuttaa edelleen maailmaan ja jokainen on vastuussa fyysisen altistumisen rajoittamisesta ihmisille, yritämme palauttaa takaisin konkreettisen yhteyden, joka on osa fyysistä vuorovaikutusta.

Se perustuu ESP32-Camera-Robot-FPV-Teacher-Entry Instructable -ohjelmaan ja sitä on muokattu sisältämään etäisyysanturi, hoitoannostelija ja "ohjaus mistä tahansa maailmasta" -ominaisuus, jos sinulla on jonkin verran vakaa Internet-yhteys.

Tarvikkeet

Projektissa on neljä pääosaa - mobiili robottiauto, sirunannostelija, ohjaussauva ja verkkoviestintäasennus.

Mobiili robotti auto

  • Leipälauta
  • 2 -vetoinen moottori ja alustarobotti (sisältää pyörät, tasavirtamoottorit, asennuslevyn ja ruuvit)
  • Arduino Mega 2560 (jos rakennat ilman etäisyysanturia tai sirunannostelijaa, Unolla on tarpeeksi nastoja)
  • (3) 9 V: n paristot (pidä muutama vieressä, koska tyhjennät niiden virheenkorjauksen)
  • LM2596 -virtalähdemoduuli DC/DC Buck 3A -säädin (tai vastaava)
  • ESP32-CAM Wifi -moduuli
  • FT232RL FTDI USB-TTL-sarjamuunnin (ESP32-CAM-ohjelmointiin)
  • HC-SR04 ultraääni-etäisyysanturi
  • L298N -moottorin ohjain
  • (3) LEDit (mikä tahansa väri)
  • (3) 220 ohmin vastukset

Sirun annostelija

  • (2) SG90 -servot
  • Pahvi / pahvi

Ohjaussauva

  • Arduino Uno
  • Joystick -moduuli
  • Mini Breadboard, (1) LED, (1) 220 ohmin vastus (valinnainen)

Muut

Paljon Breadboard Jumper -lankojaExtra Cardboard / PaperboardTappeSaksetRuler / MittanauhaPieni Philips -ruuvimeisseliPieni Flathead -ruuvimeisseli

Kärsivällisyyttä =)

Vaihe 1: Mobiili robottiauto

Robot Car -runko toimii liikkuvana alustana, ja Arduino MEGA on tärkein mikro-ohjain, joka ohjaa moottoreita, lukee anturien arvoja ja käyttää servoja. Useimmat toiminnot suoritetaan siten, että Arduino MEGA vastaanottaa komentoja sarjaliikenteen kautta ja lähetetään ESP32-CAM-laitteesta. Vaikka ESP32 tarjoaa kameran suoratoistoa robotin ohjaamiseen, sen toinen tehtävä on hallita robotin ja palvelimen välistä langatonta yhteyttä, jolloin käyttäjät voivat hallita sitä mistä päin maailmaa tahansa. ESP32 vastaanottaa käskyt verkkosivulta näppäimen painalluksella ja lähettää ne Arduino MEGA: lle char -arvoina. Saatuun arvoon perustuen auto siirtyy eteen- tai taaksepäin. *ESP32 -sirun korkeiden ja vaihtelevien tehontarpeiden vuoksi suositellaan virtalähteen säätimen käyttöä akkuvirralla (katso kytkentäkaavio).

Vaihe 2: Mobiili robottiauto - piirikaavio

Mobiili robottiauto - piirikaavio
Mobiili robottiauto - piirikaavio

Opastamme tämän kokoamisen vaihe vaiheelta.

Vaihe 3: Mobiili robottiauto - kokoonpano (moottorit)

Mobiili robottiauto - kokoonpano (moottorit)
Mobiili robottiauto - kokoonpano (moottorit)

Kun olet koonnut 2WD -alustan, aloitamme yhdistämällä moottorit ja akun Arduino MEGA -laitteeseen L298N -ohjaimen kautta.

Vaihe 4: Mobiili robottiauto - kokoonpano (etäisyysanturi)

Mobiili robottiauto - kokoonpano (etäisyysanturi)
Mobiili robottiauto - kokoonpano (etäisyysanturi)

Koska liitettäviä komponentteja on melko vähän, lisätään leipälauta, jotta voimme yhdistää virran ja jaetun maan helpommin. Kun olemme järjestäneet johdot uudelleen, kytke etäisyysanturi ja kiinnitä se robotin etuosaan.

Vaihe 5: Mobiilirobotin kokoaminen (ESP32 CAM)

Mobiilirobotti - kokoonpano (ESP32 CAM)
Mobiilirobotti - kokoonpano (ESP32 CAM)

Liitä seuraavaksi ESP32-CAM-moduuli ja kiinnitä se etäisyysanturin viereen lähellä robottia. Muista, että tämä melko virranhimoinen komponentti vaatii oman pariston ja tasavirtasäätimen.

Vaihe 6: Mobiilirobotin kokoaminen (sirun annostelija)

Mobiili robottiauto - kokoonpano (sirun annostelija)
Mobiili robottiauto - kokoonpano (sirun annostelija)

Lisätään nyt lastuannostelija (lisätietoja tästä "Sirun annostelija" -osassa). Kytke kaksi servoa Fritzing -kaavion mukaisesti ja kiinnitä annostelija robotin häntään.

Vaihe 7: Mobiilirobotin kokoaminen (evästeet!)

Mobiilirobotti - kokoonpano (evästeet!)
Mobiilirobotti - kokoonpano (evästeet!)

Lopuksi lisäämme herkkuja annostelijaan!

Vaihe 8: Mobiili robottiauto - Arduino -koodi

RobotCar_Code on koodi, joka sinun on ladattava Arduino Megaan.

Näin se toimii: Arduino kuuntelee tavuja, jotka lähetetään ESP32: sta sarjaviestinnän kautta 115200 -kaistalla. Vastaanotetun tavun perusteella auto liikkuu eteenpäin, taaksepäin, vasemmalle, oikealle jne. Lähettämällä joko HIGH tai LOW jännitettä moottoreille ohjaamaan suuntaa sekä PWM-muuttujan välillä 0-255 nopeuden säätämiseksi. Törmäysten välttämiseksi tämä koodi lukee myös etäisyysanturista tulevat arvot ja jos etäisyys on pienempi kuin määritetty kynnys, robotti ei liiku eteenpäin. Lopuksi, jos Arduino saa käskyn jakaa herkkua, se aktivoi sirut annostelijan servot.

Vaihe 9: Mobiili robottiauto - ESP32 -koodi

ESP32 mahdollistaa viestinnän palvelimen ja Arduinon välillä Wifi -yhteyden kautta. Se on ohjelmoitu erikseen Arduinosta, ja sillä on oma koodi:

  • ESP32_Code.ino on ESP32 -koodi, joka lähettää tietoja Arduinolle
  • app_httpd.cpp on ESP32 -oletusverkkopalvelimen tarvitsema koodi ja aseta toiminto kuuntelemaan näppäinpainalluksia. Soveltuu virheenkorjaukseen ja paikallisen wifi -yhteyden testaamiseen. Sitä ei käytetä paikallisen verkon ulkopuoliseen viestintään.
  • camera_index.h on oletusverkkosovelluksen html -koodi
  • camera_pins.h määrittää nastat ESP32 -mallin mukaan

ESP32-koodi käyttää Wifi-kirjastoa sekä ESP32-lisäosaa, jotka voidaan asentaa Arduino IDE: hen seuraavasti:

  1. Siirry Arduino IDE: ssä kohtaan Tiedosto> Asetukset
  2. Kirjoita sitten Asetukset -välilehteen Lisäkorttien hallinnan URL -osoite -kohtaan seuraava "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Avaa nyt Boards Manager ja avaa Työkalut> Hallitus> Boards Manager ja etsi ESP32 kirjoittamalla "ESP32"
  4. Sinun pitäisi nähdä "esp32 by Espressif Systems". Napsauta Asenna.
  5. Nyt ESP32-lisäosa on asennettava. Jos haluat tarkistaa, palaa Arduino IDE: hen ja valitse Työkalut> Hallitus ja valitse "ESP32 Wrover Module".
  6. Siirry jälleen kohtaan Työkalut> Latausnopeus ja aseta se "115200".
  7. Siirry lopuksi kohtaan Työkalut> Osiointimalli ja aseta se "Valtava APP (3 Mt Ei OTA/1 Mt SPIFFS)"
  8. Kun olet suorittanut tämän, suosittelen seuraamaan tätä RandomNerdTutorialsin opetusohjelmaa, jossa selitetään yksityiskohtaisesti, miten ESP32: n määrittäminen viimeistellään ja koodi lähetetään FTDI -ohjelmoijalla ESP32: n ohjelmointi

Vaihe 10: Sirun annostelija

Sirun annostelija
Sirun annostelija

Chip -annostelija on edullinen lisä mobiilirobottiin, jonka avulla se voi vaikuttaa paikalliseen ympäristöön ja olla vuorovaikutuksessa ihmisten / eläinten kanssa jättämällä maukkaan herkun. Se koostuu pahvilaatikon ulkopakkauksesta, johon on asennettu 2 servoa, sekä sisäisestä kartonkikasetista, johon mahtuu annosteltavia esineitä (kuten karkkeja tai koiran herkkuja). Toinen servo toimii porttina ja toinen työntää esineen ulos.

*Kaikki mitat ovat millimetreinä

Vaihe 11: Ohjaussauva

Ohjaussauva
Ohjaussauva

Vaikka robotin ohjaaminen näppäimistön avulla voi olla hauskaa, on vielä hauskempaa ja intuitiivisempaa käyttää ohjaussauvaa, jossa robotti reagoi suoraan työntösi suuntaan. Koska tätä robottia käytetään verkkosivulle tallennetuilla näppäimen painalluksilla, tarvitsimme ohjaussauvaamme näppäimistön emuloimiseksi. Tällä tavalla käyttäjät, joilla ei ole ohjaussauvaa, voivat silti ohjata robottia suoraan näppäimistöltä, mutta muut voivat käyttää ohjaussauvaa.

Tätä varten meillä oli vain Arduino Uno, jolla ei ole mahdollisuutta käyttää kirjastoa, joten ohjelmoimme sen suoraan käyttämällä USB -protokollaa, joka tunnetaan nimellä Device Firmware Update (DFU), joka mahdollistaa arduinon vilkkumisen yleisellä USB HID -näppäimistöohjelmistolla. Toisin sanoen, kun arduino on kytketty usb: hen, sitä ei enää tunnisteta arduinoksi vaan näppäimistöksi!

Vaihe 12: Ohjaussauva - piirikaavio

Ohjaussauva - piirikaavio
Ohjaussauva - piirikaavio

Tässä on kytketty joystick.

Vaihe 13: Joystick - näppäimistöemulaattori

Jotta Arduino Uno voi jäljitellä näppäimistöä, sinun on ohjelmoitava Atmega16u2 -siru suoraan Arduinolle manuaalisen laiteohjelmistopäivityksen (DFU) kautta. Seuraavat vaiheet kuvaavat Windows -koneen prosessia ja toivottavasti auttavat sinua välttämään joitain ongelmia, joihin törmäsimme.

Ensimmäinen askel on kirjoittaa Atmelin USB -ohjain manuaalisesti Arduinolle, jotta se tunnistetaan USB: ksi eikä Arduinoksi, mikä mahdollistaa sen vilkkumisen FLIP -ohjelmoijalla.

  1. Lataa Atmelin FLIP -ohjelmoija täältä
  2. Liitä Arduino Uno
  3. Siirry Laitehallintaan ja etsi Arduino. Se on COM- tai Tuntematon laite -kohdassa. Kytke se pistorasiaan ja varmista, että tämä on oikea laite.
  4. Kun olet löytänyt Arduino Unon Laitehallinnasta, napsauta sitä hiiren kakkospainikkeella ja valitse Ominaisuudet> Ajuri> Päivitä ohjain> Selaa tietokonettani ohjainohjelmistoa varten> Anna minun valita tietokoneen käytettävissä olevien ohjainten luettelosta> Onko levy> Selaa tiedosto "atmel_usb_dfu.inf" ja valitse se. Tämän pitäisi olla kansiossa, johon Atmel FLIP -ohjelmoija on asennettu. Tietokoneessani se on täällä: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Asenna ohjain
  6. Palaa nyt Laitehallintaan, ja sinun pitäisi nähdä "Atmel USB -laitteet", jossa Arduino Uno on nyt merkitty ATmega16u2: ksi!

Nyt kun tietokone tunnistaa Arduino Unon USB -laitteeksi, voimme käyttää FLIP -ohjelmoijaa salamaan sen kolmella erillisellä tiedostolla ja muuttamaan sen näppäimistöksi.

Jos irrotit Arduino Unon pistokkeen ensimmäisen osan jälkeen, kytke se takaisin.

  1. Avaa FLIP
  2. Nollaa Arduino Uno kytkemällä virta hetkeksi maahan.
  3. Napsauta Laitteen valinta (kuvake kuin mikrosiru) ja valitse ATmega16U2
  4. Napsauta Valitse tiedonsiirtoväline (kuvake kuten USB -johto) ja valitse USB. Jos olet suorittanut ensimmäisen osan oikein, muiden harmaiden painikkeiden tulee olla käyttökelpoisia.
  5. Valitse Tiedosto> Lataa heksatiedosto> ja lataa tiedosto Arduino-usbserial-uno.hex
  6. FLIP -ikkunassa pitäisi näkyä kolme osaa: Operations Flow, FLASH Buffer Information ja ATmega16U2. Valitse Toimintojen kulku -kohdassa Poista, ohjelmoi ja vahvista -valintaruudut ja valitse sitten Suorita.
  7. Kun tämä prosessi on valmis, napsauta Käynnistä sovellus ATmega16U2 -osiossa.
  8. Kytke arduino -kytkin irrottamalla se tietokoneesta ja kytkemällä se takaisin.
  9. Nollaa Arduino Uno kytkemällä virta hetkeksi maahan.
  10. Avaa Arduino IDE ja lataa tiedosto JoyStickControl_Code.ino taululle.
  11. Kytke arduino -kytkin irrottamalla se tietokoneesta ja kytkemällä se takaisin.
  12. Nollaa arduino kytkemällä hetkeksi virta maahan.
  13. Palaa takaisin FLIPiin ja varmista, että Laitteen valinta sanoo Atmega16U2
  14. Napsauta Valitse tiedonsiirtoväline ja valitse USB.
  15. Valitse Tiedosto> Lataa heksatiedosto> ja lataa tiedosto Arduino-keyboard-0.3.hex
  16. FLIP -ikkunassa pitäisi näkyä kolme osaa: Operations Flow, FLASH Buffer Information ja ATmega16U2. Valitse Toimintojen kulku -kohdassa Poista, ohjelmoi ja vahvista -valintaruudut ja valitse sitten Suorita.
  17. Kun tämä prosessi on valmis, napsauta Käynnistä sovellus ATmega16U2 -osiossa.
  18. Kytke arduino -kytkin irrottamalla se tietokoneesta ja kytkemällä se takaisin.
  19. Kun siirryt Laitehallintaan, näppäimistöjen alla pitäisi olla uusi HID -näppäimistölaite.
  20. Avaa muistilehtiö tai jokin tekstieditori ja aloita ohjaussauvan siirtäminen. Sinun pitäisi nähdä numerot kirjoitettuna!

Jos haluat muuttaa Arduino -luonnoksen koodia, esimerkiksi kirjoittaa uusia komentoja ohjaussauvaan, sinun on vilkutettava se kaikilla kolmella tiedostolla joka kerta.

Hyödyllisiä linkkejä: Arduino DFUAtLibUsbDfu.dll ei löydy

Tämä näppäimistöemulaattori perustuu tähän Michaelin opetusohjelmaan 24. kesäkuuta 2012.

Vaihe 14: Verkkoviestintä

Verkkoviestintä
Verkkoviestintä

Jotta voimme vastaanottaa videovirtaa ja lähettää komentoja robotille kaikkialta maailmasta, tarvitsemme tavan saada tietoja ESP32-CAM-laitteeseen ja sieltä pois. Tämä tehdään kahdessa osassa, paikallisen verkon yhteyskäsittelijä ja julkinen palvelin. Lataa kolme tiedostoa tämän saavuttamiseksi:

  • Handlers.py: välittää tietoja ESP32-CAM: lta ja julkiselta palvelimelta (testattu Python 3.8: lla)
  • Flask_app.py: määrittää, miten sovelluksesi vastaa saapuviin pyyntöihin.
  • Robot_stream.html: tekee videon selaimessasi ja kuuntelee komentoja näppäimistön / ohjaussauvan avulla (testattu Chromella)

Yhteydenkäsittelijä Voit koodata tämän suoraan sovelluksessa app_httpd.cpp, mutta virheenkorjauksen helpottamiseksi käytämme Python -komentosarjaa, joka toimii samaan verkkoon yhdistetyssä tietokoneessa. Avaa handlers.py ja päivitä IP -osoitteesi ja käyttäjätunnuksesi omaksi, ja olet valmis lähtemään. Suoratoisto alkaa, kun suoritat tämän tiedoston.

Julkinen palvelin Jos haluat käyttää kaikkea Internetissä, voit käynnistää palvelimen valitsemallasi PaaS -palvelimella. Pythonanywhere (PA) -asetuksessa tämä asetus kestää alle 5 minuuttia:

  1. Rekisteröidy ja kirjaudu sisään
  2. Siirry "Web" -välilehdelle ja paina "Lisää uusi verkkosovellus", valitse Pullo ja Python 3.6
  3. Kopioi flask_app.py hakemistoon /mysite
  4. Kopioi robot_stream.html hakemistoon /mysite /templates
  5. Napsauta "Lataa uudelleen"

Ja… olet valmis!

Vastuuvapauslauseke: Tämä verkkotyönkulku on nopeaa ja yksinkertaista, mutta hyvin kaukana ihanteellisesta. RTMP tai pistorasiat olisivat sopivampia suoratoistoon, mutta niitä ei tueta PA: ssa, ja ne vaativat jonkin verran kokemusta verkko- ja palvelinasetuksista. On myös suositeltavaa lisätä suojausmekanismi pääsyn hallitsemiseksi.

Vaihe 15: Yhdistä kaikki

Käynnistä nyt robotti, suorita handlers.py tietokoneella (yhdistetty samaan verkkoon kuin robotti) ja voit ohjata robottia selaimesta haluamasi URL -osoitteen perusteella. (esim.

Suositeltava: