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

Պտտվող հեռախոսի տեղադրում `7 քայլ
Պտտվող հեռախոսի տեղադրում `7 քայլ

Video: Պտտվող հեռախոսի տեղադրում `7 քայլ

Video: Պտտվող հեռախոսի տեղադրում `7 քայլ
Video: Ինչպես իմանալ երբ քեզ հետևում են հեռախոսի Տեսախցիկով/Find Out Who's Tracking You Through Your Phone 2024, Հուլիսի
Anonim
Պտտվող հեռախոսի լեռ
Պտտվող հեռախոսի լեռ

Այս ձեռնարկը ստեղծվել է Հարավային Ֆլորիդայի համալսարանի Makecourse- ի նախագծի պահանջի կատարման համար (www.makecourse.com):

Wantանկանու՞մ եք պտտել հեռախոսի հենարանը, որպեսզի կարողանաք դիտել ձեր հեռախոսի բովանդակությունը դիմանկարային կամ լանդշաֆտային կողմնորոշմամբ ՝ առանց այն պահելու: Հետո, այլևս մի նայեք:

Այս նախագիծը ստեղծելու համար ձեզ հարկավոր է.

- Arduino միկրոկառավարիչ և IDE

- USB մալուխ ՝ ծածկագիրը վերբեռնելու համար

- Breadboard

- Jumper լարերը

- LCD էկրան

- Սերվո

- Սյունակ, որը կարող է կցվել սերվոյին

- IR հեռակառավարիչ

- IR ընդունիչ

- 10k ohm դիմադրություն

- Kenu Airframe+ հեռախոսի սեղմիչ (կամ հեռախոսը տեղում պահելու ինչ -որ բան)

- 9 Վ մարտկոց շարժական էներգիայի կամ պարզապես USB սնուցող Arduino- ի համար

Քայլ 1: Կառուցեք IR ստացողի միացում

Կառուցեք IR ստացողի սխեման
Կառուցեք IR ստացողի սխեման
Կառուցեք IR ստացողի սխեման
Կառուցեք IR ստացողի սխեման

Նախ, Arduino- ից GND և +5V ցատկեք դեպի ձեր հացահատիկի վահանակը: Այնուհետև ձեր 10k ohm դիմադրիչը +5V հոսանքի ռելսից ցատկեք դեպի ձեր IR ընդունիչի ֆոտոտրանսիստորի ելքային փին: Հաջորդը, օգտագործեք jumper մետաղալար `IR ընդունիչի ելքային փինից Arduino- ի 11 -րդ կապին միանալու համար: Այնուհետև օգտագործեք երկու ցատկող լար `գետնին և +5V- ին IR ընդունիչի համապատասխան կապումներին ուղարկելու համար: Վերոնշյալ սխեմատիկայում պատկերված RC զտիչն անհրաժեշտ չէ: Ի վերջո, ես չեմ կատարել այս քայլում ցուցադրված սխեմատիկ պատկերը, և դրա աղբյուրը ներկա է նկարում:

Քայլ 2: Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը

Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը
Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը
Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը
Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը
Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը
Միացրեք Servo- ն, սյունակը և հեռախոսի սեփականատերը

Այժմ, գետնից ցատկելու համար օգտագործեք երկու ցատկող մետաղալար և սեղանի հոսանքի ռելսերի +5V համապատասխանաբար սերվոյի դարչնագույն և կարմիր լարերի մեջ: Այնուհետև օգտագործեք մեկ ցատկիչ մետաղալար ՝ Arduino- ի 9 -րդ կապը ամրացնելու համար servo- ի նարնջագույն մետաղալարին:

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

Վերջապես, հեռախոսին սյունակին պահելու համար ինչ -որ բան կցեք, ինչպես Kenu Airframe+ - ը, ինչպես ցույց է տրված երրորդ նկարում:

Քայլ 3: Միացրեք LCD էկրանը Servo Readout- ի համար

Միացրեք LCD էկրանը Servo Readout- ի համար
Միացրեք LCD էկրանը Servo Readout- ի համար

Անցնել գետնին և +5 Վ -ից ձեր տախտակի հոսանքի ռելսերից դեպի LCD էկրանին համապատասխան կապում: Բացի այդ, SDA և SCL կապումներն LCD- ից ցատկեք Ardiuno- ի վրա: Arduino- ի SDA և SCL կապումներն կարելի է նույնացնել Arduino- ի տախտակի հետևի մասից և հանդիսանում են երկու կապում AREF- ի և Ground- ի վերևում `13. կապի վերևում: SCL- ի քորոցը ամենաբարձրն է: Սա թույլ է տալիս LCD էկրանին կարդալ ընթացիկ սերվոյի դիրքը:

Քայլ 4: Օգտագործեք կոդը և գրադարանները, որոնք կցված են Arduino- ին ծրագրավորելու համար

Օգտագործեք կոդը և գրադարանները, որոնք կցված են Arduino- ին ծրագրավորելու համար
Օգտագործեք կոդը և գրադարանները, որոնք կցված են Arduino- ին ծրագրավորելու համար

Ներբեռնեք RotatingMountCode.zip ֆայլը: Տեղադրեք Arduino IDE- ն և ներբեռնված ֆայլը բացեք Documents / Arduino- ում: Համոզվեք, որ պատճենեք իմ ուրվագծերի և գրադարանների պանակի բովանդակությունը ձեր ուրվագծերի և գրադարանների պանակում: Բացեք ServoIRandLCD էսքիզը և վերբեռնեք այն ձեր Arduino- ում:

Կոդի բացատրության համար տես հետագա քայլերը:

Քայլ 5. Միացրեք ցանկալի էներգիայի աղբյուրը Arduino- ին և օգտագործեք հեռակառավարիչը ՝ սարը պտտելու համար:

Միացրեք ցանկալի էներգիայի աղբյուրը Arduino- ին և օգտագործեք հեռակառավարվող սարը պտտելու համար
Միացրեք ցանկալի էներգիայի աղբյուրը Arduino- ին և օգտագործեք հեռակառավարվող սարը պտտելու համար
Միացրեք ցանկալի էներգիայի աղբյուրը Arduino- ին և օգտագործեք հեռակառավարվող սարը պտտելու համար
Միացրեք ցանկալի էներգիայի աղբյուրը Arduino- ին և օգտագործեք հեռակառավարվող սարը պտտելու համար

Կամ թողեք Arduino- ն միացված ձեր համակարգչին, կամ միացրեք այն ձեր համակարգչից և օգտագործեք 9 Վ մարտկոց ՝ Arduino- ին DC սնուցում ապահովելու համար: Վերջապես, օգտագործեք էժան IR հեռակառավարիչ ՝ սերվոն և, հետևաբար, հեռախոսի տեղադրման կողմնորոշումը վերահսկելու համար:

Հեռակառավարման վահանակի 1 թիվը պետք է սահմանի սերվոյի դիրքը 0 աստիճանի, համարը 2 -ից 90 աստիճանի, իսկ թիվը 3 -ից 180 աստիճանի: Մինչդեռ հեռակառավարման վահանակի + և - կոճակները պետք է համապատասխանաբար բարձրացնեն կամ նվազեցնեն սերվոյի անկյունը 1 աստիճանով:

Նշում. Եթե օգտագործում եք տարբեր IR հեռակառավարիչ, քան այստեղ պատկերվածը, հնարավոր է, որ տարբեր կոճակներին համապատասխանող IR կոդերը փոխվեն: Եթե այո, ապա փոփոխեք ServoIRandLCD էսքիզը ՝ փոխարենը այդ IR կոդերն օգտագործելու համար:

Քայլ 6: Կարդացեք սա ՝ սկզբնաղբյուրի բացատրության համար

Կարդացեք սա ՝ սկզբնաղբյուրի բացատրության համար
Կարդացեք սա ՝ սկզբնաղբյուրի բացատրության համար
Կարդացեք սա ՝ սկզբնաղբյուրի բացատրության համար
Կարդացեք սա ՝ սկզբնաղբյուրի բացատրության համար

Arduino էսքիզի աղբյուրի կոդը կարելի է գտնել ստորև կամ նախկինում կցված.zip ֆայլում: Պահանջվող գրադարանները կարող եք գտնել միայն նախկինում կցված.zip ֆայլում `4 -րդ քայլում:

Առաջին բանը, որ անում է ծածկագիրը, ներառում է անհրաժեշտ գրադարանները, որոնք անհրաժեշտ են էսքիզի բոլոր գործառույթները գործարկելու համար: Հաջորդը, Arduino- ի 9-րդ կապը հայտարարում է սերվոյի PWM- ով միացված ազդանշանային փին: Այն նաև Arduino- ի 11 -րդ կապն է դարձնում IR ընդունիչի համար օգտագործվող քորոցը: Հաջորդը, այն հայտարարում է մի ամբողջ փոփոխական, որն օգտագործվում է սերվոյի դիրքը աստիճաններով հետևելու համար և այն սկզբում սահմանում է 0 աստիճանի: Այնուհետև այն ակնթարթորեն ներկայացնում է IRrecv օբյեկտի, servo օբյեկտի և myDisplay LCD օբյեկտի համար անհրաժեշտ օբյեկտները (որոնք նույնպես կազմաձևված են նույն տողում), որպեսզի այդ օբյեկտները հետագայում օգտագործվեն:

Հաջորդը, տեղադրման գործառույթում սերիական պորտը սկսվում է 9600 բիթ/վրկ արագությամբ, այնպես որ սերիական մոնիտորը կարող է օգտագործվել `ցանկության դեպքում սերվոյի դիրքը հետևելու համար: Այն նաև ամրացնում է myservo օբյեկտը 9 -ի կապում, սկսում IR ընդունիչը և նախաստորագրում LCD էկրանը:

Հիմնական հանգույցի գործառույթում, որի մարմինը կատարվում է միայն այն դեպքում, երբ IR հաղորդիչ է ստացվում IR ընդունիչից, IR ընդունիչն ապակոդավորում է IR հեռակառավարիչից իրեն ուղարկված ազդանշանը ՝ օգտագործելով ապակոդավորման (և արդյունքների) գործառույթը, այնուհետև, եթե հայտարարությունները որոշում են, թե ինչ servo- ն սահմանել կախված ստացված IR արժեքից: Գրելու գործառույթը օգտագործվում է servo- ն իր համապատասխան աստիճաններին դնելու համար, իսկ read գործառույթը `servo- ի ընթացիկ անկյունը գտնելու և ըստ անհրաժեշտության ավելացնելու կամ նվազեցնելու համար:

Վերջապես, սերվոյի ընթացիկ անկյունը ուղարկվում է ինչպես սերիական մոնիտորին, այնպես էլ LCD էկրանին ՝ օգտագործելով myservo.read () գործառույթը, և հիմնական օղակները կրկնում են անորոշ ժամանակով:

Աղբյուրի կոդը:

#ներառել // Arduino ստանդարտ գրադարան #ներառել // IR գրադարան #ներառել «Wire.h» //Wire.h LCD- ի համար (երբեմն անհրաժեշտ է) #ներառել «LiquidCrystal_I2C.h» // LCD գրադարան

#սահմանել սերվոպին 9 // սա սահմանում է 9 -ը ՝ որպես սերվոյի կառավարման կապարի համար օգտագործվող քորոց (նարնջագույն)

int RECV_PIN = 11; // IR ֆոտո-տրանզիստորը ելքն ուղարկում է 11-րդ փին

int currentAngle = 0; // հայտարարեք currentAngle ամբողջ փոփոխական և սահմանեք 0

IRrecv irrecv (RECV_PIN); // առաջացնել IR ստացողի օբյեկտի decode_results results; // instantiate decode_results օբյեկտ: Այս օբյեկտը առանձին է IR ընդունիչից:

Servo myservo; // instantiate Servo օբյեկտ ՝ «myservo» անունով // կարող է ստեղծվել առավելագույնը ութ servo օբյեկտ

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // ակնթարթային LCD օբյեկտի ստեղծում և կազմաձևում

void setup () {

Serial.begin (9600); // սկսել սերիական նավահանգիստ

myservo.attach (servopin); // ամրացնում է servo- ն 9 -րդ կապի վրա servo օբյեկտին

irrecv.enableIRIn (); // գործարկեք ընդունիչը

myDisplay.init (); // LCD- ի նախաստորագրում

myDisplay.backlight (); // միացրեք LCD լուսարձակը

}

դատարկ շրջան () {

եթե (irrecv.decode (& արդյունքները)) // եթե փոխանցումը ստացվել է …

{Serial.print ("IR արժեքը ստացվել է.");

Serial.println (results.value); // ցուցադրել ստացված արժեքը

// մեկնաբանել ստացված հրամանները… if (results.value == 16724175) // 1 {// left myservo.write (0); }

եթե (results.value == 16718055) // 2 {// միջին myservo.write (90); }

if (results.value == 16743045) // 3 {// right myservo.write (180); }

if (results.value == 16754775) //+ {// increment currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// նվազեցում currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

irrecv.resume (); // Ստացեք հաջորդ արժեքը

// Սերիայի մոնիտորի տպում Serial.print ("Սերվոյի ընթացիկ դիրքը.");

Serial.println (myservo.read ()); // սա վերցնում է servo դիրքը և ուղարկում այն սերիական մոնիտոր

// LCD տպագիր myDisplay.clear ();

myDisplay.print ("Servo deg.:");

myDisplay.print (myservo.read ());

ուշացում (200); // սերվոյի ակտիվացումը կայուն դարձնելու հետաձգում

}

Քայլ 7: Դիտեք իմ YouTube- ի օգնության տեսանյութը

Դիտեք իմ չհրապարակված YouTube տեսանյութը, որն ամբողջությամբ քննարկում և ցուցադրում է նախագիծը, եթե ունեք հարցեր:

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