Arduino NRF24L01 RC Car Robot Kit
.
Membuat Mobil Remote Kontrol menggunakan Arduino UNO dengan Modul Wireless nRF24L01. Mobil remot kontrol ini berbeda dari mobil remot kontrol mainan biasanya. Karena menggunakan Arduino, jadi mobil remot kontrol ini bisa dimodif sedemikian rupa oleh perancangnya. Misal mau ditambahkan sensor, aktuator, dall.
.
A. ALAT DAN BAHAN
1. Arduino UNO -> 2pcs
Arduino ini digunakan untuk kontroler remot dan robot nya.
2. Modul L298N -> 1pc
Modul L298N ini digunakan sebagai driver motor robot.
3. nRF24L01 -> 2pcs
Modul nRF24L01 ini digunakan untuk komunikasi nirkabel antara Robot dan Remot Kontrol. Sehingga membutuhkan 2 modul, satu untuk transmitter yang dipasang pada remote control dan satu lagi untuk receiver yang dipasang pada robot.
4. JoyStick Shield Gamepad Analog Arduino -> 1pc
Joystick yang terdiri dari beberapa axis. Termasuk axis X dan Y. Selain itu juga terdapat berbagai macam button yang dapat dimanfaatkan untuk berbagai macam fungsi.
5. Smart Car Chassis Kit A30 Sasis -> 1pc
Sasis mobil ini sudah terdiri dari Body Robot, Set Motor Gearbox Kuning + Roda, dan FreeWheel.
6. Baterai 18650 -> 4pcs
2 pcs untuk power Robot. 2pcs lagi untuk power remot kontrolnya.
7. Box Baterai Seri 2x 18650 -> 2pc
8. Saklar -> 1pc
Switch On-Off Power Robot.
9. Kabel Jumper -> Secukupnya (Male-Male 20pcs)
10. Spacer Kuningan 8mm Female to Female - > 8pcs
11. Baut JP m3x5mm -> 8pcs
12. Mur m3 -> 2pcs
13. Baut JF m3x10mm -> 1pcs
.
B. RANGKAIAN / WIRING DIAGRAM / SKEMATIK
1. Rangkaian pada Robot Mobil
.
a) nRF24L01 - Arduino UNO
*VCC - 3.3V
*GND - GND
*CE - D9
*SCN - D10
*SCK - D13
*MOSI - D11
*MISO - D12
.
b) L298N - Arduino UNO
* VCC - Vin
* GND - GND
* In1 - D2
* In2 - D3
* In3 - D4
* In4 - D5
.
2. Rangkaian Pada Remot Kontrol
.
C. PROGRAM
.
Jangan lupa copy-kan library ke file library Arduino di Documents (C).
Library nRF24L01 >> Klik disini...
.
1. Program Robot Mobil (Receiver)
.
#include "NRF24L01.h"
#define TX_ADR_WIDTH 5
#define TX_PLOAD_WIDTH 5
unsigned char RX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};
byte rx_buf[TX_PLOAD_WIDTH] = {};
byte tx_buf[TX_PLOAD_WIDTH] = {};
#define m1 2
#define m2 3
#define m3 4
#define m4 5
void setup()
{ pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
NRF_Init();
NRF_SetRxMode();
}
void motorOut(unsigned char lpwm, unsigned char rpwm, int arrow){
if(arrow==1){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
if(arrow==2){
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
void loop()
{
NRF_SetRxMode();
if(NRF_Receive(rx_buf))
{
for(int i = 0; i < 4; i++)
{
if((rx_buf[0]>120) && (rx_buf[0]<140)) { motorOut(0,0,2);} //stop
if(rx_buf[0] > 130) {motorOut(rx_buf[0],rx_buf[0],2);} // maju
if(rx_buf[0] < 120) {motorOut(255-rx_buf[0],255-rx_buf[0],1);} // mundur
if((rx_buf[0] > 120)&& (rx_buf[0] < 140) && (rx_buf[3] == 0)) {motorOut(0,255,2);} // kiri
if((rx_buf[0] > 120) && (rx_buf[0] < 140) && (rx_buf[2] == 0)) {motorOut(255,0,2);} // kanan
if((rx_buf[0] > 140) && (rx_buf[3] == 0)) {motorOut(125,rx_buf[0],2);} // maju kiri
if((rx_buf[0] > 140) && (rx_buf[2] == 0)) {motorOut(rx_buf[0],125,2);} // maju kanan
if((rx_buf[0] < 120) && (rx_buf[3] == 0)) {motorOut(125,255-rx_buf[0],1);} // mundur kiri
if((rx_buf[0] < 120) && (rx_buf[2] == 0)) {motorOut(255-rx_buf[0],125,1);} // mundur kanan
}
for(int i = 0; i < 9; i++)
rx_buf[i] = 0;
}
}
.
2. Remot Kontrol (Transmitter)
.
#include "NRF24L01.h"
#define TX_ADR_WIDTH 5
#define TX_PLOAD_WIDTH 5
unsigned char TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};
byte rx_buf[TX_PLOAD_WIDTH] = {};
byte tx_buf[TX_PLOAD_WIDTH] = {};
const int X_pin = A1;
const int Y_pin = A0;
const int b = 3;
const int d = 5;
void setup() {
pinMode(b, INPUT);
pinMode(d, INPUT);
NRF_Init();
}
void loop() {
NRF_SeTxMode();
if(NRF_CheckAck())
{
tx_buf[0] = map(analogRead(X_pin), 0, 1023, 0, 255);
tx_buf[1] = map(analogRead(Y_pin), 0, 1023, 0, 255);
tx_buf[2] = digitalRead(b);
tx_buf[3] = digitalRead(d);
NRF_Send(tx_buf);
}
}
.
.
Selamat Mencoba..
www.jogjarobotika.com
.
.
.
.
.
Comments
Leave your comment