جدول المحتويات:

سيارة لاسلكية يتم التحكم فيها عن طريق الإيماءات: 7 خطوات
سيارة لاسلكية يتم التحكم فيها عن طريق الإيماءات: 7 خطوات

فيديو: سيارة لاسلكية يتم التحكم فيها عن طريق الإيماءات: 7 خطوات

فيديو: سيارة لاسلكية يتم التحكم فيها عن طريق الإيماءات: 7 خطوات
فيديو: السيارة البهلوانية من عجيب غريب .كوم 2024, شهر نوفمبر
Anonim
سيارة لاسلكية يتم التحكم فيها عن طريق الإيماءات
سيارة لاسلكية يتم التحكم فيها عن طريق الإيماءات

في هذا البرنامج التعليمي سوف نتعلم كيفية صنع سيارة يتم التحكم فيها بالإيماءات أو أي روبوت. يتكون هذا المشروع من جزأين ، جزء واحد هو وحدة الإرسال وجزء آخر هو وحدة الاستقبال. في الواقع ، يتم تثبيت وحدة الإرسال على قفازات يدوية ويتم وضع وحدة الاستقبال داخل السيارة أو أي إنسان آلي. حان الوقت الآن لصنع سيارة جميلة. لنذهب!

الخطوة 1: المعدات

وحدة الارسال

1. اردوينو نانو.

2. وحدة الاستشعار MPU6050.

3. الترددات اللاسلكية 433 ميغاهيرتز الارسال.

4. أي نوع من 3 خلايا ، بطارية 11.1 فولت (لقد استخدمت خلية عملة معدنية هنا).

5. فيرو المجلس.

6. قفازات اليد.

وحدة الاستقبال

1. Arduino Nano أو Arduino Uno.

2. L298N Motor Driver Module.

3. 4 إطار روبوت بما في ذلك المحركات.

4. جهاز استقبال RF 433 RF.

5. 3 خلايا ، 11.1 فولت بطارية ليثيوم بو.

6. فيرو مجلس.

آحرون

1. عصي غراء وبندقية.

2. أسلاك العبور.

3. مفكات البراغي

4. طقم لحام.

إلخ.

الخطوة 2: ملف صورة مخطط الدائرة

ملف صورة مخطط الدائرة
ملف صورة مخطط الدائرة

الخطوة 3: ملف فريتزينج لمخطط الدائرة

الخطوة 4: كود المرسل

#يشمل

#يشمل

#يشمل

MPU6050 mpu6050 (سلك) ؛

مؤقت طويل = 0 ؛

تحكم char * ؛

الإعداد باطل()

{Serial.begin (9600) ، Wire.begin () ؛ mpu6050.begin () ، mpu6050.calcGyroOffsets (صحيح) ، vw_set_ptt_inverted (صواب) ، // vw_set_tx_pin (10) ؛ vw_setup (4000) ؛ // سرعة نقل البيانات كيلوبت في الثانية

}

حلقة فارغة()

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

mpu6050.update () ،

إذا (بالمللي () - المؤقت> 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 ") ؛ الموقت = مللي () ؛ }

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

إذا (mpu6050.getAccAngleX () 30) {وحدة تحكم = "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 ("RIGHT") ؛ } 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 ؛

كثافة العمليات LB = 11 ؛ int RA = 5 ؛ كثافة العمليات RB = 6 ؛ إعداد باطل () {Serial.begin (9600) ؛ vw_set_ptt_inverted (صواب) ، // مطلوب لـ DR3100 vw_set_rx_pin (12) ؛ vw_setup (4000) ؛ // بت لكل ثانية pinMode (13 ، الإخراج) ؛ pinMode (LA ، الإخراج) ؛ pinMode (LB ، الإخراج) ؛ pinMode (RA ، الإخراج) ؛ pinMode (RB ، الإخراج) ؛ vw_rx_start () ، // بدء تشغيل جهاز الاستقبال PLL الذي يعمل على Serial.println ("كل شيء على ما يرام") ؛

}

حلقة باطلة () {uint8_t buf [VW_MAX_MESSAGE_LEN] ؛ uint8_t buflen = VW_MAX_MESSAGE_LEN ،

if (vw_get_message (buf، & buflen)) // Non-blocking

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD")؛ الى الوراء()؛ تأخير (100) ؛ //إيقاف()؛ } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("FORWARD")؛ إلى الأمام()؛ تأخير (100) ؛ //إيقاف()؛ }

else if ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("LEFT") ؛ اليسار()؛ تأخير (100) ؛ //إيقاف()؛ }

else if ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("RIGHT") ؛ حق()؛ تأخير (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:

مكتبة الأسلاك:

موصى به: