Sisukord:
- Samm: vajate riistvara
- 2. samm: šassii kokkupanek
- Samm: elektroonika paigaldamine
- Samm: veebikaamera lisamine
- Samm: ühendage see kõik kokku
- 6. samm: RPI seadistamine
- Samm 7: RPI jadapordi seadistamine
- Samm: Pythoni moodulite installimine
- 9. samm: RoboClawi seadistamine
- Samm: Roveri programmi/failide installimine
- 11. samm: bot -i käivitamine
- Samm 12: Juurdepääs robotite juhtimise lehele
- Samm 13: Pythoni/kolvi kood
- 14. samm: muu riistvara kasutamine
Video: Veebi juhitav Rover: 14 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Robotite ehitamine ja nendega mängimine on minu peamine süüdlane nauding elus. Teised mängivad golfi või suusatavad, aga mina ehitan roboteid (kuna ma ei oska golfi ega suusatada:-). Mulle tundub see lõõgastav ja lõbus! Enamiku robotite valmistamiseks kasutan šassiikomplekte. Komplektide kasutamine aitab mul teha seda, mis mulle rohkem meeldib, tarkvara ja elektroonikat ning teeb ka parema šassii minu kõigi pöidlate jaoks.
Selles juhendis uurime, mida on vaja lihtsa, kuid tugeva Wifi/veebipõhise roveri valmistamiseks. Kasutatav šassii on Actobotics Gooseneck. Valisin selle suuruse, laiendamisvõime ja kulude tõttu, kuid võite kasutada mis tahes muud enda valitud šassii.
Sellise projekti jaoks vajame head kindlat üheplaadilist arvutit ja selle roboti jaoks otsustasin kasutada Linuxi -põhist arvutit Raspberry Pi (RPI). RPI (ja Linux) pakub meile palju kodeerimisvõimalusi ja kodeerimisel kasutatakse Pythonit. Veebiliidese jaoks kasutan Pythoni jaoks kerge veebiraamistikku Flask.
Mootorite juhtimiseks valisin RoboClaw 2x5a. See võimaldab selle käsutamiseks lihtsat jadaühendust ning töötab hästi RPI ja Goosenecki mootoritega.
Lõpuks on sellel veebikaamera POV -tüüpi video tagasiside jaoks, et seda eemalt juhtida. Ma käsitlen iga teemat hiljem üksikasjalikumalt.
Samm: vajate riistvara
- Actobotics Gooesneck šassii või sobiv asendus teie valikul
- Teie valitud Raspberry Pi (või kloon) - sellel robotil kasutatakse RPI mudelit B, kuid see, millel on vähemalt kaks USB -porti, töötab
- Standardne servoplaat B x1
- 90 ° ühe nurga kanali kronstein x1
- RoboClaw 2x5a mootorijuht
- S3003 või sarnane standardsuuruses servo
- Väike leivalaud või Mini leivalaud
- Naissoost naissoost hüppajajuhtmed
- Meeste ja naiste hüppajate juhtmed
- Veebikaamera (valikuline) - kasutan Logitech C110 ja siin on RPI toetatud nukkide loend
- 5v-6v toiteallikas servo toiteks
- 7.2v-11.1v aku ajamimootori toiteks
- 5v 2600mah (või kõrgem) USB toitepank RPI jaoks
- USB Wifi adapter
Kasutan oma robotil 4-tolliseid rattaid, et muuta see pisut maastikualadeks. Selle valiku jaoks vajate:
- 4 "raskeveokite ratas x2
- 4 mm avaga kruvi rumm (0,770 tolli) x2
2. samm: šassii kokkupanek
Pange kõigepealt šassii kokku, järgides šassii või videoga kaasasolevaid juhiseid. Pärast lõpetamist peaks teil olema midagi sellist nagu pilt. MÄRKUS. Kaelaosa kokkupanemisel jätke kinnitusklamber lihtsalt välja.
Valisin oma botil 4 -tolliste raskeveokite rataste, mis olid šassiiga kaasas. See on valikuline ja pole vajalik, kui te ei soovi sama teha.
Samm: elektroonika paigaldamine
Gooseneckil on palju ruumi ja võimalusi elektroonika paigaldamiseks. Ma annan teile need pildid suunanäiteks, kuid te saate valida, kuidas soovite seda kõike paigutada. Tahvli ja akude kinnitamiseks võite kasutada eraldiseisvaid, kahepoolset teipi, takjapaela või servoteipi.
Samm: veebikaamera lisamine
Selle sammu jaoks võtke 90 -kraadine klamber, kerge servo rumm ja neli (4).3125 kruvi:
- Võtke servo rumm ja asetage see kronsteini ühele küljele ning kinnitage need koos.2125 "kruvidega nagu pildil
- Seejärel paigaldage servo servoklambrisse
- Kinnitage servasarvega 90 -kraadine klamber servoselga külge ja ühendage need servo abil kaasas olnud sarvekruviga
- Nüüd paigaldage servo ülejäänud kruvidega klambrisse hanekaela ülaosale
- Paigaldage kaamera tõmblukkude või kahepoolse teibiga 90-kraadise klambri külge
Vajadusel kasutage pilte juhenditeks.
Samm: ühendage see kõik kokku
Selle roboti juhtmestik on üsna kitsas.
Mootorid:
Mõlema mootori jootmisjuhtmed, kui te pole seda juba teinud
Kui robotid on ees (ots hanekaelaga) teie poole suunatud:
- Ühendage vasakpoolse mootori mootorijuhtmed kanalitega M1A ja M1B
- Ühendage parempoolse mootori mootorijuhtmed kanalitega M2A ja M2B
Maa (GND) ühendused:
- Ühendage üks maandusnõel RoboClawil maapinna hüppajaplaadiga. RoboClawi maanduspoldi joon on keskpunktile kõige lähemal (vt pilti)
- Ühendage RPI -l olev PIN -kood 6 hüppajaplaadiga. Vaadake tihvtide määramist RPI päise pildilt.
- Ühendage GND servoakust ühe hüppaplaadi tihvtiga.
- Viige hüppaja juhe hüppajaplaadilt servo GND traadile.
RPI RoboClawile:
Ühendage RPI GPIO14 TXD tihvt RoboClaw S1 tihvtiga
Võimsus:
- Ühendage servoaku POS -juhe servo POS -juhtmega
- Ühendage mootori aku POS -juhe RoboClaw mootori sisendklemmi POS -iga (+). Jätame GND terminali praegu lahti.
6. samm: RPI seadistamine
Ma eeldan, et siinne kasutaja teab Linuxist ja RPI -st natuke. Ma ei käsitle selle seadistamist ega sellega ühenduse loomist. Kui vajate selles osas abi, kasutage allolevaid lehti.
RPI seadistamiseks vaadake järgmisi lehti:
- RPI põhiseadistus
- RPI kiirjuhend
- NOOBS seadistusgild
Üldiste hüppelehtede puhul on RPI avaleht ja eLinuxi lehed suurepärased kohad alustamiseks.
Vaadake seda linki RPI üldise Wifi seadistuse kohta.
Kui kavatsete robotil kasutada mõnda kaamerat või veebikaamerat, vaadake neid lehti, et saada põhilised vajalikud failid.
- RPI nuki seadistamine
- eLinix RPI nuki seadistamine
Video voogesitus:
Video voogesituse RPI -ga töötamiseks on mõned viisid, kuid minu eelistatud meetod on Motioni kasutamine.
Selle installimiseks oma RPI-le käivitage see: sudo apt-get install motion
See juhend annab ülevaate ka voogesituse seadistamisest.
Samm 7: RPI jadapordi seadistamine
Peame RX ja TX kasutamiseks Linuxi konsoolirežiimi keelama, kuna tahame sellest pordist RoboClaw mootorikontrolleriga rääkida. Selleks võite kasutada seda meetodit või seda tööriista. Selle meetodi valik on teie, kuna mõlemad teevad lõpuks sama asja.
Samm: Pythoni moodulite installimine
Teil on vaja RPI -sse installitud python ja pythoni paketi installija pip.
Pipi paigaldamiseks toimige järgmiselt.
- sudo apt-get install python-setuptools
- sudo easy_install pip
Siis:
- sudo pip installikolb
- sudo pip install pyserial
- sudo pip installige RPIO
See on kõik koodi käitamiseks vajalikud moodulid.
9. samm: RoboClawi seadistamine
Mul on robotikood, mis räägib RoboClaw'ga standardseeriarežiimis kiirusel 19200 baud.
RoboClawi seadistamiseks tehke järgmist.
- Vajutage RoboClaw'il nuppu "MODE"
- Vajutage seadistusnuppu, kuni LED vilgub viivituste vahel 5 (viis) korda
- Salvestamiseks klõpsake nuppu "LIPO"
- Seejärel vajutage nuppu "SET", kuni LED vilgub viivituste vahel 3 (kolm) korda
- Salvestamiseks klõpsake nuppu LIPO
See on see mootori kontrolleri seadistamiseks. Vajadusel vaadake ülaltoodud lingilt lisateavet.
Samm: Roveri programmi/failide installimine
Laadige alla ja kopeerige fail rover.zip oma piI -kataloogi RPI -sse.
Kui kasutate Linuxit või Maci, saate seda teha käsuga 'scp':
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/~
Windowsi puhul saate pscp alla laadida ja kasutada ning seejärel teha järgmist.
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~
Kui ZIP -fail on RPI -sse kopeeritud, logige sellesse pi kasutajana sisse.
Nüüd jookse:
unzip rover.zip
See pakib failid lahti kausta nimega "rover" ja selle kausta all on järgmine teave:
- restrover.py (roboti pythoni kood)
- staatiline (hoiab juhtlehe nuppude pildifaile)
- mallid (sisaldab faili index.htlm, kontroll -veebilehte)
Kui kasutate veebikaamerat, muutke malli kaustas faili index.html allosas olevat rida. Muutke IFRAME rea URL, et see vastaks teie videovoo src URL -ile.
11. samm: bot -i käivitamine
Ühendage USB -toide RPI -ga.
Botikoodi käivitamiseks logige pi kasutajana sisse ja käivitage:
- cd rover
- sudo python restrover.py
Kui kõik oli korras, peaksite selles etapis nägema pildiga sarnast ekraani
Kui näete vigu või probleeme, peate need enne edasiliikumist parandama.
Nüüd ühendage GND (-) juhe RoboClaw mootori toitesisendi NEG (-) klemmiga.
Samm 12: Juurdepääs robotite juhtimise lehele
Pärast roboti pythoni skripti käivitamist lülitage RoboClaw sisse ja navigeerige oma RPI IP -le, näiteks:
teie_rpi_ip
Peaksite nägema veebikontrolli lehte, nagu piltidel. Kui ei, siis kontrollige oma RPI väljundterminali ja otsige vigu ning parandage need.
Kui olete lehele jõudnud, olete valmis robotit juhtima.
Robot käivitab seadistuses "Keskjooks" ja keskmise kiirusega.
Botti saab juhtida lehe nuppude või klaviatuuri klahvide abil.
Võtmed on:
- w - edasi
- z - tagurpidi/tagasi
- a - pikk vasakpööre
- s - pikk parempööre
- q - lühike vasakpööre
- e - lühike parempööre
- 1 - panoraamkaamera vasakule
- 2 - panoraamkaamera paremal
- 3 - pann täis vasakule
- 4 - pann täis
- / - kodu-/ keskkaamera
- h - robot seisma/seisma
Saadetud käskude vahel on pool sekundit viivituspuhvrit. Tegin seda soovimatute korduvate käskluste kõrvaldamiseks. Loomulikult saate selle soovi korral koodist eemaldada (kaustas index.html)
Ülejäänud juhtnupud ja nende juhtimine peaksid olema iseenesestmõistetavad.
Samm 13: Pythoni/kolvi kood
See robot kasutab Pythoni ja Flaski veebiraamistikku. Kui olete huvitatud, saate Flaski kohta rohkem teada saada siit.
Suur erinevus Flaski rakendusest ja tavalisest Pythoni skriptist on @app.route klass/meetod, mida kasutatakse URI käitlemiseks. Peale selle on see enamasti tavaline Python.
#!/usr/bin/env python
# # Wifi/veebipõhine Rover # # Kirjutas Scott Beasley - 2015 # # Kasutab RPIO, pyserial ja kolvi # impordi aja importimise seeriat RPIO -st impordi PWM -d kolvi impordist Kolb, render_template, request app = Flask (_name_, static_url_path = ") # Ühenda komm pordiga, et rääkida Roboclawi mootorikontrolleriga, proovi: # Muuda siin edastuskiirust, kui see erineb 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200), va IOError: print ("Comm port not leitud ") sys.exit (0) # Kiiruse ja ajami juhtimismuutujad last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo neutraalne asend (kodu) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos.) def index (): return render_template ('index.html', name = puudub) @app.route ("/forward") def forward (): globaalne viimane_suund, run_ti ma prindi "Edasi" go_forward () last_direction = 0 # uni 100ms + run_time time.sleep (0.100 + run_time) # Kui ei ole pidev, siis peatu pärast viivitust, kui run_time> 0: last_direction = -1 halt () tagasta "ok" @ app.route ("/backward") def backward (): global last_direction, run_time print "Backward" go_backward () last_direction = 1 # uni 100ms + run_time time.sleep (0.100 + run_time) # Kui ei ole pidev, siis peatu pärast viivitust if run_time> 0: last_direction = -1 halt () return "ok" @app.route ("/left") def left (): global last_direction, turn_tm_offset print "Left" go_left () last_direction = -1 # uni @1 /2 second time.sleep (0.500 - turn_tm_offset) # stop halt () time.sleep (0.100) return "ok" @app.route ("/right") def right (): global last_direction, turn_tm_offset print "Right" go_right () # uni @1/2 sekundit.sleep (0,500 - turn_tm_offset) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app.route ("/ltforward") def ltforward (): globaalne last_direction, turn_t m_nihke print "Vasak ette pööre" go_left () # uni @1 /8 sekundit.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app.route ("/rtforward") def rtforward (): globaalne last_direction, turn_tm_offset print "Parempoolne pööre" go_right () # uni @1/8 sekundit.sleep (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop peata () time.sleep (0.100) return "ok" @app.route ("/stop") def stop (): globaalne last_direction print "Stop" halt () last_direction = -1 # uni 100ms time.sleep (0.100) return "ok" @app.route ("/panlt") def panlf (): global servo_pos print "Panlt" servo_pos -= 100 if servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # uneaeg 150 ms. unerežiim (0,150) tagastamine "ok" @app.route ("/home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # uni 150ms time.sleep (0,150) return "ok" @app.route ("/panfull_lt") def panfull_lt (): global servo_pos print "Pan full l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # uni 150ms time.sleep (0.150) return" ok " @app.route ("/panfull_rt ") def panfull_rt (): global servo_pos print" Pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # unerežiim 150 ms time.sleep (0.150) return "ok" @app.route ("/speed_low") def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Värskendage praegust suunda, et saada uus kiirus, kui last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_mid") def speed_mid (): global speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Uuenda praegust suunda, et saada uus kiirus, kui last_direction == 0: go_forward () if last_direction == 1: go_backward () # uni 150ms time.sleep (0.150) tagastama "ok" @app.route ("/speed_hi") def speed_hi (): globaalne kiiruse_nihke, viimane_suund, pöörde_tm_nihe kiiruse nihe = 126 turniiri n_tm_offset = 0.332 # Uue kiiruse saamiseks värskendage praegust suunda, kui last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/pidev ") def pidev (): globaalne run_time print" Pidev jooks "run_time = 0 # unerežiim 100 ms time.sleep (0.100) return" ok " @app.route ("/mid_run ") def mid_run (): global run_time print" Mid run "run_time = 0.750 halt () # sleep 100ms time.sleep (0.100) return" ok " @app.route ("/short_time ") def short_time (): global run_time print" Short run "run_time = 0.300 halt () # unerežiim 100 ms time.sleep (0.100) return "ok" # # Mootori ajamifunktsioonid # def go_forward (): globaalne kiiruse nihke, kui kiiruse nihke! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset))) roboclaw.wri te (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): globaalne speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): globaalne kiiruse nihe, kui speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset))) def halt (): roboclaw.write (chr (0)) kui _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)
Kui te ei soovi või vajate Flaski silumisteavet, määrake silumiseks reas app.run silumine väärtusele „false”.
kui _name_ == "_main_":
app.run (host = '0.0.0.0', port = 80, silumine = vale)
Siin saate muuta ka porti, mida Flask http server kuulab.
14. samm: muu riistvara kasutamine
Kui soovite kasutada muud riistvara, näiteks teist tüüpi SBC -d (ühe pardaarvuti), peaks teil olema probleeme Pythoni ja Flaski töötamisega teistel tahvlitel, nagu Beagle Bone, PCDuino jne. paigutada ja kasutada uue tahvli servosõidu võimalusi.
Teist tüüpi mootoridraiveri kasutamiseks peate lihtsalt muutma funktsioone go_forward, go_backward, go_left, go_right ja stop, et teha seda, mida asendusmootori draiver vajab, et mootor seda funktsiooni täidaks.
Soovitan:
Bluetooth -juhitav Rover Dexteriga: 9 sammu
Bluetooth -juhitav Rover koos Dexteriga: Dexteri tahvel on hariv koolitussüsteem, mis muudab elektroonika õppimise lõbusaks ja lihtsaks. Tahvel koondab kõik vajalikud osad, mida algaja vajab idee muutmiseks edukaks prototüübiks. Arduino südames on tohutult palju
Arduino 4WD Rover Bluetooth Juhitav Android -telefoni/tahvelarvuti abil: 5 sammu
Arduino 4WD Rover Bluetooth Juhitav Android -telefoni/tahvelarvuti abil: Arduino 4WD Bluetooth -juhitav rover Selle rakendusega saate kiirust juhtida (kasutades Arduino pwm -i), käivitage see koos
"Charlotte'i veebi" stiilis LED -filamentkell: 10 sammu (piltidega)
"Charlotte'i veebi" stiilis LED-hõõgniidiga kell: alates sellest ajast, kui ma esimest korda nägin LED-hõõglampe, olen ma mõelnud, et hõõgniidid peavad millekski head olema, kuid mul kulus kuni kohaliku elektroonikaosade poe sulgemiseni osta pirne, et purustada
Veebi IR -kaugjuhtimispult esp8266 -ga (NodeMCU): 4 sammu
Veebi IR -kaugjuhtimispult Esp8266 -ga (NodeMCU): probleem Elutoa laual on kolm kaugjuhtimispulti. Oma lemmiksaate vaatamiseks peate täpselt järgima spetsiaalset nupuvajutuste järjestust vähemalt kahel neist. Ja teie toakaaslane, ema, tüdruksõber ei mäleta neid kunagi. Lahendus: ostate
Taskukohane telefoniga juhitav Rover: 6 sammu
Taskukohane telefoniga juhitav Rover: mõni aeg tagasi tegin MotorAiri abil telefoniga juhitava roveri. Tahtsin põhiideed uuesti vaadata, kuid kasutasin odavamaid ja laialdasemalt kättesaadavaid osi. Kuna see on Arduino baasil, on see suurepärane hüppelaud rohkem kui lihtsalt roverile, mis sõidab