Arduino- ի վրա հիմնված սերիայի սերվերի վերահսկիչ `6 քայլ
Arduino- ի վրա հիմնված սերիայի սերվերի վերահսկիչ `6 քայլ
Anonim

Սա պարզ սերիական վերահսկիչ է Arduino- ի հիման վրա բազմակի սերվերի համար: (իմ առաջին հրահանգը նույնպես:))

Աշխատանքների մեծ մասը ստացվել է ծրագրային ապահովման հետ arduino- ի հետ զրուցելուց և տվյալների փոխանցման համար արձանագրություն կազմելուց: Ինչ վերաբերում է ապարատային ասպեկտին, այն ամենը, ինչ ես օգտագործեցի, երկու սերվո էր (այստեղ Parallax standard servo): Sparkfun Arduino ProtoShield և Arduino Duemilanove ATMEGA328- ով, սակայն այս մասերի մեծ մասը կարող է փոխարինվել նմանատիպ իրերով: Ես մտածեցի այս նախագիծը որպես RC համակարգի մաս, բայց կապի ստեղծումը շատ ժամանակ պահանջեց: Եթե որևէ մեկն ունի որևէ բարելավում, գաղափար կամ սխալ, խնդրում ենք ազատ զգալ մեկնաբանել: Խմբագրել. Ես սա գրել եմ քիչ առաջ, և վերջերս սկսեցի հրապարակել այն:

Քայլ 1: Այն, ինչ ձեզ հարկավոր է…

Որոշ բաներ ձեզ հարկավոր կլինեն սա կառուցելու համար: 1. Arduino տախտակ (դուք ընտրում եք) 2. երկու (կամ մեկ) սերվեր 3. jumper լարեր 4. Visual Studio 2008 Express - հղում (ըստ ցանկության) 5. Arduino IDE - հղում Ներողություն Linux- ի և Apple- ի երկրպագուների համար, իմ ծրագիրը գործում է միայն պատուհաններ առայժմ, բայց դեռ կարող եք ձեռքով սերիական հրամաններ ուղարկել arduino- ին ՝ առանց ծածկագիրը փոխելու:

Քայլ 2: Միացրեք ապարատը:

Այս քայլին շատ բարդ բան չկա: Պարզապես մի սերվո միացրեք 9 -ի կապում, իսկ մյուսը `10 -ին:

Քայլ 3. Programրագրավորեք Arduino- ն

այժմ կարող եք ուրվագիծը վերբեռնել arduino- ում:

Ահա կոդի պարզ խզում. #Ներառել Servo myservo; // ստեղծել servo օբյեկտ `servo- ն վերահսկելու համար Servo myservo1; int մուտքայինԲայթ = 0, տվյալների հաշվարկ = 0, հաշվիչ = 0, պատրաստ = 0; // մուտքային սերիական տվյալների char տվյալների համար [10]; const char ստուգել [8] = "ma11hew"; char հրաման [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // բացում է սերիական նավահանգիստ, սահմանում է տվյալների արագություն Serial.println ("Hi Arduino Here!"); // ավելացվել է, որպեսզի օգնի նույնականացնել սերիալային պորտը: Սա պարզապես կարգավորում է սերիալային պորտը և սերվերը: int i; համար (i = 0; i <180; i ++) {myservo.write (i); ուշացում (15); } myservo.write (5); համար (i = 0; i <180; i ++) {myservo1.write (i); ուշացում (15); } myservo1.write (5); } Պարզ սերվերի աշխատանքը ճիշտ ստուգելու համար սահուն շարժում: void loop () {պատրաստ = 0; հաշվիչ = 0; while (1 == 1) {if (Serial.read ()! = verify [counter]) {break; } if (հաշվիչ == 6) {հետաձգում (20); հրաման [0] = Serial.read (); հրաման [1] = Serial.read (); // եթե (Serial.read () == ((հրաման [1] * 12) % 8)) // {պատրաստ = 1; //} Serial.println («պահված հրաման»); } հաշվիչ ++; ուշացում (2); } սա ստուգում է սերիական բուֆերը ճիշտ թույլտվության տողի համար, այնուհետև երկու բայթ է գրավում հրամանի համար: մեկնաբանված եթե հայտարարությունը թույլ է տալիս կատարել ժամանակավոր ստուգման գումար, բայց կդժվարացնի ձեռքով ինտերֆեյսը: պատրաստ կարող է սահմանվել 0, այնպես որ հրամանները չեն վերլուծվի, ինչպես, օրինակ, կոռումպացված տվյալների դեպքում: // որոնել հրամանների միջոցով if (պատրաստ == 1) {if (հրաման [0] == 'T') {հրաման [0] = 0; Serial.print ("շնչափողի վերահսկում 9 -րդ կապում դեպի."); Serial.println (քարտեզ (հրաման [1], 32, 126, 2, 180), DEC); myservo.write (քարտեզ (հրաման [1], 32, 126, 2, 180)); } if (հրաման [0] == 'S') {հրաման [0] = 0; Serial.print ("շնչափողի վերահսկում 10 -րդ կապում դեպի."); Serial.println (քարտեզ (հրաման [1], 32, 126, 2, 180), DEC); myservo1.write (քարտեզ (հրաման [1], 32, 126, 2, 180)); }}} ծածկագրի մնացած մասը պետք է որոնել վավեր հրամաններ (T կամ S.), եթե դրանք համընկնում են, վերցնում է հաջորդ բայթը և ուղարկում այն սերվոյին: ավելին քարտեզի վրա (հրաման [1], 32, 126, 2, 180) ավելի ուշ … այստեղ ծածկագիրը կարող է ընդլայնվել այն ամենի համար, ինչ ձեզ հարկավոր է (օրինակ. լույսեր, շարժիչներ, IR և այլն): փոփոխություններ:

Քայլ 4: Տեղադրեք ծրագրակազմ

Ես ունեմ երկու եղանակ ՝ այս… nsis տեղադրիչը տեղադրելու համար. Ներբեռնեք ստորև բերված ինքնակառավարման տեղադրիչը և գործարկեք այն: Տեղադրման ընթացքում դուք կունենաք աղբյուրներ տեղադրելու տարբերակ: Տեղադրիչի երկուական փաթեթը տեղադրում է հիմնական c ++ dlls, այնպես որ այն կարող է գործարկվել համակարգչի վրա ՝ առանց արդեն տեղադրված տեսողական c ++ - ի: Տեղադրիչի ավարտից հետո այն կարող եք գործարկել աշխատասեղանից կամ սկսել ընտրացանկից: zip way (չստուգված). Ներբեռնեք և գործարկեք, այն պետք է աշխատի: Միգուցե. (Փոստային արխիվն ունի տեղադրողի ստեղծած թղթապանակի նույն կառուցվածքը ՝ առանց աղբյուրների: Ես չունեմ սարք, որն առանց տեսողական ստուդիայի այն փորձարկելու է, որպեսզի այն չաշխատի):

Քայլ 5: Օգտագործեք ինտերֆեյսի ծրագիրը

Useրագիրն օգտագործելու համար նախ ընտրեք arduino էսքիզում սահմանված բաուդ արագությունը: Չփոփոխված էսքիզը կանխադրված է 38400 բաուդ, բայց կարող է փոխվել ՝ ձեր կարիքներին համապատասխան ՝ այնպիսի դանդաղ ռադիոկապի համար: Նշում. 38400 -ից բարձր բաուդի դրույքաչափերը այնքան էլ կայուն չեն եղել, կարծում եմ, սա այն պատճառով է, որ միզուկը լցվում է նախքան տվյալների մշակումը: Հաջորդը, ընտրեք օգտագործվող COM նավահանգիստը: ծրագիրը կանխադրված է COM4- ին, համոզվեք, որ այն փոխեք, հակառակ դեպքում ծրագիրը կխափանվի: Ի վերջո, կտտացրեք բացել: Եթե ամեն ինչ լավ ընթանա, ծրագիրը կբացի ընտրված սերիական նավահանգիստը ընտրված բաուդ արագությամբ: Եթե ոչ, ապա ծրագիրը, հավանաբար, կխափանվի չկարգավորված բացառությամբ: համոզվեք, որ նավահանգիստը ճիշտ է և նորից փորձեք: Օգտագործեք տեքստային տուփերը `arduino- ին ուղղակի հրամաններ ներկայացնելու համար: «Քարտեզը (հրաման [1], 32, 126, 2, 180)» կշռում է բոլոր 94 հնարավոր հրամանները ՝ * տարածություն * մինչև ~, կարդալու համար arduino- ն ASCII- ում ՝ սերվոյի համար 2 -ից 180 -ը: ցանկացած բայթ ASCII 32 -ից պակաս (տարածություն) կամ 126 -ից բարձր (~) կանխադրված է 63 (?) Հետագծերը ապահովում են eaiser ինտերֆեյս անմիջական հրամանների համար: յուրաքանչյուր քայլ աստիճանաբար հաջորդական հրաման է ուղարկում arduino- ին:

Քայլ 6: Ստեղծագործ եղեք:

Մտածեք սքանչելի բաների մասին, որոնք կարող եք պատրաստել դրանով: Որոշ գաղափարներ. 1. Հեռակա շնչափող մեքենայի համար: 2. 3D ֆոտոխցիկի ամրացում 3. ստորջրյա ռովեր զվարճացեք !!

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