Obsah:
- Krok 1: Potrebný hardvér
- Krok 2: Zostavenie podvozku
- Krok 3: Montáž elektroniky
- Krok 4: Pridanie webovej kamery
- Krok 5: Všetko zapojte
- Krok 6: Nastavenie RPI
- Krok 7: Konfigurácia sériového portu RPI
- Krok 8: Inštalácia modulov Python
- Krok 9: Nastavenie RoboClaw
- Krok 10: Inštalácia programu/súborov Rover
- Krok 11: Spustenie robota hore
- Krok 12: Prístup na stránku ovládania robotov
- Krok 13: Kód Python/Flask
- Krok 14: Použitie iného hardvéru
Video: Webom riadený rover: 14 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Stavanie a hranie s robotmi je mojím hlavným životným potešením. Ostatní hrajú golf alebo lyžujú, ale ja robím (pretože nemôžem hrať golf ani lyžovať:-). Považujem to za relax a zábavu! Na výrobu väčšiny svojich robotov používam súpravy podvozkov. Používanie súprav mi pomáha robiť to, čo ma baví viac, softvér a elektroniku, a tiež to prináša lepší podvozok pre moje palce.
V tomto návode sa pozrieme na to, čo je potrebné na výrobu jednoduchého, ale robustného vozítka ovládaného Wifi/webom. Použitý podvozok je Actobotics Gooseneck. Vybral som si ho pre jeho veľkosť, možnosti rozšírenia a cenu, ale môžete použiť akékoľvek iné šasi podľa vlastného výberu.
Na takýto projekt budeme potrebovať dobrý solídny počítač a pre tohto robota som sa rozhodol použiť počítač Raspberry Pi (RPI) s operačným systémom Linux. RPI (a Linux) nám dáva veľa možností kódovania a na strane kódovania sa použije Python. Pre webové rozhranie používam Flask, ľahký webový framework pre Python.
Na pohon motorov som zvolil RoboClaw 2x5a. Umožňuje jednoduchú sériovú komunikáciu pre jeho ovládanie a funguje dobre s RPI a motormi na Goosenecku.
Nakoniec má webovú kameru na spätnú väzbu videa typu POV na diaľkové ovládanie. Každej téme sa budem podrobnejšie venovať neskôr.
Krok 1: Potrebný hardvér
- Podvozok Actobotics Gooesneck alebo vhodná náhrada podľa vášho výberu
- Raspberry Pi podľa vášho výberu (alebo klon) - V tomto robote je použitý model RPI B, ale každý s najmenej dvoma USB portami bude fungovať.
- Štandardná servo doska B x1
- Držiak kanála s jedným uhlom 90 ° x1
- Ovládač motora RoboClaw 2x5a
- S3003 alebo podobné servo štandardnej veľkosti
- Malé alebo malé breadboard
- Prepojovacie vodiče medzi ženami a ženami
- Prepojovacie vodiče medzi mužmi a ženami
- Webová kamera (voliteľné) - Používam Logitech C110 a tu je zoznam podporovaných vačiek pre RPI.
- Napájací zdroj 5v-6v pre servo napájanie
- 7,2v-11,1v batéria na napájanie hnacieho motora
- 5v 2 600 mAh (alebo vyššia) powerbanka USB pre RPI
- USB Wifi adaptér
Na svojom topánke používam 4 kolesá, aby bol trochu viac celoplošný-vnútorný. Na túto možnosť budete potrebovať:
- 4 "vysokovýkonné koleso x2
- Náboj so skrutkou so 4 mm otvorom (0,770 palca) x2
Krok 2: Zostavenie podvozku
Najprv zostavte šasi podľa pokynov dodaných so šasi alebo videom. Po dokončení by ste mali mať niečo ako obrázok. POZNÁMKA: Pri montáži dielu na krk nechajte montážny držiak vypnutý.
Na svojom topánke som sa rozhodol vymeniť kolesá, s ktorými bol podvozok dodávaný, pre 4 ťažké kolesá. Toto je voliteľné a nie je potrebné, ak nechcete urobiť to isté.
Krok 3: Montáž elektroniky
Gooseneck má veľa priestoru a možností montáže vašej elektroniky. Tieto obrázky vám dávam ako vodítko, ale môžete si vybrať, ako by ste to chceli celé rozložiť. Na pripevnenie dosky a batérií môžete použiť dištančné podložky, obojstrannú pásku, suchý zips alebo servopásku.
Krok 4: Pridanie webovej kamery
Na tento krok vezmite 90 stupňovú konzolu, ľahký servopohon a štyri (4) skrutky.3125 :
- Vezmite servo náboj a umiestnite ho na jednu stranu konzoly a zaistite ich spolu skrutkami.2125 "ako na obrázku.
- Potom namontujte servo do držiaka serva
- Pripojte 90 -stupňovú konzolu so servo klaksónom k chrbtici serva a pomocou skrutky na klaksóne, ktorá bola dodaná so servom, ich spojte dohromady.
- Teraz pomocou zostávajúcich skrutiek namontujte servo v držiaku na vrch husieho krku
- Namontujte kameru pomocou zipsov alebo obojstrannej pásky na držiak 90 stupňov
V prípade potreby použite obrázky ako sprievodcu.
Krok 5: Všetko zapojte
Kábel je pre tohto robota pomerne tesne.
Motory:
Ak ste tak ešte neurobili, spájkovacie káble na oboch motoroch
S robotmi spredu (koniec s husím krkom) smerom od vás:
- Pripojte vodiče motora na ľavom motore ku kanálu M1A a M1B
- Pripojte vodiče motora na pravom motore ku kanálu M2A a M2B
Uzemnenie (GND):
- Pripojte jeden uzemňovací kolík na RoboClaw k doske uzemňovacieho mostíka. Uzemňovacia čiara na RoboClaw je najbližšie k stredu (pozri obrázok)
- Pripojte PIN 6 na RPI k prepojovacej doske. Priradenia pinov nájdete na obrázku hlavičky RPI.
- Pripojte GND zo sady batérií serva k jednému z kolíkov na prepojovacej doske.
- Veďte prepojovací kábel z prepojovacej dosky na vodič GND serva.
RPI pre RoboClaw:
Pripojte kolík RPI GPIO14 TXD k kolíku RoboClaw S1
Moc:
- Pripojte kábel POS zo serva batérie k POS káblu serva
- Pripojte kábel POS z batérie motora k POS (+) na vstupnom termináli motora RoboClaw. Terminál GND zatiaľ necháme odpojený.
Krok 6: Nastavenie RPI
Predpokladám, že užívateľ tu vie niečo o Linuxe a RPI. Nezaoberám sa tým, ako ho nastaviť alebo sa k nemu pripojiť. Ak s tým potrebujete pomôcť, použite nižšie uvedené stránky.
Ak chcete získať nastavenie RPI, pozrite sa na nasledujúce stránky:
- Základné nastavenie RPI
- Stručný sprievodca RPI
- Guilde nastavenia NOOBS
Pokiaľ ide o všeobecné skokové stránky, hlavná stránka RPI a stránky eLinux sú skvelými miestami na začiatok.
V tomto odkaze nájdete všeobecné nastavenie WiFi pre RPI.
Ak máte v pláne použiť na fotoaparáte nejaký fotoaparát alebo webovú kameru, pozrite sa na tieto stránky a získajte potrebné súbory.
- Nastavenie kamery RPI
- Nastavenie vačky eLinix RPI
Streamovanie videa:
Existuje niekoľko spôsobov, ako spustiť streamovanie videa na RPI, ale ja preferujem metódu Motion.
Ak ho chcete nainštalovať do svojho RPI, spustite toto: sudo apt-get install motion
Tento návod vás prevedie nastavením aj pre streamovanie.
Krok 7: Konfigurácia sériového portu RPI
Aby sme mohli hovoriť s ovládačom motora RoboClaw z tohto portu, budeme musieť vypnúť režim konzoly Linux pre používanie RX a TX. Na tento účel môžete použiť túto metódu alebo tento nástroj. Metóda je na vás, pretože obaja nakoniec urobia to isté.
Krok 8: Inštalácia modulov Python
Budete potrebovať python nainštalovaný na RPI a tiež inštalátor balíka python python.
Ak chcete nainštalovať pip, postupujte takto:
- sudo apt-get install python-setuptools
- sudo easy_install pip
Potom:
- sudo pip nainštalujte banku
- sudo pip install pyserial
- sudo pip nainštalujte RPIO
Toto budú všetky moduly potrebné na spustenie kódu.
Krok 9: Nastavenie RoboClaw
Mám kód robota, ktorý hovorí s RoboClaw v štandardnom sériovom režime pri 19 200 baudoch.
Ak chcete RoboClaw nastaviť na tento účel, postupujte takto:
- Kliknite na tlačidlo „REŽIM“na RoboClaw
- Stláčajte tlačidlo set, kým LED dióda 5 (päťkrát) medzi oneskoreniami nezabliká
- Uložte kliknutím na tlačidlo „LIPO“
- Potom kliknite na tlačidlo „SET“, kým LED dióda medzi oneskoreniami nezabliká 3 (trikrát)
- Uložte stlačením tlačidla LIPO
To je všetko pre nastavenie ovládača motora. V prípade potreby nájdete ďalšie informácie v nižšie uvedenom súbore pdf.
Krok 10: Inštalácia programu/súborov Rover
Prevezmite a skopírujte súbor rover.zip do svojho RPI v používateľskom adresári pi.
Ak používate Linux alebo Mac, môžete na to použiť príkaz „scp“:
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/~
V systéme Windows si môžete stiahnuť a použiť pscp a potom urobiť:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~
Akonáhle je súbor zip skopírovaný do RPI, prihláste sa doň ako používateľ pí.
Teraz spustite:
rozbaliť rover.zip
Tým sa rozbalia súbory do priečinka s názvom „rover“a v tomto priečinku budú nasledujúce položky:
- restrover.py (Pythonov kód pre robota)
- statický (obsahuje obrazové súbory pre tlačidlá na kontrolnej stránke)
- šablóny (obsahuje súbor index.htlm, kontrolnú webovú stránku)
Ak používate webovú kameru, upravte riadok v spodnej časti súboru index.html v priečinku šablón. Zmeňte adresu URL v riadku IFRAME tak, aby zodpovedala adrese URL src pre váš stream videa.
Krok 11: Spustenie robota hore
Pripojte napájanie USB k RPI.
Ak chcete spustiť kód robota, prihláste sa ako používateľ pí a spustite:
- cd rover
- sudo python restrover.py
Ak bolo všetko v poriadku, v tomto kroku by sa vám mala zobraziť obrazovka podobná obrázku
Ak uvidíte nejaké chyby alebo problémy, budete ich musieť opraviť, než budete pokračovať.
Teraz pripojte vodič GND (-) k terminálu NEG (-) na vstupe motora RoboClaw.
Krok 12: Prístup na stránku ovládania robotov
Keď je skript robota spustený, zapnite RoboClaw a potom prejdite na ip svojho RPI ako:
your_rpi_ip
Mali by ste vidieť vyskočenú stránku ovládania webu ako na obrázkoch. Ak nie, skontrolujte výstupný terminál RPI a vyhľadajte chyby a opravte ich.
Keď ste na stránke, ste pripravení ovládať robota.
Robot sa spustí v nastavení „Stredný chod“a pri stredných otáčkach.
Robota je možné ovládať pomocou tlačidiel na stránke alebo pomocou klávesov na klávesnici.
Kľúče sú:
- w - dopredu
- z - vzad/vzad
- a - dlhá ľavotočivá zákruta
- s - dlhá pravotočivá zákruta
- q - krátke odbočenie doľava
- e - krátke odbočenie doprava
- 1 - panvová kamera vľavo
- 2 - panvová kamera vpravo
- 3 - panvica úplne vľavo
- 4 - panvica úplne vpravo
- / - domáca/ stredová kamera
- h - zastaviť/zastaviť robota
Medzi odoslanými príkazmi je polsekundová vyrovnávacia pamäť oneskorenia. Urobil som to, aby som eliminoval nechcené opakované príkazy. Toto môžete samozrejme z kódu odstrániť, ak chcete (v index.html)
Ostatné ovládacie prvky a ich ovládanie by malo byť samozrejmé.
Krok 13: Kód Python/Flask
Tento robot používa webový rámec Python a Flask. Ak máte záujem, môžete sa o banke dozvedieť viac tu.
Veľkým rozdielom od aplikácie Flask a bežného skriptu Python je trieda/metóda @app.route, ktorá sa používa na spracovanie URI. Okrem toho je to z väčšej časti celkom normálny Python.
#!/usr/bin/env python
# # Wifi/Web Rover # # Napísal Scott Beasley - 2015 # # Používa RPIO, pyserial a Flask # čas importu sériového importu z RPIO import PWM z importu banky Flask, render_template, žiadosť app = Flask (_name_, static_url_path = ") # Pripojte sa k komunikačnému portu a porozprávajte sa s ovládačom motora Roboclaw skúste: # Zmeňte prenosovú rýchlosť, ak sa líši od 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200) okrem IOError: print („Comm port not nájdené ") sys.exit (0) # Premenné riadenia rýchlosti a pohonu last_direction = -1 speed_offset = 84 turn_tm_offset = 0,166 run_time = 0,750 # Servo neutrálna poloha (domáca) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos) # Malé zdržanie sa pri nastavovaní času.spánok (3) # # Obslužné rutiny URI - všetky akcie stránky robota sa vykonávajú tu # # Odošlite stránku ovládania robotov (domovská stránka) @app.route ("/") def index (): return render_template ('index.html', name = None) @app.route ("/forward") def forward (): global last_direction, run_ti vytlačím „Vpred“go_forward () last_direction = 0 # spánok 100 ms + čas_behu.spánok (0,100 + čas_behu) # Ak nie je nepretržitý, potom sa zastaví po oneskorení, ak je beh_time> 0: last_direction = -1 zastaví () vráti „ok“@ app.route ("/backward") def backward (): global last_direction, run_time print "Backward" go_backward () last_direction = 1 # sleep 100ms + run_time time.sleep (0.100 + run_time) # Ak nie je nepretržité, potom sa zastaví po oneskorení 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 (): global last_direction, turn_tm_offset print "Right" go_right () # spánok @1/2 druhýkrát. spánok (0,500 - turn_tm_offset) last_direction = -1 # stop halt () time.sleep (0,100) vrátiť "ok" @app.route ("/ltforward") def ltforward (): global last_direction, turn_t m_offset tlač "Otočenie doľava" go_left () # spánok @1/8 druhýkrát. spánok (0,250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt () time.sleep (0,100) návrat "ok" @app.route ("/rtforward") def rtforward (): globálny posledný_smer, turn_tm_offset tlač "Otočné dopredu" go_right () # spánok @1/8 druhýkrát. spánok (0,250 - (turn_tm_offset/2)) last_direction = -1 # stop halt () time.sleep (0.100) return "ok" @app.route ("/stop") def stop (): global last_direction print "Stop" halt () last_direction = -1 # sleep 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) # sleep 150ms time. spánok (0,150) návrat "ok" @app.route ("/home") def home (): globálne servo_pos vytlačiť "domov" servo_pos = 1250 servo.set_servo (18, servo_pos) # spánok 150 ms čas.spánok (0,150) návrat "ok" @app.route ("/panfull_lt") def panfull_lt (): globálna tlač servo_pos "Pan full l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # spánok 150 ms čas.spánok (0,150) návrat" ok " @app.route ("/panfull_rt ") def panfull_rt (): globálna tlač servo_pos" Posunúť úplne doprava "servo_pos = 2500 servo.set_servo (18, servo_pos) # spánok 150 ms čas.spánok (0,150) návrat "ok" @app.route ("/speed_low") def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0,001 # Aktualizujte aktuálny smer, aby ste získali novú rýchlosť, ak 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 # Aktualizujte aktuálny smer, aby ste získali novú rýchlosť, ak last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) vrátiť "ok" @app.route ("/speed_hi") def speed_hi (): global speed_offset, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0,332 # Aktualizujte aktuálny smer, aby ste získali novú rýchlosť, ak last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/continuous ") def continual (): global run_time print" Continuous run "run_time = 0 # sleep 100ms 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 () # spánok 100 ms čas.spánok (0,100) návrat "ok" # # Funkcie motorového pohonu # def go_forward (): globálna odchýlka rýchlosti, ak je odchýlka rýchlosti! = 42: roboclaw.write (chr (1 + rýchlosť_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 + offset speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - offset rýchlosti)) roboclaw.write (chr (128 + offset rýchlosti)) else: roboclaw.write (chr (1 + offset rýchlosti) 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)
Ak nechcete alebo potrebujete informácie o ladení z banky, nastavte na riadku app.run ladenie na hodnotu „false“.
ak _name_ == "_main_":
app.run (hostiteľ = '0.0.0.0', port = 80, ladenie = nepravda)
Môžete tu tiež zmeniť port, na ktorom server Flask http počúva.
Krok 14: Použitie iného hardvéru
Ak chcete použiť iný hardvér, napríklad iný typ SBC (jednodoskový počítač), mali by ste mať malé problémy so spustením systému Python a Flask na iných doskách, ako sú Beagle Bone, PCDuino atď … Budete musieť zmeniť kód tak, aby zodpovedal GPIO rozloženie a využitie možností riadenia servopohonu novej dosky.
Ak chcete použiť iný typ ovládača motora, stačí upraviť funkcie go_forward, go_backward, go_left, go_right a halt, aby urobili čokoľvek, čo náhradný ovládač motora potrebuje, aby motor vykonal danú funkciu.
Odporúča:
Hlasom riadený raketomet Launcher založený na Alexe: 9 krokov (s obrázkami)
Hlasom riadený raketomet Launcher založený na Alexe: Ako sa blíži zimná sezóna; prichádza to obdobie roka, kedy sa oslavuje sviatok svetiel. Áno, hovoríme o Diwali, čo je skutočný indický festival oslavovaný po celom svete. Tento rok je Diwali už za nami a vidieť ľudí
Pripojenie kalendárov Google k webom Google: 5 krokov
Pripojenie kalendárov Google k webom Google: Toto je návod, ktorý vás naučí vytvárať, používať a upravovať kalendáre Google a potom ich pomocou funkcií zdieľania pripojiť k webu Google. To môže byť prospešné pre mnoho ľudí, pretože Weby Google je možné použiť na koordináciu a distribúciu
Píšťalkom riadený robot: 20 krokov (s obrázkami)
Robot riadený píšťalkou: Tento robot je všade vedený píšťalkou, podobne ako „hračka Zlatá Sonic“vyrobený v roku 1957. Po zapnutí sa robot pohybuje v smere, ktorý ukazuje svetelná šípka na mechanizme predného hnacieho kolesa. Keď píšťalka
Webom riadený Valentín: 8 krokov (s obrázkami)
Webom riadený Valentín: S touto kombináciou softvéru a hardvéru môžete rozsvietiť nočné svetlo zdobené srdcom odkiaľkoľvek s prístupom na internet. Či už si teda pamätáte v práci, v kaviarni, doma alebo vo svojom mobilnom telefóne (s pripojením na web), môžete svojmu miláčikovi povedať, že
Webom riadená kamera: 8 krokov (s obrázkami)
Webovo riadená monitorovacia kamera: Cieľom tejto práce je ukázať, ako je možné vytvoriť monitorovací systém s rozhraním webovej stránky. Webovú kameru je možné cez rozhranie otáčať vo vertikálnom alebo horizontálnom smere, ale iba v oblasti, ktorú umožňujú hraničné senzory. Pokračovanie