Joystick Dikendalikan 2.4 GHz RC Car Menggunakan Arduino

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam posting ini kita akan membina robot kereta yang dapat dikendalikan menggunakan kayu bedik pada pautan komunikasi tanpa wayar 2.4 GHz. Projek yang dicadangkan bukan hanya dibuat sebagai kereta RC, tetapi anda boleh menambahkan projek anda seperti kamera pengawasan dan lain-lain di dalam kereta.



Gambaran keseluruhan

Projek ini dibahagi kepada dua bahagian alat kawalan jauh dan penerima.

Kereta atau pangkalan, di mana kita meletakkan semua komponen penerima kita boleh menjadi pacuan tiga roda atau pacuan empat roda.



Sekiranya anda mahukan kestabilan lebih banyak untuk kereta asas atau jika anda mahu memandu kereta di permukaan yang tidak rata seperti di luar rumah, disyorkan asas kereta dengan 4 roda.

Anda juga boleh menggunakan kereta asas pacuan 3 roda yang memberi anda mobiliti yang lebih besar semasa membelok tetapi, ia mungkin memberikan kestabilan lebih sedikit daripada pemacu 4 roda.

Sebuah kereta dengan 4 roda tetapi, 2 pemacu motor juga boleh dilaksanakan.

Alat kawalan jauh mungkin dikuasakan dengan bateri 9V dan penerima mungkin dikuasakan dengan bateri asid plumbum tertutup 12V, 1.3 AH, yang mempunyai jejak yang lebih kecil daripada bateri 12V, 7AH dan juga sesuai untuk aplikasi peripatetik seperti itu.

Komunikasi 2,4 GHz antara dibuat dengan menggunakan modul NRF24L01 yang dapat menghantar isyarat sepanjang 30 hingga 100 meter bergantung pada halangan di antara dua modul NRF24L01.

Ilustrasi modul NRF24L01:

Ia berfungsi pada 3.3V dan 5V dapat mematikan modul, jadi harus berhati-hati dan ia berfungsi pada protokol komunikasi SPI. Konfigurasi pin disediakan dalam gambar di atas.

Alat kawalan jauh:

Alat kawalan jauh terdiri daripada Arduino (disyorkan Arduino nano / pro-mini), modul NRF24L01, kayu bedik dan bekalan kuasa bateri. Cuba kemaskannya dalam kotak sampah kecil, yang akan lebih mudah dikendalikan.

Gambar rajah skematik untuk jarak jauh:

Sambungan pin untuk modul NRF24L01 dan kayu bedik disediakan dalam rajah, jika anda merasa ada kekacauan, rujuk jadual sambungan pin yang diberikan.

Dengan menggerakkan kayu bedik ke hadapan (UP), mundur (Bawah), kanan dan kiri, kereta bergerak dengan sewajarnya.

kayu bedik kereta jauh

Harap maklum bahawa semua sambungan wayar berada di sebelah kiri, ini adalah titik rujukan dan sekarang anda boleh menggerakkan kayu bedik ke gerakkan kereta .

Dengan menekan kayu bedik pada paksi Z anda dapat mengawal lampu LED pada kereta.

Program untuk Jauh:

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

Itu menyimpulkan Jauh.

Sekarang mari kita lihat penerima.

Litar penerima akan diletakkan di kereta asas. Sekiranya anda mempunyai idea untuk menambah projek anda di pangkalan bergerak ini, rancang geometri dengan betul untuk meletakkan penerima dan projek anda supaya anda tidak kehabisan ruang.

Penerima terdiri daripada Arduino, modul pemacu motor dual H-bridge DC L298N, LED putih yang akan diletakkan di hadapan kereta, modul NRF24L01, dan bateri 12V, 1.3AH. Motor mungkin dilengkapi dengan kereta asas.

Gambar rajah skematik untuk penerima:

Harap maklum bahawa sambungan antara papan Arduino dan NRF24L01 TIDAK ditunjukkan dalam rajah di atas untuk mengelakkan kekeliruan pendawaian. Sila rujuk skema alat kawalan jauh.

Papan Arduino akan dikuasakan oleh modul L298N yang telah dibina dalam pengatur 5V.

LED putih boleh diletakkan sebagai lampu depan atau anda dapat menyesuaikan pin ini sesuai dengan keperluan anda, dengan menekan joystick, pin # 7 bertukar tinggi dan menekan joystick sekali lagi akan menjadikan pin menjadi rendah.

Perhatikan motor sebelah kiri dan kanan yang dinyatakan dalam rajah skema penerima.

Program untuk Penerima:

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

Itu menyimpulkan penerima.

Setelah menyelesaikan projek, jika kereta bergerak ke arah yang salah, mundurkan motor polariti.

Sekiranya kereta asas anda adalah pemacu roda 4 motor, sambungkan motor kiri selari dengan kekutuban yang sama, lakukan perkara yang sama untuk motor sebelah kanan dan sambungkan ke pemacu L298N.

Sekiranya anda mempunyai pertanyaan mengenai kereta RC 2.4 GHz yang dikendalikan oleh joystick ini menggunakan Arduino, jangan ragu untuk menyatakannya di bahagian komen, anda mungkin akan mendapat balasan cepat.




Sebelumnya: Modul Pemandu Motor L298N DC Dijelaskan Seterusnya: Litar Meter Aliran Air Digital Mudah menggunakan Arduino