Samochód RC 2,4 GHz sterowany joystickiem za pomocą Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście skonstruujemy robota samochodowego, którym można sterować za pomocą joysticka na bezprzewodowym łączu komunikacyjnym 2,4 GHz. Proponowany projekt jest nie tylko wykonany jako samochód RC, ale możesz dodać swoje projekty, takie jak kamera monitorująca itp. Do samochodu.



Przegląd

Projekt podzielony jest na dwie części: pilota i odbiornika.

Samochód lub podstawa, w której umieszczamy wszystkie komponenty naszego odbiornika może mieć napęd na trzy lub cztery koła.



Jeśli chcesz uzyskać większą stabilność samochodu podstawowego lub chcesz jeździć samochodem po nierównej nawierzchni, na przykład na zewnątrz, zalecamy podstawę samochodową z 4 kołami.

Możesz również użyć samochodu z napędem na 3 koła, który zapewnia większą mobilność podczas skręcania, ale może zapewniać mniejszą stabilność niż napęd na 4 koła.

Samochód z 4 kołami, ale możliwy jest również napęd na 2 silniki.

Pilot może być zasilany baterią 9V, a odbiornik może być zasilany szczelnym akumulatorem kwasowo-ołowiowym 12V, 1,3 AH, który zajmuje mniej miejsca niż akumulator 12V, 7AH i idealnie nadaje się do takich zastosowań peryferyjnych.

Komunikacja w paśmie 2,4 GHz pomiędzy jest nawiązywana za pomocą modułu NRF24L01, który może przesyłać sygnały na odległość od 30 do 100 metrów w zależności od przeszkód między dwoma modułami NRF24L01.

Ilustracja modułu NRF24L01:

Działa na 3,3 V i 5 V może zabić moduł, dlatego należy zachować ostrożność i działa na protokole komunikacyjnym SPI. Konfiguracja pinów jest przedstawiona na powyższym obrazku.

Zdalny:

Pilot składa się z Arduino (zalecane Arduino nano / pro-mini), modułu NRF24L01, joysticka oraz zasilacza bateryjnego. Spróbuj zapakować je do małego pudełka na śmieci, które będzie łatwiejsze w obsłudze.

Schemat ideowy pilota:

Połączenia pinowe modułu NRF24L01 i joysticka przedstawiono na schemacie, jeśli poczujesz jakiekolwiek zamieszanie, zapoznaj się z podaną tabelą połączeń pinów.

Przesuwając joystick do przodu (W GÓRĘ), do tyłu (W dół), w prawo iw lewo, samochód porusza się odpowiednio.

zdalny joystick samochodowy

Zwróć uwagę, że wszystkie połączenia przewodów znajdują się po lewej stronie, to jest punkt odniesienia i teraz możesz przesunąć joystick do przenieść samochód .

Naciskając joystick w osi Z można sterować oświetleniem LED samochodu.

Program do pilota:

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

Na tym kończy się Remote.

Spójrzmy teraz na odbiornik.

Obwód odbiornika zostanie umieszczony w samochodzie bazowym. Jeśli masz jakiś pomysł, aby dodać swój projekt na tej ruchomej podstawie, zaplanuj odpowiednio geometrię umieszczenia odbiornika i projektu, aby nie zabrakło Ci miejsca.

Odbiornik składa się z Arduino, modułu sterownika silnika prądu stałego z podwójnym mostkiem H L298N, białej diody LED, która zostanie umieszczona z przodu samochodu, modułu NRF24L01 oraz akumulatora 12V 1,3AH. Silniki mogą być dostarczane z podstawowym samochodem.

Schemat ideowy odbiornika:

Należy pamiętać, że połączenie między płytą Arduino a NRF24L01 NIE jest pokazane na powyższym schemacie, aby uniknąć pomyłki w okablowaniu. Proszę zapoznać się ze schematem pilota.

Płytka Arduino będzie zasilana przez moduł L298N, który posiada wbudowany regulator 5V.

Biała dioda LED może być umieszczona jako światło czołowe lub możesz dostosować ten pin do swoich potrzeb, naciskając joystick, pin nr 7 obraca się wysoko, a ponowne naciśnięcie joysticka obraca pin w dół.

Proszę zwrócić uwagę na silniki z lewej i prawej strony podane na schemacie odbiornika.

Program dla Odbiorcy:

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

Na tym kończy się odbiornik.

Po zakończeniu projektu, jeśli samochód porusza się w złym kierunku, wystarczy zmienić biegunowość silnika.

Jeśli twój samochód bazowy ma napęd na 4 silniki, podłącz lewe silniki równolegle z tą samą polaryzacją, zrób to samo dla silników po prawej stronie i podłącz do sterownika L298N.

Jeśli masz jakiekolwiek pytania dotyczące tego sterowanego joystickiem samochodu RC 2,4 GHz za pomocą Arduino, możesz śmiało wyrazić w sekcji komentarzy, możesz otrzymać szybką odpowiedź.




Poprzedni: Objaśnienie modułu sterownika silnika prądu stałego L298N Dalej: Prosty obwód cyfrowego miernika przepływu wody wykorzystujący Arduino