Բովանդակություն:
- Քայլ 1: Սարքավորումներ
- Քայլ 2: Շղթայի դիագրամի պատկերային ֆայլ
- Քայլ 3. Շղթայի սխեմայի փխրուն ֆայլ
- Քայլ 4: Հաղորդիչի ծածկագիր
- Քայլ 5: Ստացողի կոդը
- Քայլ 6: INO ֆայլեր
- Քայլ 7: Գրադարանների կապը
Video: Gեստերով վերահսկվող անլար մեքենա ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս ձեռնարկում մենք սովորելու ենք, թե ինչպես կատարել ժեստերով կառավարվող մեքենա կամ որևէ ռոբոտ: Այս նախագիծը բաղկացած է երկու մասից, մի մասը հաղորդիչ է, իսկ մյուս մասը `ընդունիչ: Հաղորդիչ միավորը իրականում տեղադրված է ձեռքի ձեռնոցների վրա, իսկ ընդունիչ սարքը տեղադրված է մեքենայի կամ որևէ ռոբոտի ներսում: Հիմա ժամանակն է գեղեցիկ մեքենա պատրաստել: Գնացինք!
Քայլ 1: Սարքավորումներ
Հաղորդիչ միավոր
1. Արդուինո Նանո:
2. MPU6050 սենսորային մոդուլ:
3. ՌԴ 433 ՄՀց հաղորդիչ:
4. cellանկացած տիպի 3 բջիջ, 11.1 վոլտ մարտկոց (այստեղ ես օգտագործել եմ մետաղադրամի բջիջ):
5. Վերո-տախտակ:
6. Ձեռքի ձեռնոցներ:
Ստացողի միավոր
1. Arduino Nano կամ Arduino Uno:
2. L298N Motor Driver մոդուլ:
3. 4 անիվի ռոբոտի շրջանակ, ներառյալ շարժիչները:
4. ՌԴ 433 ՌԴ ընդունիչ:
5. 3 բջջային, 11.1 վոլտ Li-po մարտկոց:
6. Վերո-տախտակ:
Մյուսները
1. Սոսինձ ձողիկներ և ատրճանակ:
2. Թռիչքային լարեր:
3. Պտուտակային վարորդներ
4. oldոդման հավաքածու:
եւ այլն
Քայլ 2: Շղթայի դիագրամի պատկերային ֆայլ
Քայլ 3. Շղթայի սխեմայի փխրուն ֆայլ
Քայլ 4: Հաղորդիչի ծածկագիր
#ներառում
#ներառում
#ներառում
MPU6050 mpu6050 (մետաղալար);
երկար ժամանակաչափ = 0;
char *վերահսկիչ;
դատարկ կարգավորում ()
{Serial.begin (9600); Wire.begin (); mpu6050. սկսել (); mpu6050.calcGyroOffsets (ճշմարիտ); vw_set_ptt_inverted (ճշմարիտ); // vw_set_tx_pin (10); vw_setup (4000); // տվյալների փոխանցման արագությունը Kbps
}
դատարկ շրջան ()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050. արդիականացում ();
if (millis () - ժմչփ> 1000)
{Serial.println ("============================================= =========== "); Serial.print ("temp:"); Serial.println (mpu6050.getTemp ()); Serial.print ("accX:"); Serial.print (mpu6050.getAccX ()); Serial.print ("\ taccY:"); Serial.print (mpu6050.getAccY ()); Serial.print ("\ taccZ:"); Serial.println (mpu6050.getAccZ ()); Serial.print ("gyroX:"); Serial.print (mpu6050.getGyroX ()); Serial.print ("\ tgyroY:"); Serial.print (mpu6050.getGyroY ()); Serial.print ("\ tgyroZ:"); Serial.println (mpu6050.getGyroZ ()); Serial.print ("accAngleX:"); Serial.print (mpu6050.getAccAngleX ()); Serial.print ("\ taccAngleY:"); Serial.println (mpu6050.getAccAngleY ()); Serial.print ("gyroAngleX:"); Serial.print (mpu6050.getGyroAngleX ()); Serial.print ("\ tgyroAngleY:"); Serial.print (mpu6050.getGyroAngleY ()); Serial.print ("\ tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("============================================== ========== / n "); ժմչփ = millis (); }
/////////////////////////////////////////////////////////////////////////////////////
if (mpu6050.getAccAngleX () 30) {controller = "X2"; vw_send ((uint8_t *) վերահսկիչ, strlen (վերահսկիչ)); vw_wait_tx (); // Սպասեք, մինչև ամբողջ հաղորդագրությունը չվերանա Serial.println ("FORWARD"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) վերահսկիչ, strlen (վերահսկիչ)); vw_wait_tx (); // Սպասեք, մինչև ամբողջ հաղորդագրությունը չվերանա Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) վերահսկիչ, strlen (վերահսկիչ)); vw_wait_tx (); // Սպասեք, մինչև ամբողջ հաղորդագրությունը չվերանա Serial.println («IGHԻՇՏ»); } else if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) վերահսկիչ, strlen (վերահսկիչ)); vw_wait_tx (); // Սպասեք, մինչև ամբողջ հաղորդագրությունը չվերանա Serial.println ("STOP"); }}
Քայլ 5: Ստացողի կոդը
#ներառում
int LA = 3;
int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (ճշմարիտ); // Պահանջվում է DR3100 vw_set_rx_pin- ի համար (12); vw_setup (4000); // բիթեր/ վրկ pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Գործարկեք ստացողի PLL- ն ՝ աշխատելով Serial.println («Ամեն ինչ լավ է»);
}
void loop () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message (buf, & buflen)) // Չարգելափակում
{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); հետընթաց (); ուշացում (100); // անջատված (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD"); առաջ (); ուշացում (100); // անջատված (); }
այլապես, եթե ((buf [0] == 'Y') && (buf [1] == '1'))
{Serial.println ("ՄՆԱ"); ձախ(); ուշացում (100); // անջատված (); }
այլապես, եթե ((buf [0] == 'Y') && (buf [1] == '2'))
{Serial.println ("IGHԻՇՏ"); ճիշտ(); ուշացում (100); // անջատված (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); անջատված (); ուշացում (100); }} else {Serial.println ("Ազդանշան չի ստացվել"); }}
դատարկ առաջ ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }
դատարկ հետընթաց ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }
դատարկ ձախ ()
{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }
դատարկ իրավունք ()
{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }
դատարկ ()
{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }
Քայլ 6: INO ֆայլեր
Քայլ 7: Գրադարանների կապը
Վիրտուալ մետաղալարերի գրադարան ՝
MPU6050_tockn Libraby:
Մետաղալար գրադարան ՝
Խորհուրդ ենք տալիս:
Gեստերով վերահսկվող ռոբոտ - Spinel Crux: 4 քայլ
Estեստերով վերահսկվող ռոբոտ - Spinel Crux: Spinel Crux estեստերով վերահսկվող ռոբոտ ՝ անլար հսկողության ծրագրի համար: Այս շարքում մենք կկառուցենք ռոբոտ, որը կարող է ճանապարհորդել կոպիտ տեղանքով և կառավարել ձեռքի ժեստերի միջոցով: Ռոբոտին քշելու համար մենք կօգտագործենք կառավարման ձեռնոց, որը
Gեստերով վերահսկվող մուկ. 6 քայլ (նկարներով)
Gեստերով վերահսկվող մուկ. Դուք ձեր ընկերների հետ ֆիլմ եք նայում նոութբուքի վրա, և տղաներից մեկը զանգում է: Ահհ .. ֆիլմը դադարեցնելու համար պետք է վայր իջնել: Դուք ներկայացնում եք պրոյեկտորի վերաբերյալ ներկայացում և պետք է փոխեք ծրագրերի միջև: Պետք է տեղաշարժվել
Gեստերով վերահսկվող ունիվերսալ հեռակառավարիչ ՝ Node-MCU- ով ՝ 12 քայլ
Odeեստերով վերահսկվող ունիվերսալ հեռակառավարիչ ՝ Node-MCU- ով. Բարև բոլորին և բարի գալուստ այս նախագիծ: Ես բավականին ծույլ մարդ եմ, և ծույլ մարդու մղձավանջը հեռուստացույց դիտելն է, երբ հասկանում ես, որ հեռակառավարիչը շատ հեռու է: Ես հասկացա, որ իմ հեռակառավարիչը երբեք շատ հեռու չի լինի, եթե այն ձեռքիս մոտ լինի
Gեստերով վերահսկվող մեքենա. 5 քայլ (նկարներով)
Estեստերով վերահսկվող մեքենա. Ռոբոտները կարևոր դեր են խաղում ավտոմատացման մեջ բոլոր ոլորտներում ՝ շինարարություն, ռազմական, բժշկական, արտադրություն և այլն: Bluetooth- ի միջոցով Controlled Car- ի նման հիմնական ռոբոտներ պատրաստելուց հետո ես մշակեցի այս արագացուցիչի վրա հիմնված
Gեստերով վերահսկվող լաբիրինթոս. 8 քայլ (նկարներով)
Gեստերով վերահսկվող լաբիրինթոս. Ես սիրում եմ խաղալ լաբիրինթոս լաբիրինթոսում: Ես միշտ ցանկացել եմ վերահսկել այդ լաբիրինթոս լաբիրինթոս խաղերից մեկը ժեստերի կամ բջջայինի միջոցով: Այս մարմարե լաբիրինթոսը ստեղծելու համար ոգեշնչվեցի blic19933- ի 3D տպված լաբիրինթոսով, որը վերահսկվում է ձեր Android սարքի կողմից: Օգտագործման փոխարեն