
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

В этом уроке мы узнаем, как сделать машину или любого робота, управляемую жестами. Этот проект состоит из двух частей: одна часть - передатчик, а другая - приемник. Блок передатчика фактически закреплен на перчатках, а блок приемника помещается внутри автомобиля или любого робота. Пришло время сделать красивую машину. Пойдем!
Шаг 1: оборудование
Блок передатчика
1. Arduino Nano.
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. Трехэлементный литий-полимерный аккумулятор на 11,1 В.
6. Веро-доска.
Другие
1. Клей-стержни и пистолет.
2. Провода-перемычки.
3. Отвертки.
4. Комплект для пайки.
и т.п.
Шаг 2: Файл изображения принципиальной схемы

Шаг 3: Фриттинг файла принципиальной схемы
Шаг 4: Код передатчика
#включают
#включают
#включают
MPU6050 mpu6050 (провод);
длинный таймер = 0;
char * контроллер;
установка void ()
{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (истина); vw_set_ptt_inverted (правда); // vw_set_tx_pin (10); vw_setup (4000); // скорость передачи данных Kbps
}
пустой цикл ()
{ ////////////////////////////////////////////////////////////////////////////////////////////////
mpu6050.update ();
если (millis () - таймер> 1000)
{Serial.println ("============================================ =========== "); Serial.print ("темп:"); 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"); } иначе, если (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 ("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;
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, ВЫХОД); pinMode (LB, ВЫХОД); pinMode (RA, ВЫХОД); pinMode (RB, ВЫХОД); vw_rx_start (); // Запускаем ФАПЧ приемника с запущенным Serial.println ("Все в порядке");
}
недействительный цикл () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message (buf, & buflen)) // Неблокирующий
{если ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("НАЗАД"); назад (); задержка (100); //выключенный(); } else if ((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); //выключенный(); } 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:
Библиотека проводов:
Рекомендуемые:
Автомобиль управления жестами MPU6050 и NRF24L01: 4 шага

Автомобиль для управления жестами MPU6050 и NRF24L01: Робот для управления жестами является популярным типом проектов, созданных любителями. Концепция, лежащая в основе этого, проста: ориентация ладони контролирует движение автомобиля-робота. MPU6050 определяет ориентацию запястья и передает его на
Универсальный пульт ДУ с управлением жестами и Node-MCU: 12 шагов

Универсальный пульт дистанционного управления с жестовым управлением и Node-MCU: Всем привет и добро пожаловать в этот проект! Я довольно ленив, и кошмар ленивого человека - смотреть телевизор, когда понимаешь, что пульт находится слишком далеко! Я понял, что мой пульт никогда не будет слишком далеко, если он у меня будет под рукой
Автомобиль, управляемый жестами: 5 шагов (с изображениями)

Автомобиль, управляемый жестами: Роботы играют важную роль в автоматизации во всех секторах, таких как строительство, военная промышленность, медицина, производство и т. Д. После создания некоторых базовых роботов, таких как управляемая машина с использованием Bluetooth, я разработал этот датчик на основе акселерометра
Ультразвуковое пианино с управлением жестами !: 10 шагов (с изображениями)

Ультразвуковое пианино Pi с управлением жестами! В этом проекте используются недорогие ультразвуковые датчики HC-SR04 в качестве входов и генерируются MIDI-ноты, которые можно воспроизводить через синтезатор на Raspberry Pi для получения высококачественного звука. В проекте также используется базовая форма управления жестами. , где музыка
Взломайте беспроводной дверной звонок в переключатель беспроводной сигнализации или переключатель включения / выключения: 4 шага

Взломайте беспроводной дверной звонок в переключатель беспроводной сигнализации или переключатель включения / выключения: недавно я построил систему сигнализации и установил ее в своем доме. Я включил магнитные выключатели на дверях и подключил их через чердак. Окна - это совсем другое дело, и жесткая проводка их не подходила. Мне нужно было беспроводное решение, а это