Радиоуправляемый автомобиль 2,4 ГГц, управляемый джойстиком, с использованием Arduino

Попробуйте наш инструмент устранения неполадок





В этом посте мы собираемся сконструировать автомобильного робота, которым можно будет управлять с помощью джойстика на линии беспроводной связи 2,4 ГГц. Предлагаемый проект не только выполнен в виде радиоуправляемой машины, но вы можете добавить свои проекты, такие как камера наблюдения и т. Д., На автомобиль.



Обзор

Проект разделен на две части: пульт и приемник.

Автомобиль или база, на которой мы размещаем все компоненты ресивера, может быть трехколесным или четырехколесным.



Если вам нужна большая устойчивость базового автомобиля или если вы хотите водить автомобиль по неровной поверхности, например, на открытом воздухе, то рекомендуется базовый автомобиль с 4 колесами.

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

Возможна также машина с 4 колесами, но с 2-мя моторами.

Пульт дистанционного управления может питаться от батареи 9 В, а приемник может питаться от герметичной свинцово-кислотной батареи на 12 В, 1,3 Ач, которая занимает меньше места, чем батарея на 12 В, 7 Ач, а также идеально подходит для таких периферийных приложений.

Связь между 2,4 ГГц устанавливается с помощью модуля NRF24L01, который может передавать сигналы на расстояние от 30 до 100 метров в зависимости от препятствий между двумя модулями NRF24L01.

Иллюстрация модуля NRF24L01:

Он работает от 3,3 В, а 5 В могут убить модуль, поэтому следует соблюдать осторожность, и он работает по протоколу связи SPI. Конфигурация выводов представлена ​​на изображении выше.

Пульт:

Пульт дистанционного управления состоит из Arduino (рекомендуется Arduino nano / pro-mini), модуля NRF24L01, джойстика и источника питания от батареи. Попробуйте упаковать их в небольшую коробку для мусора, с которой будет легче обращаться.

Принципиальная схема для пульта:

Соединение контактов для модуля NRF24L01 и джойстика показано на схеме, если вы чувствуете какую-либо путаницу, обратитесь к данной таблице соединений контактов.

Перемещая джойстик вперед (ВВЕРХ), назад (Вниз), вправо и влево, автомобиль движется соответственно.

дистанционный автомобильный джойстик

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

Нажимая джойстик по оси Z, вы можете управлять светодиодной подсветкой автомобиля.

Программа для пульта:

//--------------Program Developed by R.Girish---------------//
#include
#include
#include
int X_axis = A0
int Y_axis = A1
int Z_axis = 2
int x = 0
int y = 0
int z = 0
RF24 radio(9,10)
const byte address[6] = '00001'
const char var1[32] = 'up'
const char var2[32] = 'down'
const char var3[32] = 'left'
const char var4[32] = 'right'
const char var5[32] = 'ON'
const char var6[32] = 'OFF'
boolean light = true
int thresholdUP = 460
int thresholdDOWN = 560
int thresholdLEFT = 460
int thresholdRIGHT = 560
void setup()
{
radio.begin()
Serial.begin(9600)
pinMode(X_axis, INPUT)
pinMode(Y_axis, INPUT)
pinMode(Z_axis, INPUT)
digitalWrite(Z_axis, HIGH)
radio.openWritingPipe(address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
}
void loop()
{
x = analogRead(X_axis)
y = analogRead(Y_axis)
z = digitalRead(Z_axis)
if(y <= thresholdUP)
{
radio.write(&var1, sizeof(var1))
}
if(y >= thresholdDOWN)
{
radio.write(&var2, sizeof(var2))
}
if(x <= thresholdLEFT)
{
radio.write(&var3, sizeof(var3))
}
if(x >= thresholdRIGHT)
{
radio.write(&var4, sizeof(var4))
}
if(z == LOW)
{
if(light == true)
{
radio.write(&var5, sizeof(var5))
light = false
delay(200)
}
else
{
radio.write(&var6, sizeof(var6))
light = true
delay(200)
}
}
}
//--------------Program Developed by R.Girish---------------//

На этом Remote.

Теперь посмотрим на приемник.

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

Приемник состоит из Arduino, модуля драйвера двигателя постоянного тока с двойным H-мостом L298N, белого светодиода, который будет размещен в передней части автомобиля, модуля NRF24L01 и аккумулятора на 12 В, 1,3 Ач. Моторы могут поставляться с базовым автомобилем.

Принципиальная схема приемника:

Обратите внимание, что соединение между платой Arduino и NRF24L01 НЕ показано на приведенной выше диаграмме, чтобы избежать путаницы с проводкой. См. Схему пульта ДУ.

Плата Arduino будет питаться от модуля L298N, в который встроен регулятор 5 В.

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

Обратите внимание на левый и правый моторы, указанные на принципиальной схеме приемника.

Программа для получателя:

//------------------Program Developed by R.Girish---------------//
#include
#include
#include
RF24 radio(9,10)
const byte address[6] = '00001'
const char var1[32] = 'up'
const char var2[32] = 'down'
const char var3[32] = 'left'
const char var4[32] = 'right'
const char var5[32] = 'ON'
const char var6[32] = 'OFF'
char input[32] = ''
const int output1 = 2
const int output2 = 3
const int output3 = 4
const int output4 = 5
const int light = 7
void setup()
{
Serial.begin(9600)
radio.begin()
radio.openReadingPipe(0, address)
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
pinMode(output1, OUTPUT)
pinMode(output2, OUTPUT)
pinMode(output3, OUTPUT)
pinMode(output4, OUTPUT)
pinMode(light, OUTPUT)
digitalWrite(output1, LOW)
digitalWrite(output2, LOW)
digitalWrite(output3, LOW)
digitalWrite(output4, LOW)
digitalWrite(light, LOW)
}
void loop()
{
while(!radio.available())
{
digitalWrite(output1, LOW)
digitalWrite(output2, LOW)
digitalWrite(output3, LOW)
digitalWrite(output4, LOW)
}
radio.read(&input, sizeof(input))
if((strcmp(input,var1) == 0))
{
digitalWrite(output1, HIGH)
digitalWrite(output2, LOW)
digitalWrite(output3, HIGH)
digitalWrite(output4, LOW)
delay(10)
}
else if((strcmp(input,var2) == 0))
{
digitalWrite(output1, LOW)
digitalWrite(output2, HIGH)
digitalWrite(output3, LOW)
digitalWrite(output4, HIGH)
delay(10)
}
else if((strcmp(input,var3) == 0))
{
digitalWrite(output3, HIGH)
digitalWrite(output4, LOW)
delay(10)
}
else if((strcmp(input,var4) == 0))
{
digitalWrite(output1, HIGH)
digitalWrite(output2, LOW)
delay(10)
}
else if((strcmp(input,var5) == 0))
{
digitalWrite(light, HIGH)
}
else if((strcmp(input,var6) == 0))
{
digitalWrite(light, LOW)
}
}
//------------------Program Developed by R.Girish---------------//

На этом приемник завершается.

После завершения проекта, если машина движется в неправильном направлении, просто поменяйте полярность двигателя.

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

Если у вас есть какие-либо вопросы относительно этой радиоуправляемой машины 2,4 ГГц, управляемой джойстиком, с помощью Arduino, не стесняйтесь выражать их в разделе комментариев, вы можете получить быстрый ответ.




Предыдущая статья: Модуль драйвера двигателя постоянного тока L298N объяснил Далее: Простая схема цифрового расходомера воды с использованием Arduino