Բովանդակություն:
- Քայլ 1: Այն, ինչ ձեզ հարկավոր է…
- Քայլ 2. Տախտակի զոդում
- Քայլ 3: Arduino- ի կարգավորում
- Քայլ 4: Python- ի կարգավորում
- Քայլ 5. Որտեղ է տեղի ունենում կախարդանքը
Video: Servodriver-Board Python-GUI- ով և Arduino- ով. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Նախատիպեր պատրաստելիս կամ մոդելային ինքնաթիռներ կառուցելիս հաճախ բախվում եք այն խնդրի հետ, որ դուք պետք է ստուգեք սերվո երթևեկությունը կամ սերվոները դրեք միջին դիրքում:
Այն դեպքում, երբ դուք սովոր չեք կառուցել ձեր ամբողջ RC համակարգը կամ թեստը, որքան հեռու կարող եք մղել սերվոն կամ միջանկյալ դիրքը, ապա այս տախտակը ձեզ համար է: Այն թույլ է տալիս սերվոյին տեղափոխել նշված դիրքեր, կամ եկեք գնանք այս ու այն կողմ:
Այն զարմանալիորեն լավ է աշխատում, նույնիսկ 6 սերվոների դեպքում, որոնք օղակում մի դիրքից մյուսն են մրցում:
Բացի այդ, դա լավ նախագիծ է ՝ սովորելու Python-GUI և Arduino- ի միջև Serial- ի միջոցով:
Քայլ 1: Այն, ինչ ձեզ հարկավոր է…
Այս նախագծի համար ձեզ հարկավոր կլինի հետևյալը.
Սարքավորումներ
- Arduino nano մալուխով: Ես օգտագործել եմ կլոն, և Python ծածկագիրը իրականում ակնկալում է կլոնի CH340- չիպ
- Նախատիպային տախտակ: 7x5 սմ բավական է
- Որոշ 2, 54 մմ վերնագրեր և կապում
- 1-6 հատ
- Սերվերի մատակարարում (ես օգտագործել եմ 4 մարտկոց ունեցող մարտկոց)
Ծրագրային ապահովում
- Python 3:
- USB- վարորդ CH340- չիպերի համար. Պարզապես google- ի համար CH340 վարորդների վարորդների համար
- Arduino IDE ՝
Քայլ 2. Տախտակի զոդում
Soldոդումն իրականում ուղիղ առաջ է ՝ ըստ նկարի Ֆրիտզինգի: Պարզապես համոզվեք, որ դուք կարող եք հեշտությամբ միացնել սերվերը 3-փին շարքերում:
- 3-պին-տողերը ամրացված են Arduino nano- ի թվային 3, 5, 6, 9, 10 և 11 թվին:
- Կարմիր մետաղալարն ամրացված է Arduino- ի 5V- պինին
- Սև մետաղալարը միացված է Arduino- ի GND- քորոցին
- Եռանկյունի տողերի ներքևի զույգ կապերը նախատեսված են միացնելու տիպիկ RC ընդունիչի սնուցման աղբյուր, կարող եք միացումներ ավելացնել ըստ ձեր ցանկության, ինչպես պտուտակավոր տերմինալներ, XT- միակցիչներ, JST կամ… կամ…
Անձամբ ինձ դուր են գալիս Arduino- ն տեղադրելու համար կին վերնագրերի շարքերը, բայց դա ձեզանից է կախված:
Խնդրում ենք նկատի ունենալ, որ կարճաձև կանացի վերնագրերը ցատկող են, ինչը թույլ է տալիս ձեզ սերվո մատակարարել ՝ օգտագործելով փորձարկման նպատակով Arduino- ի 5V աղբյուրը: Եթե այն չափազանց լարեք, Arduino- ն կվերակայվի և կկորցնի ճիշտ տեմպը: Դրանք ՊԵՏՔ է հեռացվեն, նախքան մեկ այլ էլեկտրամատակարարում կցելը:
Քայլ 3: Arduino- ի կարգավորում
Տեղադրեք Arduino IDE- ն և կցեք ուրվագծով Arduino nano- ն:
Քայլ 4: Python- ի կարգավորում
Տեղադրեք Python 3 -ը այն ներբեռնելուց հետո: Համոզվեք, որ ստուգեք «PATH»-փոփոխական ստեղծելու տարբերակը:
Pip- ի միջոցով անհրաժեշտ է տեղադրել ևս երկու փաթեթ: Դրա համար սեղմեք «Windows»-ի ստեղնը, մուտքագրեք «cmd» և սեղմեք «enter»: Հրամանի տողում մուտքագրեք հետևյալ հրամանները.
- pip տեղադրման սերիա
- piip տեղադրել pyserial
- pip տեղադրել tkinter
Ինչպես տեսնում եք, ինձ պետք են մոդուլների սերիական, ինչպես նաև պիզիերալ, որը, ամենայն հավանականությամբ, ամենաարդյունավետը չէ, քանի որ սերիալին պետք է փոխարինի պիզիերալը: Այնուամենայնիվ, այն աշխատում է, և ես նոր եմ սկսում սովորել;):
Բացեք Python-Script- ը IDE- ում և գործարկեք այն կամ գործարկեք այն անմիջապես տերմինալից:
Բացվող ընտրացանկում կարող եք ընտրել երկու ռեժիմի միջև ՝ «Գնալ ուղիղ» և «Պինգ պոնգ».
- Գնացեք ուղիղ. Առաջին սյունակում մուտքագրեք Servo-Position միկրո վայրկյաններով և սեղմեք "Start" ՝ սերվոն տեղափոխելու համար նշված դիրքը:
- Պինգ -պոնգ. Մուտքագրեք ստորին և վերին սահմաններ երկրորդ և երրորդ սյունակներում: Սրանք ստորին և վերին դիրքերն են, որոնց միջև servo- ն հետ ու ետ կգնա: «Պինգ պոնգի ժամանակը» սյունակում կարող եք նշել միլիվայրկյանների ժամանակը, երբ սերվոն կսպասի, երբ հասնի վերին կամ ստորին դիրքին: Կտտացրեք «Սկսել», և սերվոն կսկսի հետ ու առաջ շարժվել, կտտացրեք «Stop» և սերվոն կդադարի:
Քայլ 5. Որտեղ է տեղի ունենում կախարդանքը
Վերջին, բայց ոչ ամենակարևորը, ես ուզում եմ մատնանշել ծածկագրի որոշ մանրամասներ նրանց համար, ովքեր ցանկանում են մի փոքր սերիական հաղորդակցվել Python- ի և Arduino- ի միջև:
Հիմա, ի՞նչ է կատարվում Python ծրագրում:
Նախևառաջ ծրագիրը ստուգում է, թե ինչ է կցված այս տողում COM նավահանգիստներին և պահում այն ցուցակում.
self. COMPortsList = ցուցակ (serial.tools.list_ports.comports ())
Այնուհետև այն շրջանցում է ցանկը, մինչև չգտնի տխրահռչակ CH340 չիպը, պահում է այն և հաջորդական կապ հաստատում for-loop- ից հետո: Ուշադրություն դարձրեք, որ օղակի համար անջատվում է հենց առաջին CH340- ը հայտնաբերվելուն պես:
for p in self. COMPortsList: if "CH340" in p [1]: # Looking for a Arduino Clone self. COMPort = p [0] break other: pass self. Ser = serial. Serial (self. COMPort, 57600)
Սերիական կապը հաստատվում է COM- պորտի հետ ՝ 57600 բաուդրատով:
Իսկ ի՞նչ է անում Arduino ծածկագիրը: Դե, քանի որ Arduino- ն ունի միայն մեկ COM-Port, սերիական կապը միայն մեկ տող է.
Serial.begin (57600);
Այժմ, մենք կարող ենք օգտագործել երկու նավահանգիստները `հաղորդակցվելու համար: Հենց այս դեպքում միայն հաղորդագրություններ Python- ից Arduino- ին: Հաղորդագրություններն այստեղ ուղարկվում են Python- ից: Սերիական կապը բայթերը փոխանցում է որպես կանխադրված: Դա նաև տվյալների ուղարկման ամենաարագ միջոցն է, և որքանով ես տեղյակ եմ, այն դեռ բավականին տարածված է: Այսպիսով, սերվոյի թվի ints (այնպես, որ Arduino- ն գիտի, թե որ servo- ն տեղափոխել) և միկրովայրկյանների դիրքը վերածվում են բայտի:
Հրաման = struct.pack ('> B', self. Place) # «self. Place» ինտ-փոփոխականը վերածվում է բայտի
self. Ser. > B ', հրամանատարություն) # Int- ը բայթի մեջ վերածելը: Ser.write (Command) # շարանը-նավահանգստում բայտ գրելը
Բացի այդ, տվյալների վերլուծությունը ժամանակ է պահանջում (օրինակ ՝ «1», «2», «3» և «0» չորս բայթերը մեկնաբանել որպես int 1230, այլ ոչ թե որպես չորս տարբեր նշաններ), և ավելի լավ է դա անել ոչ Arduino- ով:
Arduino- ի կողմից ուղարկված տեղեկատվությունը վերցվում է հետևյալ կերպ.
եթե (Serial.available ()> 1) {// Եթե սերիական տվյալներ կան, ապա օղակը մուտքագրվում է c = Serial.read (); // Առաջին բայթը (սերվոյի թիվը) պահվում է փոփոխականի մեջ Micros = Serial.read (); // Սերվոյի դիրքը պահպանվում է այստեղ Micros = Micros * 10; }
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
Դեմքի ճանաչում և նույնականացում - Arduino Face ID ՝ օգտագործելով OpenCV Python և Arduino. 6 քայլ
Դեմքի ճանաչում և նույնականացում | Arduino Face ID ՝ օգտագործելով OpenCV Python և Arduino. Դեմքի ճանաչում AKA face ID- ն մեր օրերում բջջային հեռախոսների ամենակարևոր հատկություններից է: Այսպիսով, ես ունեի մի հարց " կարո՞ղ եմ ունենալ դեմքի ID իմ Arduino նախագծի համար " և պատասխանը այո է … Իմ ճանապարհորդությունը սկսվեց հետևյալ կերպ. Քայլ 1. Մուտք դեպի մեզ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
RC Tracked Robot- ը Arduino- ի միջոցով ՝ քայլ առ քայլ ՝ 3 քայլ
RC Tracked Robot- ը Arduino- ի միջոցով. Հուսով եմ, որ դուք անցել եք մեր նախորդ նախագծերի միջով `Spinel Crux V1 - The Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms և The Badland Braw
Լույսի ինտենսիվության գծագրում Arduino- ի և Python- ի Arduino վարպետ գրադարանի միջոցով. 5 քայլ
Լույսի ինտենսիվության գծագրում Arduino- ի և Python- ի Arduino վարպետ գրադարանի միջոցով. Arduino- ն լինելով տնտեսապես միևնույն ժամանակ բարձր արդյունավետ և ֆունկցիոնալ գործիք, այն ներկառուցված C- ով ծրագրավորելը ձանձրացնում է նախագծերը դարձնելու գործընթացը: Python- ի Arduino_Master մոդուլը պարզեցնում է դա և թույլ է տալիս մեզ կատարել հաշվարկներ, հեռացնել աղբի արժեքները