תוכן עניינים:

מכונית אלחוטית המבוקרת על ידי מחוות: 7 שלבים
מכונית אלחוטית המבוקרת על ידי מחוות: 7 שלבים

וִידֵאוֹ: מכונית אלחוטית המבוקרת על ידי מחוות: 7 שלבים

וִידֵאוֹ: מכונית אלחוטית המבוקרת על ידי מחוות: 7 שלבים
וִידֵאוֹ: אלו הם רכבי השטח החשמליים הטובים ביותר נכון להיום 2024, מאי
Anonim
מכונית אלחוטית נשלטת באמצעות מחוות
מכונית אלחוטית נשלטת באמצעות מחוות

במדריך זה אנו הולכים ללמוד כיצד להכין מכונית מבוקרת מחוות או כל רובוט. לפרויקט זה יש שני חלקים, חלק אחד הוא יחידת משדר וחלק אחר הוא יחידת מקלט. יחידת המשדר למעשה מותקנת על כפפות יד ויחידת המקלט ממוקמת בתוך מכונית או כל רובוט. עכשיו הגיע הזמן ליצור מכונית נחמדה. בוא נלך!

שלב 1: ציוד

יחידת משדר

1. ארדואינו ננו.

2. מודול חיישן MPU6050.

3. משדר RF 433 מגהרץ.

4. כל סוג של 3 תאים, סוללת 11.1 וולט (כאן השתמשתי בתא מטבע).

5. ורו-בורד.

6. כפפות ידיים.

יחידת מקלט

1. Arduino Nano או Arduino Uno.

2. מודול נהג מנוע L298N.

3. מסגרת רובוט 4 גלגלים כולל מנועים.

4. מקלט RF 433.

5. סוללת 3 תאים, 11.1 וולט לי-פו.

6. לוח לוח וורו.

אחרים

1. מקלות דבק ואקדח.

2. חוטי מגשר.

3. מברגי ברגים

4. ערכת הלחמה.

וכו '

שלב 2: קובץ תמונה של תרשים מעגלים

קובץ תמונה של תרשים מעגלים
קובץ תמונה של תרשים מעגלים

שלב 3: קובץ פריצה של תרשים המעגלים

שלב 4: קוד המשדר

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

MPU6050 mpu6050 (חוט);

טיימר ארוך = 0;

בקר *צ'אר;

הגדרת חלל ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (נכון); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // מהירות העברת הנתונים Kbps

}

לולאת חלל ()

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

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 "); טיימר = מיליס (); }

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

if (mpu6050.getAccAngleX () 30) {בקר = "X2"; בקר vw_send ((uint8_t *), strlen (בקר)); vw_wait_tx (); // המתן עד שכל ההודעה תיעלם Serial.println ("קדימה"); } אחרת אם (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; בקר vw_send ((uint8_t *), strlen (בקר)); vw_wait_tx (); // המתן עד שכל ההודעה תיעלם Serial.println ("LEFT"); } אחרת אם (mpu6050.getAccAngleY () <-40) {controller = "Y2"; בקר vw_send ((uint8_t *), strlen (בקר)); vw_wait_tx (); // המתן עד שכל ההודעה תיעלם Serial.println ("ימינה"); } אחרת אם (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 () {Serial.begin (9600); vw_set_ptt_inverted (true); // נדרש עבור 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 ("הכל בסדר");

}

לולאת חלל () {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); //כבוי(); } אחרת אם ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("קדימה"); קָדִימָה(); עיכוב (100); //כבוי(); }

אחרת אם ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("שמאל"); שמאלה(); עיכוב (100); //כבוי(); }

אחרת אם ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("ימין"); ימין(); עיכוב (100); //כבוי(); } אחרת אם ((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: קישור של ספריות

ספריית Wire Virtual:

MPU6050_tockn מאזניים:

ספריית Wire:

מוּמלָץ: