Përmbajtje:
- Hapi 1: Nevojitet harduer
- Hapi 2: Montimi i Shasisë
- Hapi 3: Montimi i pajisjeve elektronike
- Hapi 4: Shtimi i kamerës në internet
- Hapi 5: Instalimi i të gjithave
- Hapi 6: Vendosja e RPI
- Hapi 7: Konfigurimi i Portit Serial të RPI
- Hapi 8: Instalimi i moduleve Python
- Hapi 9: Vendosja e RoboClaw
- Hapi 10: Instalimi i Programit/skedarëve Rover
- Hapi 11: Fillimi i Bot Up
- Hapi 12: Qasja në faqen e kontrollit të botëve
- Hapi 13: Kodi Python/Flask
- Hapi 14: Përdorimi i pajisjeve të tjera
Video: Rover i kontrolluar nga uebi: 14 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Ndërtimi dhe loja me robotët është kënaqësia ime kryesore fajtore në jetë. Të tjerët luajnë golf ose ski, por unë ndërtoj robotë (pasi nuk mund të luaj golf ose të skijoj:-). Më duket zbutës dhe argëtues! Për të bërë shumicën e botëve të mi, unë përdor komplete shasie. Përdorimi i kompleteve më ndihmon të bëj atë që më pëlqen të bëj më shumë, softuer dhe elektronikë dhe gjithashtu krijon një shasi më të mirë për veten time të gjithë gishtërinjve.
Në këtë Instructable, ne do të shikojmë se çfarë duhet për të bërë një rover të thjeshtë por të fuqishëm Wifi/web të kontrolluar. Shasia e përdorur është Actobotics Gooseneck. Unë e zgjodha për madhësinë, aftësinë për të zgjeruar dhe koston, por ju mund të përdorni çdo shasi tjetër sipas dëshirës tuaj.
Për një projekt si ky, ne do të kemi nevojë për një kompjuter të mirë të fortë të vetëm dhe për këtë bot kam zgjedhur të përdor Raspberry Pi (RPI) një kompjuter me bazë Linux. RPI (dhe Linux) na jep shumë mundësi kodimi dhe Python do të përdoret për anën e kodimit. Për ndërfaqen në internet unë përdor Flask, një kornizë e lehtë uebi për Python.
Për të drejtuar motorët, zgjodha një RoboClaw 2x5a. Ai lejon komunikim të thjeshtë serik për komandimin e tij dhe funksionon mirë me RPI dhe motorët në Gooseneck.
Së fundi, ajo ka një kamer në internet për reagimet video të tipit POV për ta drejtuar atë nga distanca. Unë do të mbuloj secilën temë në mënyrë më të detajuar më vonë.
Hapi 1: Nevojitet harduer
- Shasia Actobotics Gooesneck ose një zëvendësim i përshtatshëm i zgjedhjes suaj
- Raspberry Pi sipas zgjedhjes suaj (ose kloni) - Një model RPI B përdoret në këtë bot, por çdo me të paktën dy porte USB do të funksionojë
- Pjatë Servo Standard B x1
- Kllapa 90 ° Single Angle Channel (x1)
- Shofer motori RoboClaw 2x5a
- S3003 ose servo të ngjashme me madhësi standarde
- Dërrasë e vogël buke ose Mini panxhar
- Tela bluzë nga femra në femra
- Tela bluzë meshkuj në femra
- Web kamera (opsionale) - Unë përdor një Logitech C110, dhe këtu është një listë e kamerave të mbështetura për RPI
- Burim energjie 5v-6v për energji servo
- Bateri 7.2v-11.1v për fuqizimin e motorit të makinës
- 5v 2600mah (ose më e lartë) bankë USB për RPI
- Përshtatës USB Wifi
Në botin tim, unë përdor rrota 4 për ta bërë atë pak më shumë All-Terrain-Indoor. Për këtë opsion do t'ju duhet:
- 4 "Rrota e rëndë" x2
- Qendër vidash prej 4 mm me vrima (0.770 inç) x2
Hapi 2: Montimi i Shasisë
Së pari mblidhni shasinë duke ndjekur udhëzimet e përfshira me shasinë ose videon. Pas përfundimit, duhet të keni diçka si imazhi. SHENIM: Kur montoni pjesën e Qafës, thjesht lini kllapën e montimit të fikur.
Në botin tim, unë zgjodha të zëvendësoja rrotat me të cilat erdhi shasia për rrota të rënda 4 . Kjo është opsionale dhe nuk nevojitet nëse nuk dëshironi të bëni të njëjtën gjë.
Hapi 3: Montimi i pajisjeve elektronike
Gooseneck ka shumë hapësirë dhe mundësi për montimin e pajisjeve elektronike. Unë ju jap këto fotografi si një udhërrëfyes, por ju mund të zgjidhni se si dëshironi t'i shtroni të gjitha. Për të montuar tabelën dhe bateritë, mund të përdorni fikse, shirit të dyanshëm, Velcro ose servo-shirit.
Hapi 4: Shtimi i kamerës në internet
Merrni kllapa 90 gradë, shpërndarës të lehtë servo dhe katër (4) vida.3125 për këtë hap:
- Merrni servo shpërndarësin dhe vendoseni në njërën anë të kllapës dhe sigurojini së bashku me vidhat.2125 "si në foto
- Pastaj montoni servo në kllapa servo
- Bashkangjitni kllapën 90 gradë me bririn e servo në shpinë servos dhe përdorni vidën e bririt që erdhi me servo për t'i lidhur ato së bashku
- Tani montoni Servo në kllapa në majë të qafës me vidat e mbetura
- Montoni kamerën me zinxhirë ose kasetë të dyanshme në kllapa 90 gradë
Përdorni fotografitë për udhëzues nëse është e nevojshme.
Hapi 5: Instalimi i të gjithave
Instalimet elektrike janë mjaft të vështira për këtë robot.
Motorët:
Salduesi drejton në të dy motorët nëse nuk e keni bërë tashmë
Me pjesën e përparme të robotëve (fundi me qafën e patës) përballë jush:
- Lidhni telat e motorit në motorin e majtë me kanalin M1A dhe M1B
- Lidhni telat e motorit në motorin e djathtë me kanalin M2A dhe M2B
Lidhjet tokësore (GND):
- Lidhni një kunj tokëzimi në RoboClaw me tabelën e kërcyesit tokësor. Linja e kunjave të tokës në RoboClaw është më afër qendrës (Shih fotografinë)
- Lidhni PIN 6 në RPI me tabelën e kërcyesit. Shikoni foton e kokës RPI për caktimet e kunjave.
- Lidhni GND nga paketa servo bateri në një nga kunjat në bordin e kërcyesit.
- Drejtoni një tel bluzë nga bordi i kërcyesit në tela servos GND.
RPI në RoboClaw:
Lidhni pinin RPI GPIO14 TXD me pinin RoboClaw S1
Fuqia:
- Lidhni telin POS nga bateria servo në prizën e servos POS
- Lidhni tela POS nga bateria e motorit në POS (+) të terminalit të hyrjes së fuqisë motorike RoboClaw. Ne do ta lëmë terminalin GND të shkëputur tani për tani.
Hapi 6: Vendosja e RPI
Supozoj se përdoruesi këtu di disa për Linux dhe RPI. Unë nuk mbuloj mënyrën e konfigurimit ose lidhjes me një. Nëse keni nevojë për ndihmë me këtë, atëherë përdorni faqet më poshtë.
Për të marrë konfigurimin tuaj RPI, hidhini një sy faqeve të mëposhtme:
- Konfigurimi bazë i RPI
- RPI Udhëzues për fillimin e shpejtë
- Guilde e konfigurimit të NOOBS
Për faqet e përgjithshme të kërcimit, faqja kryesore e RPI dhe faqet eLinux janë vende të shkëlqyera për të filluar.
Shikoni këtë lidhje për konfigurimin e përgjithshëm të Wi -Fi RPI.
Nëse planifikoni të përdorni një lloj kamere ose ueb -kamera në bot, hidhini një sy këtyre faqeve për të marrë skedarët bazë të nevojshëm.
- Konfigurimi i kamerës RPI
- konfigurimi i kamerës eLinix RPI
Transmetimi i videos:
Ka disa mënyra për të bërë transmetimin e videove duke punuar në një RPI, por metoda që preferoj është përdorimi i Motion.
Për ta instaluar atë në RPI-në tuaj, ekzekutoni këtë: sudo apt-get install motion
Ky udhëzues shkon edhe mbi vendosjen e tij për transmetim gjithashtu.
Hapi 7: Konfigurimi i Portit Serial të RPI
Ne do të duhet të çaktivizojmë modalitetin e tastierës Linux për përdorimin e RX dhe TX pasi duam të flasim me kontrolluesin e motorit RoboClaw nga ky port. Për ta bërë këtë, mund të përdorni këtë metodë ose këtë mjet. Zgjedhja është e juaja për metodën pasi të dy bëjnë të njëjtën gjë në fund.
Hapi 8: Instalimi i moduleve Python
Ju do të keni nevojë për python të instaluar në RPI, si dhe pip instalues të paketës python.
Për të instaluar pipin bëni:
- sudo apt-get install python-setuptools
- sudo easy_install pip
Pastaj:
- filxhan sudo pip instaloni
- sudo pip install pyserial
- sudo pip instaloni RPIO
Këto do të jenë të gjitha modulet e nevojshme që kodi të funksionojë.
Hapi 9: Vendosja e RoboClaw
Kam kodin robot që flet me RoboClaw në Modalitetin Serial Standard në 19200 baud.
Për të vendosur RoboClaw për këtë, bëni:
- Goditni butonin "MODE" në RoboClaw
- Shtypni butonin e caktuar derisa LED të ndizet 5 (pesë) herë midis vonesave
- Klikoni në butonin "LIPO" për të ruajtur
- Tjetra goditni butonin "SET" derisa LED të ndizet 3 (tre) herë midis vonesave
- Goditni butonin LIPO për të ruajtur
Kjo është ajo për vendosjen e kontrolluesit të motorit. Shikoni pdf -në e lidhur më sipër për më shumë informacion nëse është e nevojshme.
Hapi 10: Instalimi i Programit/skedarëve Rover
Shkarkoni dhe kopjoni skedarin rover.zip në RPI tuaj në drejtorinë tuaj të përdoruesit pi.
Nëse po përdorni Linux ose Mac, mund të përdorni 'scp' për ta bërë këtë:
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/
Për Windows, mund të shkarkoni dhe përdorni pscp dhe më pas të bëni:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/
Pasi zipfile të kopjohet në RPI, futuni në të si përdoruesi pi.
Tani drejto:
zbërthehet rover.zip
Kjo do t'i zbërthejë skedarët në një dosje të quajtur 'rover' dhe do të ketë sa vijon nën atë dosje:
- restrover.py (Kodi Python për robotin)
- statike (mban skedarët e imazhit për butonat në faqen e kontrollit)
- shabllone (mban skedarin index.htlm, faqen e internetit të kontrollit)
Nëse jeni duke përdorur një kamerë në internet, modifikoni rreshtin në fund të skedarit index.html në dosjen e shabllonit. Ndryshoni URL -në në rreshtin IFRAME që të përputhet me URL -në src për transmetimin tuaj të videos.
Hapi 11: Fillimi i Bot Up
Lidhni fuqinë USB me RPI.
Për të filluar kodin bot, regjistrohuni si përdoruesi pi dhe ekzekutoni:
- cd rover
- sudo python restrover.py
Nëse gjithçka ishte në rregull, duhet të shihni një ekran të ngjashëm me imazhin në këtë hap
Nëse shihni ndonjë gabim ose çështje, do t'ju duhet t'i rregulloni ato përpara se të vazhdoni.
Tani, lidhni tela GND (-) me terminalin NEG (-) në hyrjen e fuqisë së motorit RoboClaw.
Hapi 12: Qasja në faqen e kontrollit të botëve
Pasi skenari python i robotit po funksionon, ndizni RoboClaw dhe pastaj lundroni te IP -ja e RPI -së tuaj si:
your_rpi_ip
Duhet të shihni që faqja e kontrollit të uebit të shfaqet si në imazhe. Nëse jo, kontrolloni terminalin tuaj dalës RPI dhe kërkoni ndonjë gabim dhe korrigjoni ato.
Pasi të jeni në faqe, jeni gati për të kontrolluar botin.
Roboti do të fillojë në cilësimin "Med run" dhe me shpejtësi mesatare.
Bot mund të kontrollohet përmes butonave në faqe ose me çelësa në tastierë.
Çelësat janë:
- w - përpara
- z - mbrapsht/prapa
- a - kthesë e gjatë majtas
- s - kthesë e gjatë djathtas
- q - kthesë e shkurtër majtas
- e - kthesë e shkurtër djathtas
- 1 - kamera pan e majtë
- 2 - pan kamera djathtas
- 3 - tigan i plotë majtas
- 4 - tigan i plotë djathtas
- / - kamera në shtëpi/ qendër
- h - robot stop/stop
Ekziston një tampon vonesë gjysmë sekondë midis komandave të dërguara. E bëra këtë për të eleminuar komandat e padëshiruara të përsëritura. Sigurisht që mund ta hiqni këtë nga kodi nëse dëshironi (në index.html)
Pjesa tjetër e kontrolleve dhe kontrolli i saj duhet të jenë vetë -shpjeguese.
Hapi 13: Kodi Python/Flask
Ky bot përdor Python dhe kuadrin e internetit Flask. Mund të mësoni më shumë rreth Flask këtu nëse jeni të interesuar.
Dallimi i madh nga një aplikacion Flask dhe një skenar normal Python është @app.route class/metodë e përdorur për të bërë trajtimin e URI. Për më tepër, është shumë normale Python në pjesën më të madhe.
#!/usr/bin/env python
# # Wifi/Rover i drejtuar nga uebi # # Shkruar nga Scott Beasley - 2015 # # Përdor RPIO, pyserial dhe Flask # import serial të importit të kohës nga RPIO import PWM nga importi i shisheve Flask, render_template, app app = Flask (_name_, static_url_path = ") # Lidhu me portën e komunikimit për të folur me kontrolluesin e motorit Roboclaw provo: # Ndrysho normën e baudit këtu nëse është e ndryshme nga 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200) përveç IOError: print ("Porta Comm nuk është u gjet ") sys.exit (0) # Variablat e kontrollit të shpejtësisë dhe drejtimit last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Pozicioni neutral servo (në shtëpi) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos) # Një vendbanim i vogël për të rregulluar kohën. gjumë (3) # # Trajtuesit e URI - të gjitha veprimet e faqeve të botit bëhen këtu # # Dërgo faqen e kontrollit të botëve (faqen kryesore) @app.route ("/") def index (): kthimi render_template ('index.html', name = Asnjë) @app.route ("/forward") def forward (): last_direction global, run_ti me print "Forward" go_forward () last_direction = 0 # gjumë 100ms + kohë_kandidimi.gjumë (0.100 + kohë_kandidimi) # Nëse jo e vazhdueshme, atëherë ndalo pas vonesës nëse koha e drejtimit> 0: last_direction = -1 ndalim () kthehu "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 + time_time) # Nëse jo e vazhdueshme, atëherë ndalo pas vonesës nëse run_time> 0: last_direction = -1 stop () kthehu "ok" @app.route ("/left") def left (): global_direction, turn_tm_offset print "Left" go_left () last_direction = -1 # sleep @1 /2 herë të dytë.gjumë (0.500 - turn_tm_offset) # ndalesë ndalese () kohë.gjumë (0.100) kthehu "ok" @app.route ("/right") def right (): global last_direction, turn_tm_offset print "Right" go_right () # sleep @1/2 herën e dytë. gjumë (0.500 - turn_tm_offset) last_direction = -1 # stop stop () time.sleep (0.100) kthehu "ok" @app.route ("/ltforward") def ltforward (): global last_direction, turn_t m_offset print "Kthesë majtas përpara" go_left () # fle @1/8 herën e dytë. gjumë (0.250 - (turn_tm_offset / 2)) last_direction = -1 # ndalesë ndalese () kohë. gjumë (0.100) kthehu "ok" @app.rrugë ("/rtforward") def rtforward (): global last_direction, turn_tm_offset print "Kthesë djathtas përpara" go_right () # sleep @1/8 herën e dytë. gjumë (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop stop () time.sleep (0.100) kthehu "ok" @app.route ("/stop") def stop (): global last_direction print "Stop" stop () last_direction = -1 # fle 100ms time.sleep (0.100) ktheni "ok" @app.route ("/panlt") def panlf (): global servo_pos print "Panlt" servo_pos -= 100 nëse servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # fle 150ms kohë. gjumi (0.150) kthehet "ok" @app.route ("/home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # gjumë 150ms kohë. gjumë (0.150) kthim "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) # gjumë 150ms kohë. gjumë (0.150) kthe" ok " @app.route ("/panfull_rt ") def panfull_rt (): global servo_pos print" Pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # gjumë 150ms kohë. Gjumi (0.150) kthehet "ok" @app.route ("/speed_low") def speed_low (): speed_offset global, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Përditësoni drejtimin aktual për të marrë shpejtësi të re nëse last_direction == 0: go_forward () nëse last_direction == 1: go_backward () # fle 150ms time.sleep (0.150) kthejeni "ok" @app.route ("/speed_mid") def speed_mid (): speed_offset globale, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Përditëso drejtimin aktual për të marrë shpejtësi të re nëse last_direction == 0: go_forward () nëse last_direction == 1: go_backward () # gjumë 150ms kohë. gjumë (0.150) kthehu "ok" @app.route ("/speed_hi") def speed_hi (): shpejtësia globale e zhvendosur, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # Përditëso drejtimin aktual për të marrë shpejtësi të re nëse last_direction == 0: go_forward () nëse last_direction == 1: go_backward () # fle 150ms time.sleep (0.150) kthehu "ok" @app.route ("/Continuous ") def i vazhdueshëm (): printimi global i kohës së ekzekutimit" Vazhdimi i vazhdueshëm "run_time = 0 # gjumë 100ms kohë. gjumi (0.100) kthehet" ok " @app.route ("/mid_run ") def mid_run (): printimi global i kohës së ekzekutimit" Mes ekzekuto "run_time = 0.750 stop () # fle 100ms time.sleep (0.100) kthehu" ok " @app.route ("/short_time ") def short_time (): printimi global i kohës së ekzekutimit" Run afatshkurtër "run_time = 0.300 ndalim () # fle 100ms time.sleep (0.100) kthehu "ok" # # Funksionet e makinës motorike # def go_forward (): shpejtësia globale e mbyllur nëse shpejtësia_funksionon! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) tjetër: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): speed_offset global nëse speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) tjetër: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): speed_offset global if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) tjetër: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): speed_offset global nëse speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) tjetër: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt (): roboclaw.write (chr (0)) nëse _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = E vërtetë)
Nëse nuk doni ose keni nevojë për informacion të korrigjimit nga Flask, vendosni korrigjimin në 'të rremë' në linjën app.run.
nëse _name_ == "_majt_":
app.run (host = '0.0.0.0', port = 80, debug = False)
Ju gjithashtu mund të ndryshoni portën që serveri Flask http dëgjon gjithashtu këtu.
Hapi 14: Përdorimi i pajisjeve të tjera
Nëse dëshironi të përdorni pajisje të tjera, si një lloj tjetër SBC (Kompjuter me një bord), duhet të keni pak probleme që Python dhe Flask të funksionojnë në borde të tjera si Beagle Bone, PCDuino etj … Ju do të duhet të ndryshoni kodin që të përputhet me GPIO paraqitni dhe përdorni aftësitë servo të drejtimit të bordit të ri.
Për të përdorur një motor tjetër tip, thjesht duhet të modifikoni funksionet go_forward, go_backward, go_left, go_right dhe të ndaloni për të bërë atë që i nevojitet shoferit zëvendësues të motorit për ta bërë motorin të bëjë atë funksion të veçantë.
Recommended:
Automatizimi llafazan -- Audio Nga Arduino -- Automatizimi i kontrolluar nga zëri -- HC - 05 Moduli Bluetooth: 9 hapa (me fotografi)
Automatizimi llafazan || Audio Nga Arduino || Automatizimi i kontrolluar nga zëri || HC - 05 Moduli Bluetooth: …………………………. Ju lutemi SUBSCRIBE në kanalin tim në YouTube për më shumë video …. …. Në këtë video ne kemi ndërtuar një Automatizim Bisedues .. Kur do të dërgoni një komandë zanore përmes celularit, atëherë ai do të ndezë pajisjet shtëpiake dhe do të dërgojë reagime për
Bëni një aparat të kontrolluar nga distanca nga një celular !: 5 hapa (me fotografi)
Bëni një aparat të kontrolluar nga distanca nga një celular !: Dëshironi të dini se çfarë po bën macja juaj në punë? Dërgoni një mesazh me tekst celularit tuaj të mbikqyrjes të sapokrijuar dhe merrni fotografi dhe video sekonda më vonë. Duket si një ëndërr? Jo më! Kjo video shpjegon se si funksionon:
Bordi i Alfabetit i kontrolluar nga aplikacionet i frymëzuar nga gjërat e huaja: 7 hapa (me fotografi)
Bordi i Alfabetit i kontrolluar nga aplikacionet i frymëzuar nga gjëra të huaja: E gjithë kjo filloi disa javë më parë kur u përpoqa të kuptoja se çfarë të merrja mbesën time nëntëvjeçare për Krishtlindje. Vëllai im më në fund më njoftoi se ajo është një tifoze e madhe e Stranger Things. Menjëherë e dija se çfarë doja t’i merrja, diçka që
Shën Valentini i kontrolluar nga uebi: 8 hapa (me fotografi)
Shën Valentini i kontrolluar nga uebi: Me këtë përzierje të softuerit dhe pajisjeve, ju mund të ndizni një dritë nate të stolisur me zemër nga kudo me qasje në internet. Pra, nëse ju kujtohet në punë, në një kafene, në shtëpi, ose në celularin tuaj (të aktivizuar në ueb), mund t'i tregoni Shën Valentinit tuaj se ju
Kamera e mbikqyrjes e kontrolluar nga uebi: 8 hapa (me fotografi)
Kamera e Mbikqyrjes e Kontrolluar nga Uebi: Qëllimi i kësaj pune është të tregojë, se si të ndërtohet sistemi i mbikëqyrjes me ndërfaqen e faqes në internet. Kamera në internet mund të kthehet në drejtimin vertikal ose horizontal përmes ndërfaqes, por vetëm në zonën që do të lejojnë sensorët e kufirit. Vazhdimi