Orodha ya maudhui:

Rover inayodhibitiwa na wavuti: Hatua 14 (zilizo na Picha)
Rover inayodhibitiwa na wavuti: Hatua 14 (zilizo na Picha)

Video: Rover inayodhibitiwa na wavuti: Hatua 14 (zilizo na Picha)

Video: Rover inayodhibitiwa na wavuti: Hatua 14 (zilizo na Picha)
Video: BAHARI YA SHETANI: NYUMBA YA LUCIFER / KWENYE VIMBUNGA NA UPEPO MKALI / WALIPOKUFA MAELFU YA WATU 2024, Novemba
Anonim
Mtandao Udhibitiwa Rover
Mtandao Udhibitiwa Rover
Mtandao Udhibitiwa Rover
Mtandao Udhibitiwa Rover

Kujenga na kucheza na roboti ndio raha yangu kuu ya hatia maishani. Wengine hucheza gofu au ski, lakini ninaunda roboti (kwani siwezi kucheza gofu au ski:-). Ninaona kufurahi na kufurahisha! Kutengeneza bots yangu nyingi, ninatumia vifaa vya chasisi. Kutumia vifaa kunisaidia kufanya kile ninachopenda kufanya zaidi, programu na vifaa vya elektroniki na pia hufanya chasisi bora kwa ubinafsi wangu wote.

Katika Agizo hili, tutaangalia inachukua nini kufanya Wifi / rover inayodhibitiwa rahisi lakini thabiti. Chasisi iliyotumiwa ni Actobotics Gooseneck. Nilichagua kwa saizi yake, uwezo wa kupanua na gharama lakini unaweza kutumia chasisi nyingine yoyote ya chaguo lako mwenyewe.

Kwa mradi kama huu, tutahitaji kompyuta nzuri ya bodi moja na kwa bot hii nilichagua kutumia Raspberry Pi (RPI) kompyuta ya Linux. RPI (na Linux) hutupa chaguzi nyingi za kuweka alama na Python itatumika kwa upande wa usimbuaji. Kwa kiolesura cha wavuti ninatumia Flask, mfumo wa wavuti mwepesi wa chatu.

Ili kuendesha motors, nilichagua RoboClaw 2x5a. Inaruhusu mawasiliano rahisi ya serial kwa kuiagiza na inafanya kazi vizuri na RPI na motors kwenye Gooseneck.

Mwishowe, ina kamera ya wavuti ya maoni ya video ya aina ya POV ya kuiendesha kwa mbali. Nitaangazia kila mada kwa undani zaidi baadaye.

Hatua ya 1: Vifaa vinahitajika

Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
  • Chasisi ya Actobotics Gooesneck au uingizwaji unaofaa wa chaguo lako
  • Raspberry Pi ya chaguo lako (au kiini) - Mfano wa RPI B hutumiwa kwenye bot hii, lakini yoyote iliyo na angalau bandari mbili za USB itafanya kazi.
  • Sahani ya kawaida ya Servo B x1
  • 90 ° Bango moja la Angle Channel x1
  • RoboClaw 2x5a dereva wa gari
  • S3003 au saizi sawa ya saizi ya kawaida
  • Bodi ndogo ya mkate au Mini mkate
  • Waya wa jumper wa kike hadi wa kike
  • Waya wa jumper wa kiume na wa kike
  • Web cam (hiari) - ninatumia Logitech C110, na hapa kuna orodha ya cams zinazoungwa mkono kwa RPI
  • Chanzo cha nguvu cha 5v-6v kwa nguvu ya servo
  • 7.2v-11.1v betri ya kuwezesha kuwezesha gari
  • 5v 2600mah (au zaidi) benki ya umeme ya USB kwa RPI
  • Adapter ya Wifi ya USB

Kwenye bot yangu, ninatumia magurudumu 4 kuifanya iwe Mandhari-ya Ndani zaidi. Kwa chaguo hili utahitaji:

  • 4 "Gurudumu la Ushuru Mzito x2
  • 4mm Bore Set Screw Hub (inchi 0.770) x2

Hatua ya 2: Kukusanya Chassis

Kukusanya Chassis
Kukusanya Chassis
Kukusanya Chassis
Kukusanya Chassis
Kukusanya Chassis
Kukusanya Chassis

Kwanza unganisha chasisi kufuata maagizo yaliyojumuishwa na chasisi au video. Baada ya kumaliza unapaswa kuwa na kitu kama picha. KUMBUKA: Unapokusanya sehemu ya Shingo, acha tu bracket inayoongezeka.

Kwenye bot yangu, nilichagua kuchukua nafasi ya magurudumu ambayo chasisi ilikuja nayo kwa magurudumu 4 ya kazi nzito. Hii ni hiari na haihitajiki isipokuwa unataka kufanya vivyo hivyo.

Hatua ya 3: Kuweka Elektroniki

Kuweka Elektroniki
Kuweka Elektroniki
Kuweka Elektroniki
Kuweka Elektroniki
Kuweka Elektroniki
Kuweka Elektroniki

Gooseneck ina nafasi nyingi na chaguzi za kuweka vifaa vyako vya elektroniki. Ninakupa picha hizi kama laini ya mwongozo, lakini unaweza kuchagua jinsi ungependa kuiweka yote. Unaweza kutumia kusimama, mkanda wenye pande mbili, Velcro au mkanda wa servo kuweka bodi na betri.

Hatua ya 4: Kuongeza Kamera ya wavuti

Inaongeza Kamera ya wavuti
Inaongeza Kamera ya wavuti
Inaongeza Kamera ya wavuti
Inaongeza Kamera ya wavuti
Inaongeza Kamera ya wavuti
Inaongeza Kamera ya wavuti

Chukua mabano ya digrii 90, kitovu cha servo nyepesi na nne (4) za "screws" za.3125 kwa hatua hii:

  • Chukua kitovu cha servo na uweke upande mmoja wa bracket na uilinde pamoja na vis. "2125" kama vile picha
  • Halafu panda servo kwenye bracket ya servo
  • Ambatisha mabano ya digrii 90 na pembe ya servo kwenye uti wa mgongo wa servos na utumie screw ya pembe iliyokuja na servo kuwaunganisha pamoja
  • Sasa panda Servo kwenye bracket juu ya shingo ya goose na screws zilizobaki
  • Panda kamera na vifungo vya zip au mkanda wa pande mbili kwenye bracket ya digrii 90

Tumia picha kwa miongozo ikiwa inahitajika.

Hatua ya 5: Wiring It All Up

Wiring Yote Juu
Wiring Yote Juu
Wiring Yote Juu
Wiring Yote Juu
Wiring Yote Juu
Wiring Yote Juu
Wiring Yote Juu
Wiring Yote Juu

Wiring iko nyembamba mbele kwa roboti hii.

Motors:

Solder inaongoza kwa motors zote mbili ikiwa haujafanya hivyo tayari

Mbele ya roboti (mwisho na shingo ya goose) inakabiliwa na wewe:

  • Unganisha waya za gari kwenye motor ya kushoto kwenye kituo cha M1A na M1B
  • Unganisha waya za gari kwenye gari la kulia kwenye kituo cha M2A na M2B

Viunganisho vya ardhi (GND):

  • Unganisha pini moja ya ardhi kwenye RoboClaw kwenye bodi ya jumper ya ardhini. Laini ya chini kwenye RoboClaw iko karibu zaidi na kituo hicho (Tazama picha)
  • Unganisha PIN 6 kwenye RPI kwenye bodi ya kuruka. Angalia picha ya kichwa cha RPI kwa kazi za pini.
  • Unganisha GND kutoka pakiti ya betri ya servo hadi moja ya pini kwenye ubao wa jumper.
  • Run waya ya kuruka kutoka bodi ya jumper hadi waya wa servos GND.

RPI kwa RoboClaw:

Unganisha pini ya RPI GPIO14 TXD kwa pini ya RoboClaw S1

Nguvu:

  • Unganisha waya wa POS kutoka kwa betri ya servo hadi kwa mwongozo wa servos POS
  • Unganisha waya wa POS kutoka kwa betri ya gari hadi POS (+) ya kituo cha kuingiza umeme cha RoboClaw. Tutaacha kituo cha GND kimeondolewa kwa sasa.

Hatua ya 6: Kuanzisha RPI

Kuanzisha RPI
Kuanzisha RPI

Nadhani mtumiaji hapa anajua kuhusu Linux na RPI. Sifuniki jinsi ya kusanidi au kuungana na moja. Ikiwa unahitaji msaada na hiyo basi tumia kurasa zilizo hapa chini.

Ili kupata usanidi wako wa RPI, angalia kurasa zifuatazo:

  • Usanidi wa Msingi wa RPI
  • Mwongozo wa kuanza kwa RPI haraka
  • Chama cha kuanzisha NOOBS

Kwa kurasa za kuruka kwa jumla, ukurasa kuu wa RPI na kurasa za eLinux ni sehemu nzuri za kuanza.

Tazama kiungo hiki kwa usanidi wa jumla wa Wifi ya RPI.

Ikiwa unapanga kutumia aina fulani ya kamera au wavuti kwenye bot, angalia kurasa hizi kupata faili msingi zinazohitajika.

  • Usanidi wa kamera ya RPI
  • eLinix RPI cam kuanzisha

Video ya kutiririsha:

Kuna njia chache za kufanya utiririshaji wa video ufanye kazi kwenye RPI, lakini njia ninayopendelea ni kutumia Motion.

Ili kuisakinisha kwenye RPI yako endesha hii: Sudo apt-pata mwendo wa kusanikisha

Hii inaweza kuingiliwa kuiweka kwa utiririshaji pia.

Hatua ya 7: Kusanidi RPI Serial Port

Tutahitaji kulemaza hali ya kiweko cha Linux kwa kutumia RX na TX tunapotaka kuzungumza na mtawala wa gari la RoboClaw kutoka bandari hii. Ili kufanya hivyo, unaweza kutumia njia hii au zana hii. Chaguo ni lako kwenye njia kwani wote hufanya kitu kimoja mwishowe.

Hatua ya 8: Kuweka Moduli za Python

Utahitaji chatu iliyosanikishwa kwenye RPI na vile vile bomba la kisakinishaji cha kifurushi cha chatu.

Kufunga bomba fanya:

  1. Sudo apt-get kufunga python-setuptools
  2. sudo rahisi_install pip

Kisha:

  1. bomba la kusakinisha bomba
  2. Pip ya Sudo kufunga vifaa
  3. Sudo pip kufunga RPIO

Hii itakuwa moduli zote zinazohitajika kwa nambari ya kuendesha.

Hatua ya 9: Kuanzisha RoboClaw

Ninayo nambari ya roboti inazungumza na RoboClaw katika Standard Standard Mode mnamo 19200 baud.

Kuweka RoboClaw kwa hii fanya:

  1. Piga kitufe cha "MODE" kwenye RoboClaw
  2. Piga kitufe cha kuweka mpaka LED itaangaza mara 5 (tano) kati ya ucheleweshaji
  3. Piga kitufe cha "LIPO" ili uhifadhi
  4. Ifuatayo gonga kitufe cha "SET" mpaka LED itakapong'aa mara 3 (tatu) kati ya ucheleweshaji
  5. Piga kitufe cha LIPO kuhifadhi

Hiyo ni kwa kuanzisha mdhibiti wa magari. Tazama pdf iliyounganishwa hapo juu kwa habari zaidi ikiwa inahitajika.

Hatua ya 10: Kufunga Programu / faili za Rover

Pakua na unakili faili ya rover.zip kwa RPI yako kwenye saraka yako ya mtumiaji wa pi.

Ikiwa unaendesha Linux au Mac, unaweza kutumia 'scp' kuifanya:

scp ~ / location / of / the / file / rover.zip pi @ yako_rpi_ip: / ~

Kwa Windows, unaweza kupakua na kutumia pscp kisha ufanye:

pscp /location/of/the/file/rover.zip pi @ yako_rpi_ip: / ~

Mara faili ya zipi imenakiliwa kwa RPI, ingia ndani kama mtumiaji wa pi.

Sasa endesha:

unzip rover.zip

Hii itafungua faili kwenye folda inayoitwa 'rover' na iwe na zifuatazo chini ya folda hiyo:

  • restrover.py (Nambari ya chatu ya roboti)
  • tuli (inashikilia faili za picha kwa vifungo kwenye ukurasa wa kudhibiti)
  • templeti (inashikilia faili ya index.htlm, ukurasa wa wavuti wa kudhibiti)

Ikiwa unatumia kamera ya wavuti, rekebisha laini karibu na chini ya faili ya index.html kwenye folda ya templeti. Badilisha URL katika laini ya IFRAME ili ilingane na src URL ya mkondo wako wa video.

Hatua ya 11: Kuanzia Bot Up

Kuanzia Bot Up
Kuanzia Bot Up

Unganisha nguvu ya USB kwa RPI.

Kuanzisha nambari ya bot, ingia kama mtumiaji wa pi na uendesha:

  • cd rover
  • Sudo chatu restrover.py

Ikiwa yote yalikuwa sawa, unapaswa kuona skrini sawa na picha katika hatua hii

Ikiwa utaona makosa yoyote au shida, italazimika kuzirekebisha kabla ya kwenda mbele.

Sasa, unganisha waya wa GND (-) kwenye kituo cha NEG (-) kwenye pembejeo ya umeme wa RoboClaw.

Hatua ya 12: Kupata Ukurasa wa Udhibiti wa Bot

Kufikia Ukurasa wa Udhibiti wa Bot
Kufikia Ukurasa wa Udhibiti wa Bot
Kufikia Ukurasa wa Udhibiti wa Bot
Kufikia Ukurasa wa Udhibiti wa Bot

Baada ya hati ya chatu ya roboti kuendeshwa, weka nguvu RoboClaw na kisha nenda kwa ip ya RPI yako kama:

yako_rpi_ip

Unapaswa kuona ukurasa wa kudhibiti Wavuti ukitokea kama kwenye picha. Ikiwa sivyo, angalia kituo chako cha pato cha RPI na utafute makosa yoyote na urekebishe.

Mara moja kwenye ukurasa, uko tayari kudhibiti bot.

Roboti itaanza katika mpangilio wa "Med run" na kwa kasi ya Kati.

Bot inaweza kudhibitiwa kupitia vifungo kwenye ukurasa au kwa funguo kwenye kibodi.

Funguo ni:

  • w - mbele
  • z - kurudi nyuma / nyuma
  • zamu ya kushoto ndefu
  • s - zamu ndefu ya kulia
  • q - zamu fupi ya kushoto
  • e - zamu fupi ya kulia
  • 1 - kamera ya sufuria kushoto
  • 2 - pan kamera kulia
  • 3 - sufuria kamili kushoto
  • 4 - sufuria kamili kulia
  • / - kamera ya nyumbani / kituo
  • h - simama / simama robot

Kuna bafa ya nusu ya kuchelewesha kati ya amri zilizotumwa. Nilifanya hivi ili kuondoa amri zisizohitajika za kurudiwa. Kwa kweli unaweza kuondoa hii kutoka kwa nambari ikiwa unapenda (katika index.html)

Udhibiti wote na kuidhibiti inapaswa kujielezea mwenyewe.

Hatua ya 13: Nambari ya chatu / chupa

Bot hii hutumia Python na mfumo wa wavuti ya Flask. Unaweza kujifunza zaidi juu ya chupa hapa ikiwa una nia.

Tofauti kubwa kutoka kwa programu ya Flask na hati ya kawaida ya Python ni @ app.route darasa / njia inayotumika kufanya utunzaji wa URI. Nyingine zaidi ya hiyo ni Python ya kawaida sana kwa sehemu kubwa.

#! / usr / bin / env chatu

# # Wifi / Rover inayoendeshwa na Wavuti # # Imeandikwa na Scott Beasley - 2015 # # Inatumia RPIO, pyserial na Flask # kuagiza muda wa kuagiza kutoka RPIO kuagiza PWM kutoka Flask kuagiza Flask, render_template, ombi app = Flask (_name_, static_url_path = " # Unganisha kwenye bandari ya comm ili kuzungumza na mdhibiti wa magari wa Roboclaw jaribu: # Badilisha kiwango cha baud hapa ikiwa tofauti na 19200 roboclaw = serial. Serial ('/ dev / ttyAMA0', 19200) isipokuwa IOError: print ("Comm port not imepatikana ") sys.exit (0) # Viwango vya kudhibiti kasi na gari mwisho_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo neutral msimamo (home) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18), servo_pos) # Kaa kidogo kwa kutulia wakati wa muda. lala (3) # # washughulikiaji wa URI - vitendo vyote vya ukurasa wa bot hufanywa hapa # # Tuma ukurasa wa kudhibiti bots (ukurasa wa nyumbani) @ app.route ("/" def index (): kurudi render_template ('index.html', name = None) @ app.route ("/ forward") def forward (): global last_direction, run_ti nichapishe "Mbele" go_forward () mwisho_direction = 0 # lala 100ms + wakati wa kukimbia_kulala. (0.100 + run_time) # Ikiwa sio endelevu, basi simama baada ya kuchelewesha ikiwa wakati wa kukimbia> 0: mwisho_direction = -1 simama () kurudi "sawa" @ app.route ("/ backward") def backward (): global last_direction, run_time print "Backward" go_backward () last_direction = 1 # sleep 100ms + run_time time. lala (0.100 + run_time) # Ikiwa sio endelevu, basi simama baada ya kuchelewa ikiwa run_time> 0: last_direction = -1 stop () rudisha "ok" @ app.route ("/ left") def left (): global last_direction, turn_tm_offset print "Left" go_left () last_direction = -1 # sleep @ 1 / 2 mara ya pili. () # lala @ 1/2 mara ya pili.: mwelekeo wa mwisho wa ulimwengu, geuka_t chapa ya m_offset "Zunguka mbele kushoto" go_left () # lala @ 1/8 mara ya pili. lala (0.250 - (turn_tm_offset / 2)) mwisho_direction = -1 # stop stop () muda. kulala (0.100) kurudi "ok" @app.route ("/ rtforward") def rtforward (): global last_direction, turn_tm_offset print "kulia mbele zunguka" go_right () # lala @ 1/8 mara ya pili. lala (0.250 - (turn_tm_offset / 2)) mwisho_direction = -1 # simama () muda.lala (0.100) rudi "sawa" @ app.route ("/ stop") def stop (): global last_direction print "Stop" halt () last_direction = -1 # sleep 100ms time.lala (0.100 rudisha "ok" @ app.route ("/ panlt") def panlf (): servo_pos za ulimwengu chapa "Panlt" servo_pos - = 100 ikiwa servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # lala muda wa masaa 150. lala (0.150) rudisha "ok" @ app.route ("/ home") def home (): servo_pos ya kimataifa chapa "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # lala 150ms time. lala (0.150) kurudi "ok" @ app.route ("/ panfull_lt") def panfull_lt (): servo_pos ya kimataifa chapisha "Pan kamili l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # lala 150ms time. kulala (0.150) kurudi" ok "@ app.route (" / panfull_rt ") def panfull_rt (): servo_pos za kimataifa chapa" Pan kamili kulia "servo_pos = 2500 servo.set_servo (18, servo_pos) # lala muda wa saa 150. kulala (0.150) kurudi "ok" @ app.route ("/ speed_low") def speed_low (): speed_offset ya kimataifa, mwisho_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Sasisha mwelekeo wa sasa kupata kasi mpya ikiwa mwisho_direction == 0: go_forward () ikiwa last_direction == 1: go_backward () # lala 150ms time.lala (0.150) rudi "ok" @ app.route ("/ speed_mid") def speed_mid (): speed_offset ya kimataifa, mwisho_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Sasisha mwelekeo wa sasa ili kupata kasi mpya ikiwa mwisho_direction == 0: go_forward () ikiwa mwisho_direction == 1: go_backward () # lala muda wa masaa 150. lala (0.150) kurudi "ok" @ app.route ("/ speed_hi") def speed_hi (): kasi ya kimataifa, kasi ya mwisho, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # Sasisha mwelekeo wa sasa ili kupata kasi mpya ikiwa mwisho_direction == 0: go_forward () ikiwa mwisho_direction == 1: go_backward () # lala saa 150ms. kulala (0.150) kurudi "sawa" @ app.route ("/ endelea. kimbia "run_time = 0.750 simama () # lala muda wa saa 100. kulala (0.100) kurudi" sawa "@ app.route (" / short_time ") def short_time (): global run_time print" Short run "run_time = 0.300 stop () # lala saa 100. kulala (0.100) kurudi "sawa" # # Kazi za kuendesha gari # def go_forward (): kasi ya ulimwengu_offset ikiwa speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + kasi_offset)) mwingine: roboclaw.) roboclaw.wri te (chr (255 - speed_offset)) mwingine: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): speed_offset ya kimataifa ikiwa speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw. andika (chr (128 + speed_offset)) mwingine: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): kasi ya ulimwengu ikiwa kasi_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) mwingine: roboclaw.write (chr (127 - speed_offset)) roboclaw. def def (): roboclaw.write (chr (0)) ikiwa _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)

Ikiwa hautaki au unahitaji habari ya utatuzi kutoka kwa Flask, weka utatuzi kuwa 'uwongo' kwenye laini ya programu.

ikiwa _name_ == "_main_":

app.run (mwenyeji = '0.0.0.0', bandari = 80, utatuaji = Uongo)

Unaweza pia kubadilisha bandari ambayo seva ya Flask http inasikiliza hapa pia.

Hatua ya 14: Kutumia vifaa vingine

Ikiwa unataka kutumia vifaa vingine, kama aina nyingine ya SBC (Kompyuta ya Bodi Moja) unapaswa kuwa na shida kidogo kupata Python na chupa inayoendeshwa kwenye bodi zingine kama Mfupa wa Beagle, PCDuino n.k. Itabidi ubadilishe nambari ili ilingane na GPIO mpangilio na utumie uwezo wa kuendesha gari kwa bodi mpya.

Kutumia dereva wa aina nyingine ya gari, unahitaji tu kurekebisha go_forward, go_backward, go_left, go_right na kusimamisha kazi ili kufanya kile ambacho dereva wa uingizwaji anahitaji kuifanya motor ifanye kazi hiyo.

Ilipendekeza: