Агуулгын хүснэгт:

Дохио зангаагаар удирддаг утасгүй машин: 7 алхам
Дохио зангаагаар удирддаг утасгүй машин: 7 алхам

Видео: Дохио зангаагаар удирддаг утасгүй машин: 7 алхам

Видео: Дохио зангаагаар удирддаг утасгүй машин: 7 алхам
Видео: ТИЛЛЬ ЛИНДЕМАНН: Сольные проекты и Коллаборации | Разбор и Интересные Факты 2024, Арваннэгдүгээр
Anonim
Дохио зангаагаар удирддаг утасгүй машин
Дохио зангаагаар удирддаг утасгүй машин

Энэхүү гарын авлагад бид дохио зангаагаар удирддаг машин эсвэл ямар ч робот хийх талаар сурах болно. Энэхүү төсөл нь хоёр хэсэгтэй бөгөөд нэг хэсэг нь дамжуулагч, нөгөө хэсэг нь хүлээн авах нэгж юм. Дамжуулагч төхөөрөмжийг гар бээлий дээр суурилуулсан бөгөөд хүлээн авагчийг машин эсвэл бусад робот дотор байрлуулсан болно. Одоо сайхан машин хийх цаг болжээ. Явцгаая!

Алхам 1: Тоног төхөөрөмж

Дамжуулагчийн нэгж

1. Ардуино Нано.

2. MPU6050 мэдрэгчийн модуль.

3. RF 433 МГц дамжуулагч.

4. Ямар ч төрлийн 3 үүр, 11.1 вольтын батерей (Энд би зоосон үүр ашигласан).

5. Vero-Board.

6. Гар бээлий.

Хүлээн авагчийн нэгж

1. Arduino Nano эсвэл Arduino Uno.

2. L298N мотор драйвер модуль.

3. Хөдөлгүүрийг багтаасан 4 дугуйтай роботын хүрээ.

4. RF 433 RF хүлээн авагч.

5. 3 эс, 11.1 вольтын Li-po зай.

6. Vero-board.

Бусад

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); // өгөгдөл дамжуулах хурд 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 "); таймер = миллис (); }

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

хэрэв (mpu6050.getAccAngleX () 30) {хянагч = "X2"; vw_send ((uint8_t *) хянагч, strlen (хянагч)); vw_wait_tx (); // Бүх зурвас алга болтол хүлээ Serial.println ("FORWARD"); } өөр if (mpu6050.getAccAngleY ()> 40) {хянагч = "Y1"; vw_send ((uint8_t *) хянагч, strlen (хянагч)); vw_wait_tx (); // Бүх зурвас алга болтол хүлээнэ үү Serial.println ("LEFT"); } өөр бол (mpu6050.getAccAngleY () <-40) {хянагч = "Y2"; vw_send ((uint8_t *) хянагч, strlen (хянагч)); vw_wait_tx (); // Бүх зурвас алга болтол хүлээ Serial.println ("ЗӨВ"); } өөр бол (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {хянагч = "A1"; vw_send ((uint8_t *) хянагч, strlen (хянагч)); vw_wait_tx (); // Бүх зурвас алга болтол хүлээ Serial.println ("ЗОГСООХ"); }}

Алхам 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 (); // Serial.println ("Бүгд ОК") ажиллаж байгаа PLL хүлээн авагчийг эхлүүлэх;

}

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); // унтраах (); } if 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 ("ЗӨВ"); баруун (); саатал (100); // унтраах (); } if if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); унтраах (); саатал (100); }} өөр {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:

Утасны номын сан:

Зөвлөмж болгож буй: