Tartalomjegyzék:
- 1. lépés: Szükséges hardver
- 2. lépés: Az alváz összeszerelése
- 3. lépés: Az elektronika felszerelése
- 4. lépés: A webkamera hozzáadása
- 5. lépés: Az összes bekötése
- 6. lépés: Az RPI beállítása
- 7. lépés: Az RPI soros port konfigurálása
- 8. lépés: A Python modulok telepítése
- 9. lépés: A RoboClaw beállítása
- 10. lépés: A Rover program/fájlok telepítése
- 11. lépés: Indítsa el a botot
- 12. lépés: A robotvezérlő oldal elérése
- 13. lépés: A Python/Flask kód
- 14. lépés: Más hardver használata
Videó: Webvezérelt Rover: 14 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
A robotokkal való építkezés és a játék a legfőbb bűnös örömöm az életben. Mások golfoznak vagy síelnek, én viszont robotokat építek (mivel nem tudok golfozni vagy síelni:-). Pihentetőnek és szórakoztatónak találom! A legtöbb robot elkészítéséhez alvázkészleteket használok. A készletek használata segít abban, hogy azt csináljam, amit jobban szeretek, a szoftvert és az elektronikát, és jobb futóművet is készítsek a hüvelykujjamnak.
Ebben az utasításban megvizsgáljuk, mi szükséges egy egyszerű, de robusztus Wifi/webvezérelt rover elkészítéséhez. Az alváz az Actobotics Gooseneck. Mérete, bővíthetősége és költsége miatt választottam, de bármilyen más alvázat használhat.
Egy ilyen projekthez szükségünk lesz egy jó, egylapos számítógépre, és ehhez a robothoz a Raspberry Pi (RPI) Linux -alapú számítógép használatát választottam. Az RPI (és Linux) rengeteg kódolási lehetőséget kínál számunkra, és a Python lesz a kódolási oldal. A webes felülethez a Flaskot használom, amely egy könnyű webes keretrendszer a Python számára.
A motorok meghajtásához RoboClaw 2x5a -t választottam. Lehetővé teszi az egyszerű soros kommunikációt a parancsokhoz, és jól működik az RPI -vel és a Gooseneck motorjaival.
Végül van egy webkamerája a POV típusú videó visszacsatoláshoz a távoli vezetéshez. A későbbiekben minden témával részletesebben foglalkozom.
1. lépés: Szükséges hardver
- Actobotics Gooesneck alváz vagy az Ön által választott megfelelő csere
- Választott Raspberry Pi (vagy klón) - B RPI modellt használnak erre a botra, de bármelyik, amely rendelkezik legalább két USB porttal, működik
- Szabványos szervo lemez B x1
- 90 ° egyszögű csatorna tartó x1
- RoboClaw 2x5a motor meghajtó
- S3003 vagy hasonló szabványos méretű szervó
- Kis kenyérsütő vagy Mini kenyérpad
- Női -női áthidaló vezetékek
- Férfi -női áthidaló vezetékek
- Webkamera (opcionális) - Logitech C110 -et használok, és itt található az RPI támogatott bütyköinek listája
- 5v-6v tápforrás szervo tápellátáshoz
- 7.2v-11.1v akkumulátor a hajtómotor táplálásához
- 5v 2600mah (vagy magasabb) USB tápegység az RPI -hez
- USB Wifi adapter
A botomon 4 hüvelykes kerekeket használok, hogy egy kicsit több terepjáró legyen. Ehhez az opcióhoz szüksége lesz:
- 4 "nagy teherbírású kerék x2
- 4 mm -es furatkészlet csavaros agy (0,770 hüvelyk) x2
2. lépés: Az alváz összeszerelése
Először szerelje össze a házat, követve az alvázhoz vagy a videóhoz mellékelt utasításokat. A befejezés után valami hasonlónak kell lennie a képhez. MEGJEGYZÉS: A nyakrész összeszerelésekor hagyja ki a rögzítőkonzolt.
A botomon úgy döntöttem, hogy lecserélem az alvázhoz tartozó kerekeket 4 nagy teherbírású kerekekre. Ez opcionális, és nem szükséges, hacsak nem akarja ugyanezt tenni.
3. lépés: Az elektronika felszerelése
A Gooseneck rengeteg helyet és lehetőséget kínál az elektronika felszerelésére. Ezeket a képeket útmutatóként adom meg, de választhat, hogyan szeretné mindezt elrendezni. A tábla és az elemek rögzítéséhez önálló, kétoldalas szalagot, tépőzárat vagy szervo szalagot használhat.
4. lépés: A webkamera hozzáadása
Ehhez a lépéshez vegye be a 90 fokos konzolot, a könnyű szervo agyat és a négy (4).3125 -os csavart:
- Fogja meg a szervo agyat és helyezze a konzol egyik oldalára, és rögzítse őket a képen látható 0,2125 "-os csavarokkal.
- Ezután szerelje be a szervót a szervo konzolba
- Csatlakoztassa a 90 fokos konzolt a szervókürttel a szervoszlophoz, és a szervóhoz kapott kürtcsavarral kösse össze őket
- Most szerelje fel a szervót a konzolba a liba nyakának tetejére a maradék csavarokkal
- Rögzítse a kamerát cipzárral vagy kétoldalas szalaggal a 90 fokos konzolra
Ha szükséges, használja a képeket útmutatóként.
5. lépés: Az összes bekötése
Ennek a robotnak a kábelezése meglehetősen feszült.
A Motors:
Forrasztóvezetékek mindkét motoron, ha még nem tette meg
A robotok elülső részével (a végén a lúdnyakkal) fordítva Ön felé:
- Csatlakoztassa a bal motor motorvezetékeit az M1A és M1B csatornához
- Csatlakoztassa a jobb motor motorvezetékeit az M2A és M2B csatornákhoz
Földi (GND) csatlakozások:
- Csatlakoztassa a RoboClaw egyik földelőcsapját a földelő ugródeszkához. A RoboClaw földelőcsapvonala a legközelebb van a középponthoz (lásd a képet)
- Csatlakoztassa az RPI 6 -os PIN -kódját az áthidaló táblához. Lásd az RPI fejléc képét a pin hozzárendeléshez.
- Csatlakoztassa a GND -t a szervoakkumulátorból az áthidaló tábla egyik csapjához.
- Futtasson egy jumper vezetéket az áthidaló tábláról a szervó GND huzalra.
RPI a RoboClaw -hoz:
Csatlakoztassa az RPI GPIO14 TXD csapot a RoboClaw S1 csaphoz
Erő:
- Csatlakoztassa a szervoakkumulátor POS vezetékét a szervo POS vezetékhez
- Csatlakoztassa a POS vezetéket a motor akkumulátorából a RoboClaw motor tápbemeneti csatlakozójának POS (+) pontjához. A GND terminált egyelőre lekapcsolva hagyjuk.
6. lépés: Az RPI beállítása
Feltételezem, hogy a felhasználó tud valamit a Linuxról és az RPI -ről. Nem foglalkozom az egyik beállításával vagy csatlakoztatásával. Ha segítségre van szüksége, használja az alábbi oldalakat.
Az RPI beállításához tekintse meg a következő oldalakat:
- RPI alapbeállítás
- RPI Gyors útmutató
- NOOBS beállítási céh
Általános ugróoldalak esetén az RPI főoldala és az eLinux oldalak nagyszerű kiindulópontok.
Nézze meg ezt a linket az RPI általános Wifi beállításához.
Ha valamilyen fényképezőgépet vagy webkamerát szeretne használni a boton, akkor nézze meg ezeket az oldalakat, hogy megszerezze az alapvető szükséges fájlokat.
- RPI bütyök beállítása
- eLinix RPI bütyök beállítása
Streamelő videó:
Van néhány módja annak, hogy a video streaming RPI -n működjön, de az általam preferált módszer a Motion használata.
Az RPI-re való telepítéshez futtassa ezt: sudo apt-get install motion
Ez az oktatható tétel átállítja a streamelésre is.
7. lépés: Az RPI soros port konfigurálása
Az RX és TX használatához le kell tiltanunk a Linux konzol módot, mivel erről a portról szeretnénk beszélni a RoboClaw motorvezérlővel. Ehhez ezt a módszert vagy ezt az eszközt használhatja. A módszer a választás, mivel mindketten ugyanazt teszik.
8. lépés: A Python modulok telepítése
Szüksége lesz az RPI -re telepített pythonra, valamint a python csomag telepítő pip -jére.
A pip telepítéséhez tegye a következőket:
- sudo apt-get install python-setuptools
- sudo easy_install pip
Azután:
- sudo pip telepítő lombik
- sudo pip install pyserial
- sudo pip telepítse az RPIO -t
Ez lesz a kód futtatásához szükséges összes modul.
9. lépés: A RoboClaw beállítása
A robot kódja a RoboClaw -val beszél szabványos soros módban 19200 baudon.
A RoboClaw beállításához tegye a következőket:
- Nyomja meg a RoboClaw "MODE" gombját
- Nyomja meg a set gombot, amíg a LED 5 (ötször) fel nem villan a késleltetések között
- Nyomja meg a "LIPO" gombot a tároláshoz
- Ezután nyomja meg a "SET" gombot, amíg a LED 3 (három) alkalommal fel nem villan a késleltetések között
- Nyomja meg a LIPO gombot a tároláshoz
Ennyi a motorvezérlő beállításához. Ha szükséges, nézze meg a fenti linken található pdf -t.
10. lépés: A Rover program/fájlok telepítése
Töltse le és másolja a rover.zip fájlt a pi felhasználói könyvtár RPI -jébe.
Ha Linuxot vagy Mac -et futtat, akkor az "scp" segítségével teheti meg:
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/~
Windows esetén letöltheti és használhatja a pscp -t, majd tegye a következőket:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~
Miután a zipfájlt átmásolta az RPI -be, jelentkezzen be pi felhasználóként.
Most fuss:
bontsa ki a rovert.zip
Ezzel kicsomagolja a fájlokat a "rover" nevű mappába, és a következő lesz a mappában:
- restrover.py (A robot python kódja)
- statikus (a vezérlőoldal gombjainak képfájljait tartalmazza)
- sablonok (tartalmazza az index.htlm fájlt, a vezérlő weboldalt)
Ha webkamerát használ, módosítsa a sablonmappában az index.html fájl alja melletti sort. Módosítsa az IFRAME sor URL -jét, hogy megfeleljen a videofolyam src URL -jének.
11. lépés: Indítsa el a botot
Csatlakoztassa az USB tápellátást az RPI -hez.
A botkód elindításához jelentkezzen be pi felhasználóként, és futtassa:
- cd rover
- sudo python restrover.py
Ha minden rendben volt, ebben a lépésben a képhez hasonló képernyőt kell látnia
Ha bármilyen hibát vagy problémát lát, a további lépések előtt meg kell javítania azokat.
Most csatlakoztassa a GND (-) vezetéket a RoboClaw motor teljesítménybemenetének NEG (-) csatlakozójához.
12. lépés: A robotvezérlő oldal elérése
Miután a robot python parancsfájlja fut, kapcsolja be a RoboClaw -ot, majd navigáljon az RPI IP -jéhez, például:
your_rpi_ip
Látnia kell, hogy a webvezérlő oldal megjelenik, mint a képeken. Ha nem, ellenőrizze az RPI kimeneti terminált, és keresse meg a hibákat, és javítsa ki azokat.
Miután belépett az oldalra, készen áll a bot irányítására.
A robot a "Med run" beállításban és közepes sebességgel indul.
A botot az oldalon található gombokkal vagy a billentyűzet gombjaival lehet vezérelni.
A kulcsok a következők:
- w - előre
- z - vissza/hátra
- a - hosszú balra kanyarodás
- s - hosszú jobbra kanyarodás
- q - rövid balra kanyarodás
- e - rövid jobbra kanyarodás
- 1 - panoráma kamera balra
- 2 - panoráma jobbra
- 3 - serpenyő balra
- 4 - serpenyő jobbra
- / - otthoni/ középső kamera
- h - robot leállítása/leállítása
Fél másodperc késleltetési puffer van az elküldött parancsok között. Ezt azért tettem, hogy kiküszöböljem a nem kívánt ismétlődő parancsokat. Természetesen törölheti ezt a kódból, ha úgy tetszik (az index.html -ben)
A többi vezérlésnek és vezérlésének magától értetődőnek kell lennie.
13. lépés: A Python/Flask kód
Ez a bot a Python és a Flask webes keretrendszert használja. Ha érdekel, itt többet megtudhatsz a lombikról.
A nagy különbség a Flask alkalmazástól és a normál Python -szkripttől a @app.route osztály/módszer, amelyet az URI kezeléshez használnak. Ettől eltekintve nagyjából normális Python.
#!/usr/bin/env python
# # Wifi/webvezérelt Rover # # Írta: Scott Beasley - 2015 # # RPIO, pyserial és Lombik # importálási időt használ az RPIO -ból, importálja a PWM -t a lombik importjából Lombik, render_template, request app = Lombik,) # Csatlakozzon a komm porthoz, és beszéljen a Roboclaw motorvezérlővel. Próbálja meg: # Itt módosítsa az átviteli sebességet, ha ez eltér az 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200) kivételével IOError: print ("Comm port not found ") sys.exit (0) # Sebesség és hajtásvezérlő változók last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo semleges helyzet (home) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos.) def index (): return render_template ('index.html', name = Nincs) @app.route ("/forward") def forward (): globális utolsó_irány, fut_ti me print "Előre" go_forward () last_direction = 0 # alvás 100ms + futásidő.alvás (0.100 + run_time) # Ha nem folyamatos, akkor késleltetés után álljon meg, ha run_time> 0: last_direction = -1 halt () return "ok" @ app.route ("/backward") def backward (): globális last_direction, run_time print "Backward" go_backward () last_direction = 1 # alvás 100ms + futási idő.sleep (0.100 + run_time) # Ha nem folyamatos, akkor késleltetés után álljon le 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 # sleep @1 /2 second time.sleep (0.500 - turn_tm_offset) # stop halt () time.sleep (0.100) return "ok" @app.route ("/right") def right (): globális utolsó_irány, turn_tm_offset print "Jobb" go_right () # sleep @1/2 second time.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app.route ("/ltforward") def ltforward (): globális utolsó_irány, turn_t m_offset print "Balra előre kanyarodás" go_left () # alvás @1 /8 másodperc.route ("/rtforward") def rtforward (): globális last_direction, turn_tm_offset print "Jobbra fordulás" go_right () # sleep @1/8 second time.sleep (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app.route ("/stop") def stop (): globális last_direction print "Stop" halt () last_direction = -1 # alvás 100ms time.sleep (0.100) return "ok" @app.route ("/panlt") def panlf (): globális servo_pos nyomtatás "Panlt" servo_pos -= 100 if servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # 150ms idő. sleep (0.150) return "ok" @app.route ("/home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # alvás 150ms time.sleep (0.150) return "ok" @app.route ("/panfull_lt") def panfull_lt (): globális servo_pos nyomtatás "Pan full l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # alvás 150ms time.sleep (0.150) return" ok " @app.route ("/panfull_rt ") def panfull_rt (): globális servo_pos print" Pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # alvás 150ms time.sleep (0.150) return "ok" @app.route ("/speed_low") def speed_low (): globális sebesség_eltolás, utolsó_irány, ford_tm_eltolódás speed_offset = 42 turn_tm_offset = 0.001 # Frissítse az aktuális irányt, hogy új sebességet kapjon, ha 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 (): globális speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Frissítse az aktuális irányt, hogy új sebességet kapjon, ha last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_hi") def speed_hi (): globális sebesség_eltolás, utolsó_irány, ford_tm_eltolódás speed_offset = 126 tur n_tm_offset = 0.332 # Frissítse az aktuális irányt, hogy új sebességet kapjon, ha last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/folyamatos ") def folyamatos (): globális futásidejű nyomtatás" Folyamatos futás "run_time = 0 # alvás 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 () # alvás 100 ms time.sleep (0.100) return "ok" # # Motor hajtás funkciók # def go_forward (): globális sebesség_eltolás, ha speed_offset! = 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 (): globális 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 (): globális 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 (): globális speed_offset, ha 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)) if _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)
Ha nem akarja, vagy szüksége van a hibakeresési információkra a lombikból, állítsa a hibakeresést „false” értékre az app.run sorban.
ha _név_ == "_fő_":
app.run (host = '0.0.0.0', port = 80, debug = False)
Itt is megváltoztathatja azt a portot, amelyet a lombik http szerver hallgat.
14. lépés: Más hardver használata
Ha más hardvert szeretne használni, például egy másik típusú SBC -t (egy fedélzeti számítógép), akkor kevés problémája lehet a Python és a Flask futtatásával más táblákon, például a Beagle Bone, a PCDuino stb. elrendezését és használja az új tábla szervohajtási képességeit.
Más típusú motorvezérlő használatához csak módosítania kell a go_forward, go_backward, go_left, go_right és halt függvényeket, hogy megtehesse azt, amire a cseremotor -meghajtónak szüksége van ahhoz, hogy a motor elvégezze ezt a funkciót.
Ajánlott:
Havas eke az FPV Rover számára: 8 lépés (képekkel)
Havas eke az FPV Rover számára: Közeleg a tél. Tehát az FPV Rover-nek szüksége van egy hóekére, hogy biztosítsa a tiszta járdát. Linkek a RoverInstructables-hez: https://www.instructables.com/id/FPV-Rover-V20/ Thingiverse: https://www.thingiverse.com/thing : 2952852Kövessen Instagramon késő
Önvezető hajó építése (ArduPilot Rover): 10 lépés (képekkel)
Önvezető hajó építése (ArduPilot Rover): Tudod, mi a menő? Pilóta nélküli önvezető járművek. Valójában annyira menők, hogy mi (egyetemi kollégáim és én) már 2018 -ban elkezdtünk egyet építeni. Ezért is indultam el idén, hogy végre befejezzem a szabadidőmben. Ebben az Inst
Webvezérelt Valentin: 8 lépés (képekkel)
Webvezérelt Valentin: Ezzel a szoftver és hardver keverékkel bárhonnan felgyújthatja a szívvel díszített éjszakai fényt, internetkapcsolattal. Tehát akár emlékszik a munkahelyére, egy kávézóba, otthon vagy a (webes) mobiltelefonján, elmondhatja valentinjének, hogy
Webvezérelt megfigyelő kamera: 8 lépés (képekkel)
Web-vezérelt felügyeleti kamera: Ennek a munkának az a célja, hogy megmutassa, hogyan lehet felügyeleti rendszert építeni a weboldal felületével. A webkamera függőleges vagy vízszintes irányba forgatható az interfészen keresztül, de csak azon a területen, amelyet a határérzékelők lehetővé tesznek. A folytatás
Webvezérelt Arduino LED: 5 lépés (képekkel)
Internetes vezérlésű Arduino LED: Ez az oktatóanyag bemutatja, hogyan lehet webes, háromszínű LED-t építeni az Arduino és a WIZnet Ethernet pajzs alapján, amely bármely webböngészőből vezérelhető. Mivel a LED egy egyszerű RESTful webszolgáltatáson keresztül jelenik meg, amely az Arduino színén fut