Rangkaian ELektronik untuk receiver ini lebih sederhana, pada dasarnya rangkaiannya sama dengan booster tanpa bluetooth.
Berikut ini skemanya
Selanjutnya kita tinggal menghubungkan ke servo dan motor. Receiver yang akan kita buat ini bisa terhubung dengan 6 servo
Daftar pin yang digunakan untuk servo dan motor
| Servo/Motor | Pin Arduino |
|---|---|
| THROTTLE | D2 |
| RUDDER | D3 |
| ELEVATOR | D4 |
| AILERON | D5 |
| L ELEVON | D6 |
| R ELEVON | D7 |
Namun dalam pesawat jenis simple delta, hanya menggunakan 2 servo dan 1 untuk motor. Sehingga rangkaiannya menjadi seperti ini
| Servo/Motor | Pin Arduino |
|---|---|
| THROTTLE | D2 |
| L ELEVON | D6 |
| R ELEVON | D7 |
Jika digambar, rangkaian kabelnya akan tampak seperti ini:
Arduino Sketch
#include <Servo.h>
#include <nRF24L01.h>
#include <RF24.h>
#define INDEX_THROTTLE 0
#define INDEX_RUDDER 1
#define INDEX_ELEVATOR 2
#define INDEX_AILERON 3
#define INDEX_LELEVON 4
#define INDEX_RELEVON 5
#define CHANNEL_COUNT 6
const byte address[6] = "00001";
RF24 radio(10, 9); // CE, CSN ini pin remote
Servo servos[CHANNEL_COUNT];
byte datareceive[CHANNEL_COUNT];
struct TimeWait
{
unsigned long mytime=0;
boolean waitUntil(unsigned long waittime,boolean autoreset)
{
unsigned long currenttime = millis();
if((currenttime - mytime) > waittime)
{
if(autoreset)
mytime = currenttime;
return true;
}
return false;
}
boolean waitUntil(unsigned long waittime)
{
return waitUntil(waittime,true);
}
void resetoTimeNow()
{
mytime = millis();
}
};
TimeWait autodown;
void setup() {
Serial.begin(9600);
/**setup servo**/
servos[INDEX_THROTTLE].attach(2,1000,2000);
servos[INDEX_RUDDER].attach(3);
servos[INDEX_ELEVATOR].attach(4);
servos[INDEX_AILERON].attach(5);
servos[INDEX_LELEVON].attach(6);
servos[INDEX_RELEVON].attach(7);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MAX);
radio.setDataRate(RF24_250KBPS);
radio.setChannel(8);
radio.startListening();
}
void sendDataToServo()
{
for(int i=0;i<CHANNEL_COUNT;i++)
{
servos[i].write(datareceive[i]);
}
}
void loop()
{
if (radio.available())
{
radio.read(datareceive, CHANNEL_COUNT);
for(int i=0;i<CHANNEL_COUNT;i++){
Serial.print(datareceive[i]);
Serial.print(" ");
}
sendDataToServo();
autodown.resetoTimeNow();
Serial.println();
}
if(autodown.waitUntil(2000))
{
/*auto shutdown brushless motor when remote lose connected after 2000 miliseconds*/
servos[INDEX_THROTTLE].write(0);
}
}