Мазмұны:
- 1 -қадам: жабдық қажет
- 2 -қадам: шассиді жинау
- 3 -қадам: электрониканы орнату
- 4 -қадам: веб -камераны қосу
- 5 -қадам: Барлығын электрмен жабдықтау
- 6 -қадам: RPI орнату
- 7 -қадам: RPI сериялық портын конфигурациялау
- 8 -қадам: Python модульдерін орнату
- 9 -қадам: RoboClaw орнату
- 10 -қадам: Rover бағдарламасын/файлдарын орнату
- 11 -қадам: Ботты жоғары қарай іске қосыңыз
- 12 -қадам: Bot басқару бетіне кіру
- 13 -қадам: Python/Flask коды
- 14 -қадам: басқа жабдықты пайдалану
Бейне: Веб -басқарылатын Rover: 14 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Роботтармен құрылыс және ойнау - менің өмірдегі басты кінәлі ләззатым. Басқалары гольф немесе шаңғы ойнайды, бірақ мен роботтар құрастырамын (өйткені мен гольф немесе шаңғы ойнай алмаймын:-). Мен оны босаңсытып, көңілді сезінемін! Менің боттарымды көбейту үшін мен шасси жиынтығын қолданамын. Жиындарды пайдалану маған ұнайтын нәрсені, бағдарламалық жасақтаманы және электрониканы жасауға көмектеседі, сонымен қатар саусағым үшін жақсы шасси жасайды.
Бұл нұсқаулықта біз қарапайым, бірақ берік Wifi/веб -басқарылатын ровер жасау үшін не қажет екенін қарастырамыз. Қолданылатын шасси - Actobotics Gooseneck. Мен оны өлшемі, кеңейту қабілеті мен бағасы бойынша таңдадым, бірақ сіз өзіңіз таңдаған кез келген басқа шассиді пайдалана аласыз.
Мұндай жоба үшін бізге жақсы бір тақталы компьютер қажет болады және мен бұл бот үшін Raspberry Pi (RPI) Linux негізіндегі компьютерді қолдануды таңдадым. RPI (және Linux) бізге кодтаудың көптеген нұсқаларын береді және кодтау жағында Python қолданылады. Веб -интерфейс үшін мен Flask қолданамын, Python үшін жеңіл веб -құрылым.
Қозғалтқыштарды басқару үшін мен RoboClaw 2x5a таңдадым. Бұл оны басқару үшін қарапайым сериялық байланысқа мүмкіндік береді және RPI мен Gooseneck қозғалтқыштарымен жақсы жұмыс істейді.
Ақырында, оны қашықтан басқаруға арналған POV түріндегі бейне кері байланыс үшін веб -камера бар. Мен әр тақырыпты кейінірек толығырақ қарастырамын.
1 -қадам: жабдық қажет
- Actobotics Gooesneck шассиі немесе сіздің таңдауыңызға сәйкес келетін ауыстыру
- Сіз таңдаған Raspberry Pi (немесе клон) - бұл ботта B RPI моделі қолданылады, бірақ кемінде екі USB порты бар кез келгені жұмыс істейді.
- Стандартты Servo Plate B x1
- 90 ° Бір бұрышты арна кронштейні x1
- RoboClaw 2x5a мотор жүргізушісі
- S3003 немесе ұқсас стандартты өлшемді серво
- Кішкене нан немесе шағын тақта
- Әйелден әйелге секіргіш сымдар
- Еркектен әйелге секіргіш сымдар
- Веб -камера (міндетті емес) - Мен Logitech C110 қолданамын, міне RPI үшін қолдау көрсетілетін камералар тізімі
- Серво қуаты үшін 5в-6в қуат көзі
- Қозғалтқыштың қозғалтқышын қосуға арналған 7.2v-11.1v батареясы
- RPI үшін 5v 2600mah (немесе одан жоғары) USB қуат банкі
- USB Wifi адаптері
Менің ботта мен 4 дюймді қолданамын, оны үйдің ішіне кіргіземін. Бұл опция үшін сізге қажет:
- 4 «ауыр дөңгелегі x2
- 4 мм саңылау бұрандалы хаб (0,770 дюйм) x2
2 -қадам: шассиді жинау
Алдымен шассиде немесе бейнеде берілген нұсқауларды орындап, шассиді жинаңыз. Аяқтағаннан кейін сізде сурет сияқты нәрсе болуы керек. ЕСКЕРТПЕ: Мойын бөлігін монтаждау кезінде бекіту кронштейнін өшіріңіз.
Менің ботта мен шасси 4 дюймдік дөңгелектерге арналған дөңгелектерді ауыстыруды таңдадым. Бұл міндетті емес, егер сіз мұны істегіңіз келмесе.
3 -қадам: электрониканы орнату
Gooseneck -те электрониканы орнатуға арналған көптеген бөлмелер мен опциялар бар. Мен сізге бұл суреттерді нұсқаулық ретінде беремін, бірақ сіз бәрін қалай орналастырғыңыз келетінін таңдай аласыз. Тақтаны және батареяларды монтаждау үшін қосалқы таспаларды, екі жақты таспаны, Velcro немесе серво-таспаны қолдануға болады.
4 -қадам: веб -камераны қосу
Бұл қадам үшін 90 градус кронштейнді, жеңіл серво хабын және.3125 дюймдік төрт (4) бұранданы алыңыз:
- Серво хабын алыңыз және оны кронштейннің бір жағына қойыңыз және оларды суреттегідей.1212 дюймдік бұрандалармен бекітіңіз.
- Содан кейін сервоприводты серво кронштейніне орнатыңыз
- Серво мүйізі бар 90 градус кронштейнді серво мойнына бекітіңіз және оларды біріктіру үшін серво бірге жеткізілген мүйіз бұрандасын қолданыңыз.
- Енді қалған бұрандалармен Серво кронштейнінде қаз мойынының жоғарғы жағына бекітіңіз
- Камераны ілмектермен немесе екі жақты таспамен 90 градус кронштейнге бекітіңіз
Қажет болса, суреттерді нұсқаулық үшін пайдаланыңыз.
5 -қадам: Барлығын электрмен жабдықтау
Бұл робот үшін сымдар өте қиын.
Қозғалтқыштар:
Егер сіз мұны әлі жасамаған болсаңыз, дәнекер екі қозғалтқышқа қосылады
Алдыңғы роботтармен (соңы қаз мойынмен) сізден қараған күйде:
- Сол жақ қозғалтқыштағы қозғалтқыш сымдарын M1A және M1B каналына қосыңыз
- Оң жақ қозғалтқыштағы қозғалтқыш сымдарын M2A және M2B каналына қосыңыз
Жерге (GND) қосылу:
- RoboClaw -тағы бір жерге қосу штырын жерге секіру тақтасына қосыңыз. RoboClaw жердегі түйреуіш сызығы орталыққа жақын (суретті қараңыз)
- RPI -дегі PIN 6 кодын секіргіш тақтаға қосыңыз. PIN тағайындау үшін RPI тақырыбының суретін қараңыз.
- Сервистік батареялар жиынтығынан GND байланыстырғыш тақтасындағы түйреуіштердің біріне қосыңыз.
- Өткізгіш тақтасынан GND сымына өтетін сымды өткізіңіз.
RoboClaw үшін RPI:
RPI GPIO14 TXD түйреуішін RoboClaw S1 түйреуішіне қосыңыз
Қуат:
- Серво батареясынан POS сымын POS сымының сервосына қосыңыз
- POS сымын мотор аккумуляторынан RoboClaw қозғалтқышының қуат кіріс терминалының POS (+) желісіне қосыңыз. Біз GND терминалын ажыратылған күйде қалдырамыз.
6 -қадам: RPI орнату
Менің ойымша, бұл жерде пайдаланушы Linux және RPI туралы біледі. Мен оны қалай орнату керектігін айтпаймын. Егер сізге көмек қажет болса, төмендегі беттерді пайдаланыңыз.
RPI параметрлерін алу үшін келесі беттерді қараңыз:
- RPI негізгі орнату
- RPI жылдам бастау нұсқаулығы
- NOOBS орнату гильдасы
Жалпы өтетін беттер үшін RPI негізгі беті мен eLinux беттері-бастау үшін тамаша орын.
Жалпы Wi -Fi RPI орнату үшін мына сілтемені қараңыз.
Егер сіз ботта қандай да бір камераны немесе веб -камераны қолдануды жоспарласаңыз, негізгі қажетті файлдарды алу үшін осы беттерді қараңыз.
- RPI камерасын орнату
- eLinix RPI камерасын орнату
Ағындық бейне:
Бейне ағынының RPI -де жұмыс істеуінің бірнеше жолы бар, бірақ мен ұнататын әдіс - Motion.
Оны RPI-ге орнату үшін мына әрекетті орындаңыз: sudo apt-get install motion
Бұл нұсқаулық оны ағынға орнатуды да қамтиды.
7 -қадам: RPI сериялық портын конфигурациялау
Біз осы порттан RoboClaw мотор контроллерімен сөйлескіміз келетіндіктен, RX және TX пайдалану үшін Linux консольдік режимін өшіруіміз керек. Мұны істеу үшін сіз осы әдісті немесе осы құралды пайдалана аласыз. Таңдау әдісі сіздікі, өйткені екеуі де бір нәрсені жасайды.
8 -қадам: Python модульдерін орнату
Сізге RPI -де python орнатылған, сондай -ақ python пакетін орнатушы пип қажет болады.
Пип орнату үшін келесі әрекеттерді орындаңыз:
- sudo apt-get python-setuptools орнатыңыз
- sudo easy_install pip
Содан кейін:
- sudo pip орнату колбасы
- sudo pip pyserial орнатыңыз
- sudo pip RPIO орнатыңыз
Бұл кодты іске қосу үшін қажет барлық модульдер болады.
9 -қадам: RoboClaw орнату
Менде робот коды бар, ол RoboClaw -пен стандартты сериялық режимде 19200 bod.
RoboClaw -ты орнату үшін мына әрекеттерді орындаңыз:
- RoboClaw -тағы «MODE» түймесін басыңыз
- Кешіктіру арасында жарық диоды 5 (бес) рет жыпылықтағанша орнату түймесін басыңыз
- Сақтау үшін «LIPO» түймесін басыңыз
- Кейінге дейін жарық диоды 3 (үш) рет жыпылықтағанша «SET» түймесін басыңыз
- Сақтау үшін LIPO түймесін басыңыз
Бұл мотор контроллерін орнатуға арналған. Қажет болса, қосымша ақпарат алу үшін жоғарыда көрсетілген pdf файлын қараңыз.
10 -қадам: Rover бағдарламасын/файлдарын орнату
Rover.zip файлын pi пайдаланушы каталогындағы RPI -ге жүктеңіз және көшіріңіз.
Егер сіз Linux немесе Mac жүйесімен жұмыс жасасаңыз, оны орындау үшін 'scp' қолдануға болады:
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/~
Windows үшін pscp жүктеуге және қолдануға болады, содан кейін:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~
Zip файл RPI -ге көшірілгеннен кейін, оған pi пайдаланушысы ретінде кіріңіз.
Енді жүгір:
босату rover.zip
Бұл файлдарды «ровер» деп аталатын қалтаға шығарады және сол қалтада келесілер болады:
- restrover.py (роботқа арналған питон коды)
- статикалық (басқару бетіндегі түймелер үшін кескін файлдарын сақтайды)
- шаблондар (index.htlm файлын, басқару веб -бетін сақтайды)
Егер сіз веб -камераны пайдалансаңыз, үлгі қалтасындағы index.html файлының төменгі жағындағы жолды өзгертіңіз. IFRAME жолындағы URL мекенжайын бейне ағынының src URL мекенжайына сәйкестендіру үшін өзгертіңіз.
11 -қадам: Ботты жоғары қарай іске қосыңыз
USB қуатын RPI -ге қосыңыз.
Бот кодын іске қосу үшін pi пайдаланушысы ретінде кіріп, іске қосыңыз:
- CD -ровер
- sudo python restrover.py
Егер бәрі жақсы болса, сіз бұл қадамдағы суретке ұқсас экранды көруіңіз керек
Егер сіз қандай да бір ақауларды немесе ақауларды көрсеңіз, оларды жалғастырудан бұрын түзетуіңіз қажет.
Енді GND (-) сымын RoboClaw қозғалтқышының қуат кірісіндегі NEG (-) терминалына қосыңыз.
12 -қадам: Bot басқару бетіне кіру
Роботтың питон сценарийі жұмыс істеп болғаннан кейін, RoboClaw -ды қосыңыз, содан кейін RPI IP -ге өтіңіз:
your_rpi_ip
Сіз суреттердегідей веб -басқару беті ашылатынын көруіңіз керек. Олай болмаса, RPI шығыс терминалын тексеріңіз және қателерді іздеңіз және оларды түзетіңіз.
Бетке шыққаннан кейін сіз ботты басқаруға дайынсыз.
Робот «Med run» параметрінде және Орташа жылдамдықта іске қосылады.
Ботты беттегі түймелер немесе пернетақтадағы пернелер арқылы басқаруға болады.
Кілттер:
- w - алға
- z - кері/артқа
- а - ұзақ солға бұрылу
- s - оңға ұзақ бұрылу
- q - қысқа солға бұрылу
- e - қысқа оңға бұрылу
- 1 - камера солға
- 2 - камераны оңға қарай жылжытыңыз
- 3 - панель толық солға
- 4 - толық оңға айналдыру
- / - үй/ орталық камера
- h - тоқтау/тоқтату роботы
Жіберілген командалар арасында жарты секундтық кешіктіру буфері бар. Мен мұны қажетсіз қайталанатын командаларды жою үшін жасадым. Егер сіз қаласаңыз, оны кодтан алып тастай аласыз (index.html ішінде)
Қалған бақылау мен бақылау өздігінен болуы керек.
13 -қадам: Python/Flask коды
Бұл бот Python мен Flask веб -құрылымын қолданады. Егер сізді қызықтырса, Флэш туралы көбірек біле аласыз.
Flask қосымшасы мен қалыпты Python сценарийінен үлкен айырмашылық - бұл URI өңдеу үшін қолданылатын @app.route класы/әдісі. Бұдан басқа, бұл көп жағдайда қалыпты Python.
#!/usr/bin/env python
# # Wifi/Web -дегі Rover # # Жазған Скотт Бисли - 2015 # # RPIO, pyserial және Flask пайдаланады # колбадан импорттау колбасынан PWM импорттау сериясынан RPIO импорттау сериясы, render_template, app = Flask (_name_, static_url_path = '')) # Робоклав мотор контроллерімен сөйлесу үшін коммутатор портына қосылыңыз: # 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200) IOError қоспағанда, мұнда жіберу жылдамдығын өзгертіңіз: басып шығару («Comm порт емес табылды «) sys.exit (0) # Жылдамдық пен жетекті басқару айнымалылары last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo бейтарап позиция (үй) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18), servo_pos) # Уақытты реттеу үшін кішкене тоқтаңыз.ұйқы (3) # # URI өңдегіштері - бот бетінің барлық әрекеттері осында орындалады # # Боттарды басқару бетін жіберіңіз (басты бет) @app.route («/») def index (): return render_template ('index.html', name = None) @app.route («/forward») def forward (): global last_direction, run_ti мені басып шығарыңыз «Алға» go_forward () last_direction = 0 # ұйқы 100ms + жүгіру уақыты.ұйқы (0.100 + жұмыс уақыты) # Егер үздіксіз болмаса, егер run_time> 0 болса, кідірістен кейін тоқтаңыз: last_direction = -1 halt () «ok» қайтарады @ app.route («/backward») def backward (): global last_direction, run_time басып шығару «Артқа» go_backward () last_direction = 1 # ұйқы 100ms + жүгіру уақыты.ұйқы (0.100 + жүгіру уақыты) # Егер үзіліссіз болса, кідірістен кейін тоқтату егер run_time> 0: last_direction = -1 halt () «ok» @app.route («/left») def left (): global соңғы_direction, turn_tm_offset басып шығару «Left» go_left () last_direction = -1 # ұйқы @1 /2 секунд.ұйқы (0.500 - бұрылу_тм_өзгеруі) # тоқтату () уақыты.ұйқы (0.100) «жақсы» қайтару @app.route («/оңға») оңға қарай (): жаһандық соңғы бағыт, бұрылу_tm_offset «Оңға» оңға () # ұйқы @1/2 секунд.ұйқы (0.500 - бұрылу_тм_өзгеруі) соңғы_ бағыт = -1 # тоқтату тоқтау () уақыт.ұйқы (0.100) «жақсы» @app.route («/ltforward») қайтару def ltforward (): жаһандық соңғы бағыт, бұрылу_t m_offset басып шығару «Солға алға бұрылу» go_left () # 1/8 секундтық ұйқы.ұйқы (0.250 - (бұрылу_tm_жалғастыру / 2)) соңғы_ бағыт = -1 # тоқтату тоқтау () уақыт.ұйқы (0.100) «жақсы» @app қайтару.rute («/rtforward») def rtforward (): жаһандық соңғы бағыт, turn_tm_offset басып шығару «Оңға алға бұрылу» go_right () # ұйқы @1/8 секунд. ұйқы (0.250 - (бұрылу_тм_қосылу/2)) соңғы_ бағыт = -1 # stop stop () time.sleep (0.100) «ok» қайтару @app.route («/stop») def stop (): global last_direction print «Stop» тоқтату () last_direction = -1 # ұйқы 100ms time.sleep (0.100)) «ok» қайтару @app.route («/panlt») def panlf (): global servo_pos басып шығару «Panlt» servo_pos -= 100 егер servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # ұйқы 150ms уақыт. ұйқы (0.150) «ok» @app.route («/home») def home (): global servo_pos print «Home» servo_pos = 1250 servo.set_servo (18, servo_pos) # 150ms time.sleep (0.150) return «жақсы» @app.route («/panfull_lt») def panfull_lt (): жаһандық servo_pos басып шығару «Pan full l eft «servo_pos = 500 servo.set_servo (18, servo_pos) # ұйқы 150ms time.sleep (0.150)» ok «қайтару @app.route (»/panfull_rt «) def panfull_rt (): жаһандық servo_pos басып шығару» Толық оңға «servo_pos = 2500 servo.set_servo (18, servo_pos) # ұйқы 150ms time.sleep (0.150) «ok» қайтару @app.route («/speed_low») def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Соңғы бағыт болса == 0: go_forward () егер соңғы_ бағыт == 1 болса: go_forward () # ұйықтау 150ms time.sleep (0.150) «ok» @app.route («/speed_mid») def қайтару speed_mid (): жаһандық speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Егер соңғы_бағдар == 0 болса, жаңа жылдамдықты алу үшін ағымдағы бағытты жаңартыңыз: last_direction == 1 болса, go_forward () # ұйқы 150ms уақыт.ұйқы (0.150)) қайтару «жақсы» @app.route («/speed_hi») def speed_hi (): жаһандық жылдамдық_жалпы, соңғы бағыт, turn_tm_offset speed_offset = 126 тур n_tm_offset = 0.332 # Егер ағымдағы бағыт жаңа болса, ағымдағы бағытты жаңартыңыз == 0: go_forward () last_direction == 1: go_backward () # ұйқы 150ms time.sleep (0.150) «ok» @app.route («/үздіксіз» қайтарыңыз) «) def үздіксіз (): жаһандық жұмыс уақытын басып шығару» Үздіксіз жұмыс «жұмыс уақыты = 0 # ұйқы 100ms time.sleep (0.100)» ok «қайтару @app.route (»/mid_run «) def mid_run (): global run_time басып шығару» Орта run «run_time = 0.750 halt () # ұйқы 100ms time.sleep (0.100)» ok «қайтару @app.route (»/short_time «) def short_time (): global run_time print» Short run «run_time = 0.300 halt () # ұйықтау 100ms time.sleep (0.100) «ok» қайтару # # Қозғалтқыштың функциялары # def go_forward (): егер жылдамдық_жалпы болса, жаһандық жылдамдық_жеңістігі! = 42: roboclaw.write (chr (1 + жылдамдық_жалпы)) roboclaw.write (chr (128 +) speed_offset)) басқа: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): 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 (): speed_offset егер ғаламдық 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 (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) басқа: 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)
Егер сізге Flask -тен отладтау туралы ақпарат қажет болмаса немесе қажет болмаса, app.run жолында отладтауды «жалған» етіп орнатыңыз.
егер _ аты _ == «_ негізгі _»:
app.run (хост = '0.0.0.0', порт = 80, жөндеу = жалған)
Сіз сондай -ақ Flask http сервері тыңдайтын портты өзгерте аласыз.
14 -қадам: басқа жабдықты пайдалану
Егер сіз басқа аппараттық құралдарды қолданғыңыз келсе, мысалы, SBC (жалғыз тақталы компьютер) түрі, сізде Python мен Flask -ті Beagle Bone, PCDuino сияқты басқа тақталарда іске қосуда қиындықтар туындауы мүмкін емес … Сіз GPIO -ға сәйкес келетін кодты өзгертуіңіз керек. орналасу және жаңа тақтаның серво жүргізу мүмкіндіктерін пайдалану.
Қозғалтқыштың басқа түрін пайдалану үшін, моторды ауыстыру үшін қажет функцияны орындау үшін go_forward, go_backward, go_left, go_right және stop функцияларын өзгерту қажет.
Ұсынылған:
Веб -камераға арналған LED LIGHT DIY (C920): 10 қадам (суреттермен)
Веб -камераға арналған LED LIGHT DIY (C920): Веб -камера үшін жарық қажет. Бұл шағын жарықдиодты сақина сіздің камераңызға жақсы қарауға көмектеседі. Сіз бұл жарығы жоқ бейне түсіре аласыз. Мен 3D принтерді және WS2812b жарықдиодты модулін қолдандым (Neopixel үйлесімді)
HP WebCam 101 aka 679257-330 веб-камера модулін жалпы USB веб-камерасы ретінде қайта қолданыңыз: 5 қадам
HP WebCam 101 Aka 679257-330 веб-камера модулін жалпы USB веб-камерасы ретінде қайта қолданыңыз: Мен 14 жастағы Panasonic CF-18-ді жаңа веб-камерамен жақсартқым келеді, бірақ Panasonic бұл керемет машинаны қолдамайды, сондықтан маған керек сұр затты b & b (сыралар мен бургерлерден) жеңіл нәрсеге қолданыңыз. Бұл бірінші бөлім
Dog Bot: Веб -камерасы бар Lego Robot Rover: 17 қадам (суреттермен)
Dog Bot: Веб -камерасы бар Lego Robot Rover: Мұнда Wi -Fi арқылы кез келген экраннан басқаруға болатын Lego роботы қалай жасалады. Оның веб -камерасы бар, сондықтан сіз қайда бара жатқаныңызды көре аласыз және көзге арналған жарықдиодты шамдар! Бұл сіздің балаларыңызбен жасалатын тамаша жоба, өйткені олар логотип құруды жасай алады, және сіз оған
Банан/таңқурай Pi + Arduino веб -камерасы бар Rover: 9 қадам
Banana/Raspberry Pi + Arduino Rover веб -камерасы: Мен бос уақытымда жасаған жоба. Бұл веб-интерфейс арқылы басқарылатын толық жетекті 4 дөңгелекті робот. Егер сізде қандай да бір түсініктеме немесе сұрақтар болса, маған хабарласыңыз. Бұл жобаның өзі 3D басып шығарылған бөлшектерді және кодтың кейбір бөліктерін қолданады
Тікелей веб -сайтты және жұмыс мысалдарын қолданатын веб -драйвер IO оқулығы: 8 қадам
Тікелей веб -сайтты және жұмыс мысалдарын қолданатын веб -драйвердің оқулықтары: Тікелей веб -сайтты және жұмыс мысалдарын қолданатын веб -драйвердің оқулығы Соңғы жаңарту: 26.07.2015 ж. маған қызықты тапсырма ұсынылды. Маған керек еді