Джойстик, управляван с 2,4 GHz RC кола, използваща Arduino

Джойстик, управляван с 2,4 GHz RC кола, използваща Arduino

В тази публикация ще конструираме автомобилен робот, който може да се управлява с помощта на джойстик на 2,4 GHz безжична комуникационна връзка. Предложеният проект не е направен само като RC автомобил, но можете да добавите вашите проекти като камера за наблюдение и т.н. върху колата.



Общ преглед

Проектът е разделен на две части дистанционното и приемника.





Автомобилът или основата, където поставяме всички наши компоненти на приемника, могат да бъдат с три колела или с четири колела.

Ако искате по-голяма стабилност на основния автомобил или ако искате да карате колата в неравна повърхност, като например на открито, тогава се препоръчва автомобилна основа с 4 колела.



Можете също така да използвате основната кола с 3 задвижващи колела, която ви дава по-голяма мобилност при завъртане, но може да осигури по-малка стабилност от задвижването на четирите колела.

Автомобил с 4 колела, но с 2 моторни задвижвания също е осъществим.

Дистанционното може да се захранва с 9V батерия, а приемникът може да се захранва с 12V, 1.3 AH запечатана оловно-киселинна батерия, която има по-малък отпечатък от 12V, 7AH батерия и също идеална за такива перипатетични приложения.

Комуникацията между 2,4 GHz между тях се установява с помощта на модул NRF24L01, който може да предава сигнали на разстояние от 30 до 100 метра в зависимост от препятствията между два модула NRF24L01.

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

Работи на 3.3V и 5V, може да убие модула, така че трябва да се внимава и работи на SPI комуникационен протокол. Конфигурацията на щифтовете е предоставена в горното изображение.

Дистанционното:

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

Схематична диаграма за дистанционно:

Пиновите връзки за модула NRF24L01 и джойстикът са предвидени в схемата, ако усетите объркване, моля, обърнете се към дадената таблица за свързване на щифтове.

Чрез преместване на джойстика напред (НАГОРЕ), назад (Надолу), надясно и наляво, автомобилът се движи по съответния начин.

дистанционен джойстик за кола

Моля, обърнете внимание, че всички жични връзки са от лявата страна, това е референтната точка и сега можете да преместите джойстика на премести колата .

Чрез натискане на джойстика в оста Z можете да управлявате LED светлината на автомобила.

Програма за дистанционно:

//--------------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---------------//

Това завършва дистанционното.

Сега да разгледаме приемника.

Схемата на приемника ще бъде поставена на основната кола. Ако имате някаква идея да добавите вашия проект към тази движеща се основа, планирайте правилно геометрията за поставяне на приемника и вашия проект, така че да не останете без място.

Приемникът се състои от Arduino, L298N двоен H-мостов модул за постоянен ток на двигателя, бял светодиод, който ще бъде поставен в предната част на автомобила, модул NRF24L01 и 12V, 1.3AH батерия. Двигателите може да се доставят с базов автомобил.

Схема на приемника:

Моля, обърнете внимание, че връзката между платката Arduino и NRF24L01 НЕ са показани в горната схема, за да се избегне объркване в окабеляването. Моля, вижте схемата на дистанционното.

Платката Arduino ще се захранва от модул L298N, който има вграден 5V регулатор.

Белият светодиод може да бъде поставен като осветление на главата или можете да персонализирате този щифт според вашите нужди, като натиснете джойстика, щифтът # 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---------------//

Това завършва приемника.

След завършване на проекта, ако колата се движи в грешната посока, просто обърнете полярността на двигателя.

Ако базовата ви кола е с 4 задвижване на колелата, свържете паралелно левите двигатели със същата полярност, направете същото и за дясните мотори и се свържете с драйвера L298N.

Ако имате някакви въпроси относно тази управлявана с джойстик 2.4 GHz RC кола, използваща Arduino, не се колебайте да изразите в раздела за коментари, може да получите бърз отговор




Предишен: Обяснен модул на драйвера за постоянен ток L298N Напред: Обикновена цифрова верига за измерване на водния поток, използваща Arduino