विषयसूची:

इशारा नियंत्रित वायरलेस कार: 7 कदम
इशारा नियंत्रित वायरलेस कार: 7 कदम

वीडियो: इशारा नियंत्रित वायरलेस कार: 7 कदम

वीडियो: इशारा नियंत्रित वायरलेस कार: 7 कदम
वीडियो: Smallest CCTV Camera | USB camera with wifi 2024, नवंबर
Anonim
इशारा नियंत्रित वायरलेस कार
इशारा नियंत्रित वायरलेस कार

इस ट्यूटोरियल में हम सीखेंगे कि जेस्चर नियंत्रित कार या कोई रोबोट कैसे बनाया जाता है। इस परियोजना के दो भाग हैं, एक भाग ट्रांसमीटर इकाई है और दूसरा भाग रिसीवर इकाई है। ट्रांसमीटर इकाई वास्तव में एक हाथ के दस्ताने पर लगाई जाती है और रिसीवर इकाई को कार या किसी रोबोट के अंदर रखा जाता है। अब एक अच्छी कार बनाने का समय आ गया है। चलिए चलते हैं!

चरण 1: उपकरण

ट्रांसमीटर यूनिट

1. अरुडिनो नैनो।

2. MPU6050 सेंसर मॉड्यूल।

3. आरएफ 433 मेगाहर्ट्ज ट्रांसमीटर।

4. किसी भी प्रकार की 3 सेल, 11.1 वोल्ट की बैटरी (यहाँ मैंने कॉइन सेल का उपयोग किया है)।

5. वेरो-बोर्ड।

6. हाथ के दस्ताने।

रिसीवर यूनिट

1. Arduino नैनो या Arduino Uno।

2. L298N मोटर चालक मॉड्यूल।

3. मोटर्स सहित 4 पहिया रोबोट फ्रेम।

4. आरएफ 433 आरएफ रिसीवर।

5. 3 सेल, 11.1 वोल्ट ली-पो बैटरी।

6. वेरो-बोर्ड।

अन्य

1. गोंद की छड़ें और बंदूक।

2. जम्पर तार।

3. स्क्रू ड्राइवर

4. सोल्डरिंग किट।

आदि।

चरण 2: सर्किट आरेख छवि फ़ाइल

सर्किट आरेख छवि फ़ाइल
सर्किट आरेख छवि फ़ाइल

चरण 3: सर्किट आरेख की फ्रिटिंग फ़ाइल

चरण 4: ट्रांसमीटर कोड

#शामिल

#शामिल

#शामिल

एमपीयू 6050 एमपीयू 6050 (वायर);

लंबा टाइमर = 0;

चार * नियंत्रक;

व्यर्थ व्यवस्था()

{ सीरियल.बेगिन (९६००); वायर.बेगिन (); mpu6050.begin (); mpu6050.calcGyroOffsets (सच); vw_set_ptt_inverted (सच); // vw_set_tx_pin(10); vw_setup(4000);// डेटा ट्रांसफर की गति Kbps

}

शून्य लूप ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050.अपडेट ();

अगर (मिली () - टाइमर> 1000)

{ Serial.println ("======================================= ============"); Serial.print("temp:");Serial.println(mpu6050.getTemp()); सीरियल.प्रिंट ("एसीसीएक्स:"); सीरियल.प्रिंट (mpu6050.getAccX ()); Serial.print("\taccY:");Serial.print(mpu6050.getAccY ()); Serial.print("\taccZ:");Serial.println(mpu6050.getAccZ ()); Serial.print("gyroX:");Serial.print(mpu6050.getGyroX()); सीरियल.प्रिंट ("\ tgyroY:"); सीरियल.प्रिंट (mpu6050.getGyroY ()); सीरियल.प्रिंट ("\ 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 ()); सीरियल.प्रिंट ("\ tgyroAngleY:"); सीरियल.प्रिंट (mpu6050.getGyroAngleY ()); सीरियल.प्रिंट ("\ tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); सीरियल.प्रिंट ("एंगलएक्स:"); सीरियल.प्रिंट (mpu6050.getAngleX ()); Serial.print("\tangleY:");Serial.print(mpu6050.getAngleY ()); Serial.print("\tangleZ:");Serial.println(mpu6050.getAngleZ ()); Serial.println ("======================================= ===========\n"); टाइमर = मिली (); }

/////////////////////////////////////////////////////////////////////////////////////

अगर (mpu6050.getAccAngleX () 30) {नियंत्रक = "X2"; vw_send ((uint8_t *) नियंत्रक, स्ट्रेल (नियंत्रक)); vw_wait_tx (); // तब तक प्रतीक्षा करें जब तक कि पूरा संदेश न चला जाए Serial.println ("फॉरवर्ड"); } और अगर (mpu6050.getAccAngleY ()> 40) {नियंत्रक = "Y1"; vw_send ((uint8_t *) नियंत्रक, स्ट्रेल (नियंत्रक)); vw_wait_tx (); // तब तक प्रतीक्षा करें जब तक कि पूरा संदेश न चला जाए Serial.println ("बाएं"); } और अगर (mpu6050.getAccAngleY()<-40) {नियंत्रक = "Y2"; vw_send ((uint8_t *) नियंत्रक, स्ट्रेल (नियंत्रक)); vw_wait_tx (); // तब तक प्रतीक्षा करें जब तक कि पूरा संदेश न चला जाए Serial.println ("राइट"); } और अगर (mpu6050.getAccAngleX()-10 && mpu6050.getAccAngleY()-10) {नियंत्रक = "A1"; vw_send ((uint8_t *) नियंत्रक, स्ट्रेल (नियंत्रक)); vw_wait_tx (); // तब तक प्रतीक्षा करें जब तक कि पूरा संदेश न चला जाए Serial.println ("STOP"); } }

चरण 5: रिसीवर कोड

#शामिल

इंट ला = 3;

इंट एलबी = 11; इंट आरए = 5; इंट आरबी = 6; शून्य सेटअप () {Serial.begin (९६००); vw_set_ptt_inverted (सच); // DR3100 vw_set_rx_pin(12) के लिए आवश्यक; vw_setup(4000); // बिट्स प्रति सेकंड पिनमोड (13, OUTPUT); पिनमोड (ला, आउटपुट); पिनमोड (एलबी, आउटपुट); पिनमोड (आरए, आउटपुट); पिनमोड (आरबी, आउटपुट); vw_rx_start (); // रिसीवर पीएलएल शुरू करें सीरियल चल रहा है।प्रिंट्लन ("ऑल ओके");

}

शून्य लूप () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t बुफ्लेन = VW_MAX_MESSAGE_LEN;

अगर (vw_get_message(buf, &buflen)) // नॉन-ब्लॉकिंग

{ अगर ((buf[0]=='X')&&(buf[1]=='1')) { Serial.println ("बैकवर्ड"); पिछड़ा (); देरी (100); //बंद(); } और अगर ((buf[0]=='X')&&(buf[1]=='2')) { Serial.println ("फॉरवर्ड"); आगे(); देरी (100); //बंद(); }

और अगर ((buf[0]=='Y')&&(buf[1]=='1'))

{ सीरियल.प्रिंट्लन ("बाएं"); बाएं(); देरी (100); //बंद(); }

और अगर ((buf[0]=='Y')&&(buf[1]=='2'))

{ सीरियल.प्रिंट्लन ("राइट"); अधिकार(); देरी (100); //बंद(); } और अगर((buf[0]=='A')&&(buf[1]=='1')) {Serial.println("STOP"); बंद(); देरी (100); } } और { Serial.println ("कोई संकेत प्राप्त नहीं हुआ"); } }

आगे शून्य ()

{एनालॉगराइट (एलए, 70); एनालॉगवाइट (एलबी, 0); एनालॉगराइट (आरए, 70); एनालॉगवाइट (आरबी, 0); }

शून्य पिछड़ा ()

{एनालॉगराइट (एलए, 0); एनालॉगवाइट (एलबी, 70); एनालॉगवाइट (आरए, 0); एनालॉगराइट (आरबी, 70); }

शून्य छोड़ दिया ()

{एनालॉगराइट (एलए, 0); एनालॉगवाइट (एलबी, 70); एनालॉगराइट (आरए, 70); एनालॉगवाइट (आरबी, 0); }

शून्य अधिकार ()

{एनालॉगराइट (एलए, 70); एनालॉगवाइट (एलबी, 0); एनालॉगवाइट (आरए, 0); एनालॉगराइट (आरबी, 70); }

शून्य ()

{एनालॉगराइट (एलए, 0); एनालॉगवाइट (एलबी, 0); एनालॉगवाइट (आरए, 0); एनालॉगवाइट (आरबी, 0); }

चरण 6: आईएनओ फ़ाइलें

चरण 7: पुस्तकालयों का लिंक

वर्चुअल वायर लाइब्रेरी:

MPU6050_tockn लिब्राबी:

वायर लाइब्रेरी:

सिफारिश की: