Professional Documents
Culture Documents
JTD - POLINEMA
MODUL 2
NRF24L01 2.4GHz TRX
PENGANTAR
NRF24L01 adalah piranti Low Power Transceiver yang bekerja pada Band 2.4 sampai 2.4835
GHz dengan kecepatan transfer hingga 2Mbps. Secara umum piranti NRF24L01 ini mempunyai
spesifikasi sebagai berikut:
Tabel 1. Karakteristik Umum NRF24L01
Parameter Nilai Tipikal
Frekuensi Kerja 2.4 GHz sampai 2.4835 GHz
Jumlah kanal 125 kanal
Multiceiver 6 pipe per kanal
Spasi antar kanal 1 MHz atau 2 MHz
Kecepatan Transfer 250 Kbps sampai 2 MBps
Power 0, -6, -12 dan -18 dBm
Interface 4 wire SPI
Dalam bentuk praktis NRF24L01 dikemas dengan runutan kaki sebagai berikut:
Adapun fungsi dari masing – masing kaki dinyatakan sebagaimana Tabel 2. berikut ini
Tabel 2. Fungsi pin SPI pada board NRF24L01
No Pin Fungsi Deskripsi
1 Gnd Power Ground (0)
2 Vcc Power +3.3 V max
Aktifasi Board NRF24L01 dan pengaturan
3 CE Chip Enable
mode TX maupun RX
4 CSN Chip select untuk SPI
5 SCK Digital Input Clock untuk SPI
6 MOSI Digital Input SPI Slave Input
7 MISO Digital Output SPI Slave Output
8 IRQ Digital Output Interrupt
Untuk dapat memanfaatkan fitur-fitur yang dimiliki oleh NRF24L01 menggunakan board
Arduino, para pengembang Arduino telah mengembangkan sebuah library khusus yang disebut RF24
(dapat didownload secara gratis di internet). Berikut ini fungsi-fungsi yang umum digunakan dalam
komunikasi data berbasis NRF24L01.
Tabel 3. Fungsi-fungsi dalam RF24 (hanya yang umum digunakan)
No Sintaks Fungsi
1 RF24( CE, CSN) Constructor dengan penetapan letak pin CE
dan CSN pada Arduino
2 begin( ) Memulai operasi chip NRF24L01
3 openWritingPipe (uint64_t alamat) Open pipe untuk penulisan (Tx)
4 openReadingPipe(uint8_t nomor, Open Pipe untuk pembacaan (Rx), nomor ->
uint64_t alamat) nomor pipe ( 1 - 5), alamat-> alamat 40 bit
5 startListening( ) Mode Rx
6 stopListening( ) Mode Tx
7 available( ) Pengecekan data ada di buffer ata
8 read( *buff, uint8_t panjang) Pembacaan data dari buffer
9 write( *buff, uint8_t panjang) Penulisan data ke buffer untuk dikirim
10 setChannel(uint8_t kanal) Set kanal dari 0 -127
Untuk lebih detilnya lihat pada makalah RF24 Class Reference
WIRELESS NETWORK PROJECT
JTD - POLINEMA
MULTICEIVER
Multiceiver adalah fitur dalam NRF24L01, dimana 1 buah NRF dalam mode Rx (Receiver)
dapat melayani penerimaan data dari 6 buah NRF lain dalam mode Tx pada satu kanal frekuensi.
Secara diagram dapat digambarkan sebagai berikut:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
struct data_s
{
char Kalimat[20];
};
WIRELESS NETWORK PROJECT
JTD - POLINEMA
data_s Data;
void setup()
{
Radio.begin();
Radio.setChannel(100);
Radio.openWritingPipe( addrTx );
delay(200);
}
void loop()
{
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
struct data_s
{
char Kalimat[20];
};
data_s Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(100);
Radio.openReadingPipe(1, addrRx );
Radio.startListening();
delay(200);
}
WIRELESS NETWORK PROJECT
JTD - POLINEMA
void loop()
{
if (Radio.available())
{
Radio.read(&Data, sizeof(Data));
Serial.println(Data.Kalimat);
delay(100);
}
}
#include <SPI.h>
struct payload
{
char Kata[20];
};
payload Data;
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(100); //set berbeda untuk tiap pasangan node
Radio.openReadingPipe(1, pipe);
Radio.startListening();
}
void loop()
{
if ( Radio.available() )
{
Radio.read(&Data, sizeof(Data) );
Serial.println(Data.Kata);
}
WIRELESS NETWORK PROJECT
JTD - POLINEMA
if (Flag == true)
{
Radio.stopListening(); delay(100);
Radio.openWritingPipe(pipe); delay(100);
Radio.write(&Data, sizeof(Data) ); delay(100);
Flag = false;
Radio.startListening();
delay(100);
}
void serialEvent()
{
while (Serial.available() )
{
char data = (char)Serial.read();
Data.Kata[n] = data; n++;
if (data == '_') { Flag = true; n=0; }
}
}