Բովանդակություն:

Վեբ վերահսկվող Rover. 14 քայլ (նկարներով)
Վեբ վերահսկվող Rover. 14 քայլ (նկարներով)

Video: Վեբ վերահսկվող Rover. 14 քայլ (նկարներով)

Video: Վեբ վերահսկվող Rover. 14 քայլ (նկարներով)
Video: POCO X5 PRO - ԱՄԵՆԱՄԱՆՐԱՄԱՍՆ ԴԻՏՈՒՄ և ԹԵՍՏԵՐ 2024, Նոյեմբեր
Anonim
Վեբ վերահսկվող Rover
Վեբ վերահսկվող Rover
Վեբ վերահսկվող Rover
Վեբ վերահսկվող Rover

Ռոբոտների կառուցումն ու խաղը իմ հիմնական մեղավոր հաճույքն է կյանքում: Մյուսները գոլֆ են խաղում կամ դահուկներ են խաղում, բայց ես ռոբոտներ եմ կառուցում (քանի որ ես չեմ կարող գոլֆ խաղալ կամ դահուկներ վարել:-): Ես գտնում եմ, որ դա հանգստացնող և զվարճալի է: Իմ բոտերի մեծ մասը պատրաստելու համար ես օգտագործում եմ շասսիի հավաքածուներ: Կոմպլեկտների օգտագործումը ինձ օգնում է անել այն, ինչ ինձ դուր է գալիս ավելի շատ ՝ ծրագրային ապահովմամբ և էլեկտրոնիկայով, ինչպես նաև ավելի լավ շասսի է դարձնում իմ ամբողջ բութ մատը:

Այս Instructable- ում մենք կանդրադառնանք, թե ինչ է անհրաժեշտ պարզ, բայց ուժեղ Wifi/վեբ վերահսկվող ռովեր պատրաստելու համար: Օգտագործված շասսին Actobotics Gooseneck է: Ես ընտրեցի այն իր չափի, ընդլայնման ունակության և արժեքի համար, բայց դուք կարող եք օգտագործել ձեր ընտրած ցանկացած այլ շասսի:

Նման նախագծի համար մեզ հարկավոր կլինի լավ մեկ տախտակ ունեցող համակարգիչ, և այս բոտի համար ես ընտրեցի օգտագործել Linux- ի վրա հիմնված Raspberry Pi (RPI) համակարգիչը: RPI- ն (և Linux- ը) մեզ տալիս է կոդավորման բազմաթիվ տարբերակներ, և Python- ը կօգտագործվի կոդավորման կողմի համար: Վեբ ինտերֆեյսի համար ես օգտագործում եմ Flask, Python- ի համար թեթև վեբ շրջանակ:

Շարժիչները վարելու համար ես ընտրեցի RoboClaw 2x5a- ն: Այն թույլ է տալիս պարզ սերիական հաղորդակցություն այն պատվիրելու համար և լավ է աշխատում RPI- ի և Gooseneck- ի շարժիչների հետ:

Ի վերջո, այն ունի տեսախցիկ ՝ POV տիպի տեսաազդեցության համար ՝ այն հեռակա վարելու համար: Յուրաքանչյուր թեմայի ավելի մանրամասն կանդրադառնամ ավելի ուշ:

Քայլ 1: Պահանջվում է սարքավորում

Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
  • Actobotics Gooesneck շասսի կամ ձեր նախընտրած համապատասխան փոխարինող
  • Ազնվամորի Պի ՝ ձեր ընտրությամբ (կամ կլոն) - այս բոտում օգտագործվում է RPI մոդել B, բայց առնվազն երկու USB պորտ ունեցող ցանկացածը կաշխատի
  • Ստանդարտ Servo ափսե B x1
  • 90 ° Մեկ անկյունային ալիքի փակագիծ x1
  • RoboClaw 2x5a շարժիչի վարորդ
  • S3003 կամ նմանատիպ ստանդարտ չափսի սերվո
  • Փոքր տախտակ կամ մինի տախտակ
  • Իգականից իգական jumper լարերը
  • Արականից իգական ցատկող լարեր
  • Վեբ տեսախցիկ (ըստ ցանկության) - ես օգտագործում եմ Logitech C110, և ահա RPI- ի համար աջակցվող տեսախցիկների ցուցակը
  • 5v-6v էներգիայի աղբյուր սերվո էներգիայի համար
  • 7.2v-11.1v մարտկոց `շարժիչի շարժիչի սնուցման համար
  • 5v 2600mah (կամ ավելի բարձր) USB հզորության բանկ RPI- ի համար
  • USB Wifi ադապտեր

Իմ բոտի վրա ես օգտագործում եմ 4 դյույմանոց անիվներ ՝ այն մի փոքր ավելի համատարած-փակ դարձնելու համար: Այս տարբերակի համար ձեզ հարկավոր է.

  • 4 "Dանր անիվ x2
  • 4 մմ տրամագծով պտուտակային հանգույց (0,770 դյույմ) x2

Քայլ 2: Շասսիի հավաքում

Շասսի հավաքում
Շասսի հավաքում
Շասսի հավաքում
Շասսի հավաքում
Շասսի հավաքում
Շասսի հավաքում

Նախ հավաքեք շասսին ՝ հետևելով շասսիի կամ տեսագրության մեջ ներառված հրահանգներին: Ավարտելուց հետո դուք պետք է ունենաք պատկերի նման մի բան: ՈEՇԱԴՐՈԹՅՈՆ. Պարանոցի հատվածը հավաքելիս պարզապես թողեք ամրացման ամրակը:

Իմ բոտում ես որոշեցի փոխարինել անիվները, որոնցով եկել է շասսին ՝ 4 դյույմանոց ծանր անիվների համար: Սա պարտադիր չէ և անհրաժեշտ չէ, եթե դուք չեք ցանկանում նույնն անել:

Քայլ 3: Էլեկտրոնիկայի տեղադրում

Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում

Gooseneck- ը շատ տեղ ունի և ձեր էլեկտրոնիկայի տեղադրման տարբերակներ: Ես ձեզ տալիս եմ այս նկարները որպես ուղեցույց, բայց դուք կարող եք ընտրել, թե ինչպես կցանկանայիք ամբողջը շարադրել: Տախտակը և մարտկոցները տեղադրելու համար կարող եք օգտագործել անջատիչներ, երկկողմանի ժապավեն, Velcro կամ servo-tape:

Քայլ 4: Ավելացնել վեբ -տեսախցիկ

Վեբ -տեսախցիկի ավելացում
Վեբ -տեսախցիկի ավելացում
Վեբ -տեսախցիկի ավելացում
Վեբ -տեսախցիկի ավելացում
Վեբ -տեսախցիկի ավելացում
Վեբ -տեսախցիկի ավելացում

Վերցրեք 90 աստիճանի փակագիծը, թեթև սերվո հանգույցը և.3125 պտուտակներից չորս (4) այս քայլի համար.

  • Վերցրեք servo հանգույցը և տեղադրեք այն փակագծի մի կողմում և ամրացրեք դրանք նկարում պատկերված.2125 «պտուտակներով:
  • Հաջորդը տեղադրեք servo- ն servo փակագծի մեջ
  • Սերվոյի եղջյուրով ամրացրեք 90 աստիճանի փակագիծը սերվոսի ողնաշարի վրա և դրանք միացնելու համար օգտագործեք եղջյուրի պտուտակը, որը եկել է սերվոյի հետ:
  • Այժմ տեղադրեք Servo- ն փակագծում `մնացած պտուտակներով սագի վզիկի վերևում
  • Տեղադրեք տեսախցիկը կայծակաճարմանդներով կամ երկկողմանի ժապավենով `90 աստիճանի փակագծի վրա

Անհրաժեշտության դեպքում օգտագործեք նկարները ուղեցույցների համար:

Քայլ 5: Ամրագրեք ամեն ինչ

Բոլորը միացնելը
Բոլորը միացնելը
Բոլորը միացնելը
Բոլորը միացնելը
Բոլորը միացնելը
Բոլորը միացնելը
Բոլորը միացնելը
Բոլորը միացնելը

Այս ռոբոտի համար էլեկտրագծերը բավականին նեղ են:

Շարժիչներ.

Oldոդիչը միացնում է երկու շարժիչներին, եթե դա արդեն չեք արել

Ռոբոտների առջևը (վերջը ՝ սագի վզիկով) ՝ ձեր կողմը նայած.

  • Ձախ շարժիչի վրա շարժիչի լարերը միացրեք M1A և M1B ալիքին
  • Միացրեք շարժիչի լարերը աջ շարժիչի վրա M2A և M2B ալիքներին

Հողային (GND) միացումներ.

  • Միացրեք RoboClaw- ի վրա հիմնված մեկ քորոց գետնին ցատկող տախտակին: RoboClaw- ի գրունտային գիծը մոտ է կենտրոնին (տես նկարը)
  • RPI- ի PIN 6 -ը միացրեք jumper տախտակին: Տեսեք RPI վերնագրի նկարը ՝ քորոցների առաջադրանքների համար:
  • Միացրեք GND- ն servo մարտկոցի տուփից `jumper տախտակի կապումներից մեկին:
  • Անցնող թել անցեք ցատկող տախտակից դեպի servos GND մետաղալար:

RPI դեպի RoboClaw:

Միացրեք RPI GPIO14 TXD կապը RoboClaw S1 կապին

Ուժ:

  • Միացրեք POS հաղորդալարը servo մարտկոցից դեպի servos POS հաղորդալար
  • Շարժիչի մարտկոցից միացրեք POS հաղորդալարը RoboClaw շարժիչի հզորության մուտքի տերմինալի POS (+) - ին: GND տերմինալը առայժմ անջատված կթողնենք:

Քայլ 6: RPI- ի կարգավորում

RPI- ի կարգավորում
RPI- ի կարգավորում

Ենթադրում եմ, որ այստեղ օգտագործողը որոշ գիտի Linux- ի և RPI- ի մասին: Ես չեմ լուսաբանում, թե ինչպես տեղադրել կամ միանալ մեկին: Եթե դրա համար օգնության կարիք ունեք, ապա օգտագործեք ստորև ներկայացված էջերը:

Ձեր RPI կարգավորումը ստանալու համար դիտեք հետևյալ էջերը.

  • RPI հիմնական կարգավորումը
  • RPI Արագ մեկնարկի ուղեցույց
  • NOOBS- ի տեղադրման գիլդիա

Ընդհանուր ցատկող էջերի համար RPI- ի հիմնական էջը և eLinux էջերը հիանալի վայրեր են սկսելու համար:

Տե՛ս այս հղումը ՝ RPI ընդհանուր Wifi կարգավորման համար:

Եթե մտադիր եք ինչ -որ տեսախցիկ կամ վեբ -տեսախցիկ օգտագործել բոտում, նայեք այս էջերին ՝ հիմնական անհրաժեշտ ֆայլերը ստանալու համար:

  • RPI տեսախցիկի տեղադրում
  • eLinix RPI տեսախցիկի տեղադրում

Հոսքային տեսանյութ.

Կան մի քանի եղանակներ, որոնք հնարավորություն են տալիս վիդեո հոսք աշխատել RPI- ով, բայց իմ նախընտրած մեթոդը Motion- ի օգտագործումն է:

Ձեր RPI- ում այն տեղադրելու համար գործարկեք հետևյալը ՝ sudo apt-get install motion

Այս խրատական գործիքը գերազանցում է այն նաև հոսքի համար կարգավորելը:

Քայլ 7: Կարգավորեք RPI սերիայի նավահանգիստը

Մենք պետք է անջատենք Linux- ի վահանակի ռեժիմը RX և TX- ն օգտագործելու համար, քանի որ ցանկանում ենք այս նավահանգստից խոսել RoboClaw շարժիչի վերահսկիչի հետ: Դա անելու համար կարող եք օգտագործել այս մեթոդը կամ այս գործիքը: Ընտրությունը ձերն է մեթոդի վրա, քանի որ նրանք երկուսն էլ նույնն են անում ի վերջո:

Քայլ 8: Տեղադրեք Python մոդուլներ

Ձեզ հարկավոր կլինի RPI- ի վրա տեղադրված python, ինչպես նաև python փաթեթի տեղադրող խողովակ:

Pip- ը տեղադրելու համար կատարեք հետևյալը.

  1. sudo apt-get տեղադրել python-setuptools
  2. sudo easy_install pip

Հետո.

  1. sudo pip տեղադրման շիշ
  2. sudo pip տեղադրել pyserial
  3. sudo pip տեղադրել RPIO

Սա կլինի կոդի գործարկման համար անհրաժեշտ բոլոր մոդուլները:

Քայլ 9. RoboClaw- ի տեղադրում

Ես ունեմ ռոբոտի կոդը, որը խոսում է RoboClaw- ի հետ Ստանդարտ սերիական ռեժիմում ՝ 19200 baud:

RoboClaw- ը դրա համար կարգավորելու համար կատարեք հետևյալը.

  1. Կտտացրեք RoboClaw- ի «MODE» կոճակին
  2. Հպեք սահմանված կոճակին, մինչև LED- ն ուշացումների միջև 5 (հինգ) անգամ չթարթվի
  3. Պահելու համար սեղմեք «LIPO» կոճակը
  4. Հաջորդը, սեղմեք «SET» կոճակը, մինչև ուշացումների միջև LED- ը չթարթվի 3 (երեք) անգամ
  5. Պահելու համար սեղմեք LIPO կոճակը

Դա այն է `շարժիչի վերահսկիչը տեղադրելու համար: Անհրաժեշտության դեպքում լրացուցիչ տեղեկությունների համար տես վերը նշված pdf- ն:

Քայլ 10. Տեղադրեք Rover ծրագիրը/ֆայլերը

Ներբեռնեք և պատճենեք rover.zip ֆայլը ձեր RPI- ին ձեր pi օգտվողի գրացուցակում:

Եթե աշխատում եք 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:/

Երբ zipfile- ը պատճենվի RPI- ին, մուտք գործեք այն որպես pi օգտվող:

Այժմ գործարկեք.

unzip rover.zip

Սա ֆայլերը կբացահայտի «rover» անունով պանակում և այդ թղթապանակի տակ կունենա հետևյալը.

  • restrover.py (ռոբոտի պիթոնի ծածկագիրը)
  • ստատիկ (պահում է պատկերի ֆայլերը կառավարման էջի կոճակների համար)
  • կաղապարներ (պահում է index.htlm ֆայլը, կառավարման վեբ էջը)

Եթե վեբ տեսախցիկ եք օգտագործում, փոփոխեք տողը ձևանմուշի թղթապանակի index.html ֆայլի ներքևի մասում: Փոխեք URL- ը IFRAME տողում `ձեր տեսանյութի հոսքի src URL- ին համապատասխանելու համար:

Քայլ 11: Բոտը գործարկելը

Բոտը վերսկսելը
Բոտը վերսկսելը

Միացրեք USB հոսանքը RPI- ին:

Բոտի ծածկագիրը սկսելու համար մուտք գործեք որպես pi օգտվող և գործարկեք.

  • cd ռովեր
  • sudo python restrover.py

Եթե ամեն ինչ կարգին էր, ապա այս քայլում պետք է տեսնեք պատկերի նման էկրան

Եթե տեսնում եք որևէ սխալ կամ խնդիր, դուք պետք է շտկեք դրանք առաջ գնալուց առաջ:

Այժմ միացրեք GND (-) մետաղալարը RoboClaw շարժիչի հզորության մուտքի NEG (-) տերմինալին:

Քայլ 12. Մուտք գործեք Bot Control էջ

Բոտերի կառավարման էջ մուտք գործելը
Բոտերի կառավարման էջ մուտք գործելը
Մուտք գործեք Bot Control էջ
Մուտք գործեք Bot Control էջ

Ռոբոտի պիթոնի սցենարը գործարկելուց հետո միացրեք RoboClaw- ը և այնուհետև նավարկեք դեպի ձեր RPI- ի ip- ն ՝

your_rpi_ip

Դուք պետք է տեսնեք, որ Վեբ կառավարման էջը հայտնվի, ինչպես պատկերներում: Եթե ոչ, ստուգեք ձեր RPI ելքային տերմինալը և փնտրեք որևէ սխալ և ուղղեք դրանք:

Էջում հայտնվելուց հետո պատրաստ եք վերահսկել բոտը:

Ռոբոտը կսկսվի «Med run» պարամետրով և Միջին արագությամբ:

Բոտը կարող է կառավարվել էջի կոճակներով կամ ստեղնաշարի ստեղներով:

Բանալիներն են.

  • w - առաջ
  • z - հակառակ/հետընթաց
  • ա - երկար ձախ շրջադարձ
  • s - երկար աջ շրջադարձ
  • q - կարճ ձախ շրջադարձ
  • ե - կարճ աջ շրջադարձ
  • 1 - ձախ տեսախցիկ է մնացել
  • 2 - թավայի տեսախցիկ աջ
  • 3 - թավա լիովին ձախ
  • 4 - թավա լիարժեք աջ
  • / - տան/ կենտրոնի տեսախցիկ
  • h - կանգառ/կանգառ ռոբոտ

Ուղարկված հրամանների միջև կա կես վայրկյան ուշացման բուֆեր: Ես դա արեցի, որպեսզի վերացնեմ անցանկալի կրկնվող հրամանները: Դուք, իհարկե, կարող եք այն հեռացնել ծածկագրից, եթե ցանկանում եք (index.html- ում)

Մնացած վերահսկողությունները և դրանց վերահսկումը պետք է լինեն բացատրական:

Քայլ 13: Python/Flask Code

Այս բոտը օգտագործում է Python և Flask վեբ շրջանակները: Եթե հետաքրքրված եք, կարող եք ավելին իմանալ Flask- ի մասին:

Flask հավելվածից և սովորական Python սցենարից մեծ տարբերությունը @app.route դասի/մեթոդ է, որն օգտագործվում է URI բեռնաթափման համար: Բացի դրանից, մեծ մասամբ դա բավականին սովորական Python է:

#!/usr/bin/env պիթոն

# # Wifi/Web -Rover Rover # # Գրված է Սքոթ Բիսլիի կողմից - 2015 # # Օգտագործում է RPIO, pyserial և Flask # ներմուծման ժամանակի ներմուծման սերիա RPIO- ից PWM ներմուծում տափաշիշից, մատուցել_մոդել, հարցման ծրագիր = Ֆոլսկ (_name_, static_url_path = ") # Միացեք հաղորդակցման նավահանգստին ՝ Roboclaw շարժիչի վերահսկիչի հետ խոսելու համար. # Փոխեք այստեղ բաուդ արագությունը, եթե այն տարբերվում է 19200 roboclaw = սերիայից: Սերիալ ('/dev/ttyAMA0', 19200) բացառությամբ IOError: print ("Comm port գտնված է ") 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 (): վերադարձնել render_template ('index.html', name = Ոչ մեկը) @app.route ("/forward") def forward (): global last_direction, run_ti ինձ տպել «Առաջ» go_forward () last_direction = 0 # քուն 100ms + run_time time.sleep (0.100 + run_time) # Եթե ոչ շարունակական, ապա հետաձգել հետաձգումից հետո, եթե run_time> 0: last_direction = -1 halt () վերադարձնել «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) # Եթե ոչ շարունակական, ապա կանգ առնել ուշացումից հետո եթե run_time> 0: last_direction = -1 halt () վերադարձնել «ok» @app.route ("/left") def left (): global last_direction, turn_tm_offset print "Left" go_left () last_direction = -1 # sleep @1 /2 երկրորդ անգամ. Քուն (0.500 - turn_tm_offset) # կանգ առնել () time.sleep (0.100) վերադարձնել «ok» @app.route ("/right") def right (): global last_direction, turn_tm_offset print "Right" go_right () # sleep @1/2 second time.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop stop () time.sleep (0.100) վերադարձնել «ok» @app.route ("/ltforward") def ltforward () ՝ գլոբալ last_direction, turn_t m_offset print "Left forward turn" go_left () # sleep @1/8 second time.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app: stop halt () time.sleep (0.100) վերադարձնել «ok» @app.route ("/stop") def stop (): global last_direction print "Stop" stop () last_direction = -1 # sleep 100ms time.sleep (0.100) վերադարձնել «ok» @app.route ("/panlt") def panlf (): գլոբալ servo_pos տպել "Panlt" servo_pos -= 100 եթե servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # քնել 150ms ժամանակ: քնել (0.150) վերադարձ «լավ» @app.route ("/home") def home (). գլոբալ servo_pos տպագիր "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # քուն 150ms ժամանակ: քուն (0.150) վերադարձ "ok" @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 (). global servo_pos print" Pan full right "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 # Թարմացրեք ընթացիկ ուղղությունը ՝ նոր արագություն ստանալու համար, եթե last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 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 # Թարմացրեք ընթացիկ ուղղությունը ՝ նոր արագություն ստանալու համար last_direction == 0: go_forward () if last_direction == 1: go_backward () # քուն 150ms ժամանակ. քուն (0.150) վերադարձնել «ok» @app.route ("/speed_hi") def speed_hi (). գլոբալ speed_offset, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # Թարմացրեք ընթացիկ ուղղությունը ՝ նոր արագություն ստանալու համար, եթե last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/շարունակական ") def Continuous (): 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_time = 0.750 halt () # sleep 100ms time.sleep (0.100) վերադարձնել" ok " @app.route ("/short_time ") def short_time (): global run_time print" Short run "run_time = 0.300 stop () # քնել 100ms time.sleep (0.100) վերադարձնել «լավ» # # Շարժիչային գործառույթները # def go_forward (). գլոբալ արագության_ջշգրտում, եթե արագությունը_շեղվի! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) այլ ՝ 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)) այլ ՝ roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global 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 (): global speed_offset if 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)

Եթե դուք չեք ցանկանում կամ կարիք ունեք Flask- ի վրիպազերծման մասին տեղեկությունների, ապա app.run տողում կարգաբերումը սահմանեք «կեղծ»:

եթե _name_ == "_ հիմնական_":

app.run (host = '0.0.0.0', port = 80, debug = False)

Կարող եք նաև փոխել նավահանգիստը, որը Flask http սերվերը լսում է այստեղ:

Քայլ 14: Այլ սարքավորումների օգտագործումը

Եթե ցանկանում եք օգտագործել այլ սարքավորումներ, ինչպես SBC- ի այլ տեսակի (մեկ տախտակի համակարգիչ), ապա Python- ի և Flask- ի այլ տախտակներում գործարկելու փոքր խնդիրներ կունենաք, ինչպիսիք են Beagle Bone- ը, PCDuino- ն և այլն … Դուք պետք է փոխեք կոդը GPIO- ին համապատասխանելու համար: դասավորել և օգտագործել նոր տախտակի սերվո շարժիչ հնարավորությունները:

Մեկ այլ տիպի շարժիչով վարորդ օգտագործելու համար պարզապես անհրաժեշտ է փոփոխել go_forward, go_backward, go_left, go_right և stop գործառույթները ՝ կատարելու այն, ինչ անհրաժեշտ է փոխարինող շարժիչ վարորդին, որպեսզի շարժիչը կատարի այդ հատուկ գործառույթը:

Խորհուրդ ենք տալիս: