Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Радиоуправляемый автомобиль Arduino 4WD

Компоненты и расходные материалы

Arduino UNO
× 2
Прорыв трансивера SparkFun - nRF24L01 + (RP-SMA)
× 2
Funduino Joystick Shield V1.A
× 1
Драйверы двигателя SparkFun Dual H-Bridge L298
× 2
Комплект шасси автомобиля для интеллектуального робота 4WD
× 1
LED (общий)
× 3
Резистор 221 Ом
× 2
Макет (общий)
× 2
18650 батарей
× 2
Powerbank
× 1
Перемычки (общие)
× 1

Необходимые инструменты и машины

Паяльник (универсальный)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

История

Всем привет! Это мой следующий проект - Arduino 4WD RC Car с контроллером джойстика или Как легко управлять Arduino 4WD Smart Car с помощью аналогового джойстика.

Этот автомобиль, управляемый джойстиком, использует NRF24l01 в качестве передатчика и приемника. Имеет дальность действия до 1 километра в открытом космосе. Также это очень просто и легко сделать.

1. Контроллер джойстика

Компоненты для джойстика:

Щиток джойстика находится на вашем Arduino и превращает его в простой контроллер. 7 кнопок мгновенного действия (4 большие кнопки, 2 маленькие кнопки и кнопка выбора джойстика) и двухкоординатный джойстик для большого пальца дают вашему Arduino функциональность на уровне старых контроллеров Nintendo. Это устройство также оснащено интерфейсами Nokia 5110 LCD и nRF24L01.

Особенности:

  • Интерфейс nRF24L01
  • Интерфейс ЖК-дисплея Nokia 5110
  • Интерфейс Bluetooth
  • Интерфейс I2C
  • Совместимость с Arduino
  • Рабочее напряжение 3,5 В или 5 В

На самом деле он маркирован как BTE16-49 - nRF24L01 + RFX2401C + PA + LNA модули беспроводной связи с антенным экранированием 2,4 ГГц 20 дБм 1000 м.

Характеристики, указанные продавцом:

  • Глобальный открытый диапазон ISM 2,4 ГГц, без лицензии
  • максимальная рабочая скорость 2 Мбит / с, эффективная модуляция GFSK, передача аудио, видео
  • 125 каналов для обеспечения многоточечной связи и связи со скачкообразной перестройкой частоты.
  • адрес встроенного аппаратного средства обнаружения ошибок CRC и управления многоточечной связью.
  • рабочее напряжение 3,0-3,6 В, мощность передачи 20 дБм (VDD =3,3 В)
  • внешняя антенна 2,4 ГГц
  • Штыри с шагом 2,54 мм, полностью совместимы без интерфейса модуля усилителя, легко заменяются, увеличивают расстояние
  • дальность передачи до 1000 м

2. Контроллер джойстика

Joystick Shield имеет 4 большие кнопки + 2 маленькие кнопки + кнопка выбора джойстика и двухосевой джойстик для большого пальца (ось X от 0 до 1023, ось Y от 0 до 1023). простой контроллер. В моем скетче Button Up - это зуммер (клаксон), Button Right - передний свет (светодиод + резистор 200 Ом), Button Left - задний свет (светодиоды + резистор 200 Ом). Остальные кнопки не используются.

Тестирование джойстика:

Состояние ожидания:X =499, Y =502, вверх =1, вправо =1, вниз =1, влево =1

3. Машинка с управлением Arduino 4WD

Выполните подключения, как показано на изображении электрической схемы выше.

Примечание:перед загрузкой кода необходимо отсоединить перемычки от платы Arduino Uno (контакты 0, 1).

Что после того, как вы сделали все правильно, машина готова к работе!

После включения автомобиля Arduino и контроллера джойстика вы можете использовать джойстик для управления автомобилем, перемещая джойстик вперед и назад, машина будет двигаться в прямом или обратном направлении, а перемещение джойстика влево и вправо заставит машину поворачиваться влево и вправо.

Быть в курсе!

Код

  • Car_nRF24.ino
  • Joystick_nRF24.ino
Car_nRF24.ino Arduino
Код для Arduino RC Car
 / * Код приемника модуля JoyStick - ПОДКЛЮЧЕНИЯ:Модули nRF24L01 См .:1 - GND 2 - VCC 3.3V !!! НЕ 5V 3 - CE к контакту 6 Arduino 4 - CSN к контакту 8 Arduino 5 - SCK к контакту 13 Arduino 6 - MOSI к контакту 11 Arduino 7 - MISO к контакту 12 Arduino 8 - НЕ ИСПОЛЬЗУЕТСЯ * /// ----- ( Импортируйте необходимые библиотеки) ----- # include  #include  #include  / * ----- (Объявление констант и номеров контактов) ----- * / # определить CE_PIN 6 # определить CSN_PIN 8 // ПРИМЕЧАНИЕ:«LL» в конце константы - это «LongLong» typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Определить передающую трубу #define light_Front 18 // Светодиод передний правый контакт A4 для Arduino Uno # define light_Back 19 // LED Задний правый контакт A5 для Arduino Uno #define horn_Buzz 7 #define ENA_m1 3 // Включение / скорость двигателя спереди справа #define ENB_m1 5 // Включить / ускорить двигатель Назад вправо # define ENA_m2 9 // Включить / ускорить двигатель Передний левый # define ENB_m2 10 // Включить / ускорить двигатель Назад Влево # define IN_11 0 // L298N # 1 в 1 двигателе Передний Правый #define IN_12 1 // L298N # 1 на 2 двигателя Передний правый # define IN_13 2 // L298N # 1 на 3 электродвигателя Задний правый #define IN_14 4 // L298N # 1 на 4 электродвигателя Назад Правый # define IN_21 14 // L298N # Двигатель 2 в 1 Передний левый # define IN_22 15 // L298N # Двигатель 2 в 2 Передний левый #define IN_23 16 // L298N # Двигатель 2 в 3 Сзади слева # define IN_24 17 // L298N # Двигатель 2 в 4 Сзади слева / * ----- (Объявить объекты) ----- * / RF24 radio (CE_PIN, CSN_PIN); // Создание радио / * ----- (Объявление переменных) ----- * / int joystick [6]; // Массив из 6 элементов, содержащий показания джойстика int speedRight =0; int speedLeft =0; int xAxis, yAxis; // четыре переменных кнопки из joystickint buttonUp; int buttonRight; int buttonDown; int buttonLeft; void setup () {pinMode (light_Front, ВЫВОД); pinMode (light_Back, ВЫХОД); pinMode (horn_Buzz, ВЫХОД); pinMode (ENA_m1, ВЫХОД); pinMode (ENB_m1, ВЫХОД); pinMode (ENA_m2, ВЫХОД); pinMode (ENB_m2, ВЫХОД); pinMode (IN_11, ВЫХОД); pinMode (IN_12, ВЫХОД); pinMode (IN_13, ВЫХОД); pinMode (IN_14, ВЫХОД); pinMode (IN_21, ВЫХОД); pinMode (IN_22, ВЫХОД); pinMode (IN_23, ВЫХОД); pinMode (IN_24, OUTPUT); / * Serial.begin (9600); Serial.println ("Запуск приемника Nrf24L01"); * / radio.begin (); radio.openReadingPipe (1, труба); radio.startListening ();} void loop () {if (radio.available ()) {radio.read (джойстик, sizeof (джойстик)); xAxis =джойстик [0]; yAxis =джойстик [1]; // четыре переменных кнопки из массива джойстика int buttonUp =joystick [2]; int buttonRight =джойстик [3]; int buttonDown =джойстик [4]; int buttonLeft =джойстик [5]; //Serial.println (); // для отладки // Получение полезных данных - Отладочный код ниже if (buttonUp ==HIGH) {digitalWrite (horn_Buzz, LOW);} else {digitalWrite (horn_Buzz, HIGH);} if (buttonRight ==HIGH) {digitalWrite ( light_Front, LOW);} else {digitalWrite (light_Front, HIGH);} if (buttonLeft ==HIGH) {digitalWrite (light_Back, LOW);} else {digitalWrite (light_Back, HIGH);} // Ось Y используется для прямого и обратное управление if (yAxis <470) {// Установить правые двигатели назад digitalWrite (IN_11, LOW); digitalWrite (IN_12, HIGH); digitalWrite (IN_13, HIGH); digitalWrite (IN_14, LOW); // Устанавливаем левые моторы назад digitalWrite (IN_21, HIGH); digitalWrite (IN_22, LOW); digitalWrite (IN_23, LOW); digitalWrite (IN_24, HIGH); // Преобразование убывающих показаний оси Y для возврата от 470 к 0 в значение от 0 до 255 для сигнала ШИМ для увеличения скорости двигателя speedRight =map (yAxis, 470, 0, 0, 255); speedLeft =map (yAxis, 470, 0, 0, 255); } else if (yAxis> 550) {// Установить правые двигатели вперед digitalWrite (IN_11, HIGH); digitalWrite (IN_12, LOW); digitalWrite (IN_13, LOW); digitalWrite (IN_14, HIGH); // Устанавливаем левые моторы вперед digitalWrite (IN_21, LOW); digitalWrite (IN_22, HIGH); digitalWrite (IN_23, HIGH); digitalWrite (IN_24, LOW); // Преобразование увеличивающихся показаний оси Y для перехода от 550 до 1023 в значение от 0 до 255 для сигнала ШИМ для увеличения скорости двигателя speedRight =map (yAxis, 550, 1023, 0, 255); speedLeft =map (yAxis, 550, 1023, 0, 255); } // Если джойстик остается посередине, двигатели не двигаются else {speedRight =0; speedLeft =0; } // Ось X используется для левого и правого управления if (xAxis <470) {// Преобразование уменьшающихся значений оси X с 470 на 0 в увеличивающееся значение от 0 до 255 int xMapped =map (xAxis, 470, 0, 0 , 255); // Двигаться влево - уменьшить скорость левого двигателя, увеличить скорость правого двигателя speedLeft =speedLeft - xMapped; speedRight =speedRight + xMapped; // Ограничиваем диапазон от 0 до 255 if (speedLeft <0) {speedLeft =0; } если (speedRight> 255) {speedRight =255; }} if (xAxis> 550) {// Преобразование увеличивающихся показаний оси X с 550 до 1023 в значение от 0 до 255 int xMapped =map (xAxis, 550, 1023, 0, 255); // Двигаться вправо - уменьшить скорость правого двигателя, увеличить скорость левого двигателя speedLeft =speedLeft + xMapped; speedRight =speedRight - xMapped; // Ограничить диапазон от 0 до 255 if (speedLeft> 255) {speedLeft =255; } если (speedRight <0) {speedRight =0; }} // Предотвратить гудение на низких скоростях (Отрегулируйте в соответствии с вашими двигателями. Мои двигатели не могли начать движение, если значение ШИМ было ниже 70) if (speedLeft <70) {speedLeft =0; } если (speedRight <70) {speedRight =0; } analogWrite (ENA_m1, speedRight); // Отправляем сигнал ШИМ двигателю A analogWrite (ENB_m1, speedRight); analogWrite (ENA_m2, speedLeft); // Отправляем сигнал ШИМ на двигатель B analogWrite (ENB_m2, speedLeft); / * Serial.print ("X ="); Serial.print (xAxis); Serial.print ("Y ="); Serial.print (yAxis); Serial.print ("Вверх ="); Serial.print (джойстик [2]); Serial.print ("Right ="); Serial.print (джойстик [3]); Serial.print ("Вниз ="); Serial.print (джойстик [4]); Serial.print ("Left ="); Serial.println (джойстик [5]); * /}} 
Joystick_nRF24.ino Arduino
Код для контроллера джойстика
 / * Код приемопередатчика модуля JoyStick - ПОДКЛЮЧЕНИЯ:Модули nRF24L01 См .:1 - GND 2 - VCC 3.3V !!! НЕ 5V 3 - CE к контакту 9 Arduino 4 - CSN к контакту 10 Arduino 5 - SCK к контакту 13 Arduino 6 - MOSI к контакту 11 Arduino 7 - MISO к контакту 12 Arduino 8 - НЕИСПОЛЬЗУЕМЫЕ контакты кнопок по умолчанию:вверх - контакт 2 справа - контакт 3 Вниз - контакт 4 Левый - контакт 5 - Модуль аналогового джойстика GND к Arduino GND VCC к Arduino + 5V X Pot к Arduino A0 Y Pot к Arduino A1 / * ----- (Импортировать необходимые библиотеки) ----- * / # include  #include "nRF24L01.h" #include "RF24.h" #define CE_PIN 9 # define CSN_PIN 10 # define xAxis 14 // A0 for Arduino UNO # define yAxis 15 // A1 for Arduino UNO // ПРИМЕЧАНИЕ:"LL" в конце константы - это "LongLong" typeconst uint64_t pipe =0xE8E8F0F0E1LL; // Определение канала передачи / * ----- (Объявление объектов) ----- * / RF24 radio (CE_PIN, CSN_PIN); // Создание радио / * ----- (Объявление переменных) ----- * / int joystick [6]; // Массив из 6 элементов, содержащий чтение с джойстика и 4 кнопки int buttonUp =2; int buttonRight =3; int buttonDown =4; int buttonLeft =5; void setup () {Serial.begin (9600); radio.begin (); radio.openWritingPipe (труба); radio.stopListening (); // объявляем pinMode для всех кнопок и начального состояния pinMode (buttonUp, INPUT_PULLUP); pinMode (buttonRight, INPUT_PULLUP); pinMode (buttonDown, INPUT_PULLUP); pinMode (buttonLeft, INPUT_PULLUP); digitalWrite (кнопка вверх, LOW); digitalWrite (buttonRight, LOW); digitalWrite (buttonDown, LOW); digitalWrite (buttonLeft, LOW);} цикл void () {джойстик [0] =analogRead (xAxis); джойстик [1] ​​=analogRead (yAxis); джойстик [2] =digitalRead (buttonUp); джойстик [3] =digitalRead (buttonRight); джойстик [4] =digitalRead (buttonDown); джойстик [5] =digitalRead (buttonLeft); radio.write (джойстик, sizeof (джойстик)); задержка (20); Serial.print ("X ="); Serial.print (analogRead (xAxis)); Serial.print ("Y ="); Serial.print (analogRead (yAxis)); Serial.print ("Вверх ="); Serial.print (digitalRead (buttonUp)); Serial.print ("Right ="); Serial.print (digitalRead (buttonRight)); Serial.print ("Вниз ="); Serial.print (digitalRead (buttonDown)); Serial.print ("Left ="); Serial.println (digitalRead (buttonLeft));} 

Схема

rc_car_tp3A7JlpYw.fzz

Производственный процесс

  1. Цифровые игральные кости Arduino
  2. Игровой контроллер Arduino
  3. Радиоуправляемая машина с джойстиком
  4. Железный человек
  5. Найди меня
  6. Роботизированная рука, напечатанная на 3D-принтере Arduino
  7. Управление увлажнителем Arduino
  8. Счетчик автомобилей с использованием Arduino + Обработка + PHP
  9. NeoMatrix Arduino Pong
  10. Джойстик Arduino