Auto RC a 2,4 GHz controllata da joystick con Arduino

Auto RC a 2,4 GHz controllata da joystick con Arduino

In questo post costruiremo un robot per auto che può essere controllato utilizzando un joystick su un collegamento di comunicazione wireless a 2,4 GHz. Il progetto proposto non è solo realizzato come un'auto RC, ma puoi aggiungere i tuoi progetti come telecamera di sorveglianza ecc. Sull'auto.



Panoramica

Il progetto è diviso in due parti il ​​telecomando e il ricevitore.





L'auto o la base, dove posizioniamo tutti i nostri componenti del ricevitore, può essere a tre ruote motrici o quattro ruote motrici.

Se si desidera una maggiore stabilità per l'auto base o se si desidera guidare l'auto su una superficie irregolare come all'aperto, si consiglia la base per auto con 4 ruote.



Puoi anche utilizzare un'auto con base a 3 ruote motrici che ti offre una maggiore mobilità durante la svolta, ma potrebbe fornire meno stabilità rispetto alle 4 ruote motrici.

Un'auto con 4 ruote ma anche 2 motori.

Il telecomando può essere alimentato con una batteria da 9 V e il ricevitore può essere alimentato con una batteria al piombo sigillata da 12 V, 1,3 Ah, che ha un ingombro inferiore rispetto alla batteria da 12 V, 7 Ah e ideale anche per tali applicazioni peripatetiche.

La comunicazione a 2,4 GHz tra viene stabilita utilizzando il modulo NRF24L01 che può trasmettere segnali da 30 a 100 metri a seconda degli ostacoli tra due moduli NRF24L01.

Illustrazione del modulo NRF24L01:

Funziona su 3,3 V e 5 V può uccidere il modulo, quindi è necessario prestare attenzione e funziona sul protocollo di comunicazione SPI. La configurazione dei pin è fornita nell'immagine sopra.

Il remoto:

Il telecomando è composto da Arduino (si consiglia Arduino nano / pro-mini), modulo NRF24L01, joystick e alimentatore a batteria. Prova a metterli in una piccola scatola di spazzatura, che sarà più facile da maneggiare.

Diagramma schematico per telecomando:

Le connessioni dei pin per il modulo NRF24L01 e il joystick sono fornite nello schema, se si avverte qualche confusione, fare riferimento alla tabella di connessione dei pin data.

Spostando il joystick in avanti (SU), retromarcia (Giù), destra e sinistra, l'auto si muove di conseguenza.

joystick per auto a distanza

Si noti che tutti i collegamenti dei cavi sono sul lato sinistro, questo è il punto di riferimento e ora è possibile spostare il joystick su spostare la macchina .

Premendo il joystick sull'asse Z è possibile controllare la luce LED sull'auto.

Programma per il telecomando:

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

Questo conclude il telecomando.

Ora diamo un'occhiata al ricevitore.

Il circuito del ricevitore sarà posizionato sulla vettura base. Se hai qualche idea di aggiungere il tuo progetto su questa base mobile, pianifica la geometria correttamente per posizionare il ricevitore e il tuo progetto in modo da non rimanere senza spazio.

Il ricevitore è composto da Arduino, modulo driver motore CC doppio ponte H L298N, LED bianco che sarà posizionato nella parte anteriore dell'auto, modulo NRF24L01 e batteria 12V, 1.3AH. I motori potrebbero venire con l'auto di base.

Diagramma schematico per ricevitore:

Si prega di notare che la connessione tra la scheda Arduino e NRF24L01 NON è mostrata nello schema sopra per evitare confusione nel cablaggio. Fare riferimento allo schema del telecomando.

La scheda Arduino sarà alimentata dal modulo L298N che ha un regolatore 5V integrato.

Il LED bianco può essere posizionato come luce frontale oppure è possibile personalizzare questo pin in base alle proprie esigenze, premendo il joystick, il pin # 7 si gira in alto e premendo nuovamente il joystick si gira il pin in basso.

Prestare attenzione ai motori dei lati sinistro e destro specificati nel diagramma schematico del ricevitore.

Programma per il ricevitore:

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

Questo conclude il ricevitore.

Dopo aver completato il progetto, se l'auto si muove nella direzione sbagliata basta invertire la polarità del motore.

Se la tua auto di base è a 4 ruote motrici, collega i motori di sinistra in parallelo con la stessa polarità, fai lo stesso per i motori del lato destro e connettiti al driver L298N.

Se hai qualche domanda su questa auto RC a 2,4 GHz controllata da joystick che utilizza Arduino, sentiti libero di esprimere nella sezione commenti, potresti ricevere una rapida risposta.




Precedente: Spiegazione del modulo driver motore CC L298N Avanti: Semplice circuito digitale del misuratore di portata dell'acqua utilizzando Arduino