Съдържание:

Безжична кола с контролиран жест: 7 стъпки
Безжична кола с контролиран жест: 7 стъпки

Видео: Безжична кола с контролиран жест: 7 стъпки

Видео: Безжична кола с контролиран жест: 7 стъпки
Видео: Мини ПК на Intel N100 - AC8-N, мощная безвентиляторная платформа, установка Home Assistant OS 2024, Ноември
Anonim
Безжична кола с контролиран жест
Безжична кола с контролиран жест

В този урок ще научим как да направим автомобил, управляван с жестове, или какъвто и да е робот. Този проект има две части, едната част е предавател, а другата част е приемник. Предавателният блок всъщност е монтиран на ръкавици, а приемникът е поставен в автомобил или друг робот. Сега е време да направим хубава кола. Да тръгваме!

Стъпка 1: Оборудване

Предавател

1. Arduino Nano.

2. Сензорен модул MPU6050.

3. RF 433 MHz предавател.

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. Веро-борд.

Други

1. Лепилни пръчки и пистолет.

2. Кабелни проводници.

3. Винтоверти

4. Комплект за запояване.

и т.н.

Стъпка 2: Файл с изображение на електрическа схема

Файл с изображение на електрическа схема
Файл с изображение на електрическа схема

Стъпка 3: Презареждане на файл на електрическа схема

Стъпка 4: Код на предавателя

#включва

#включва

#включва

MPU6050 mpu6050 (Тел);

дълъг таймер = 0;

char *контролер;

void setup ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (вярно); vw_set_ptt_inverted (вярно); // vw_set_tx_pin (10); vw_setup (4000); // скорост на предаване на данни Kbps

}

void loop ()

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

mpu6050.update ();

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 "); таймер = милис (); }

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

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 ("RIGHT"); } иначе ако (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 ("НАЗАД"); назад (); забавяне (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 ("RIGHT"); надясно (); забавяне (100); // изключено (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); off (); забавяне (100); }} else {Serial.println ("Няма получен сигнал"); }}

празно напред ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }

void назад ()

{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); }

void off ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

Стъпка 6: INO файлове

Стъпка 7: Връзка на библиотеки

Виртуална кабелна библиотека:

MPU6050_tockn Libraby:

Wire Library:

Препоръчано: