Ini adalah perpustakaan Arduino tingkat rendah yang dioptimalkan untuk membaca dan menulis register NRF24L01 (+) dengan menggunakan antarmuka SPI. Ini harus digunakan dalam kombinasi dengan kelas turunan yang berisi fungsionalitas baca, tulis, dan konfigurasi level yang lebih tinggi.
Hubungkan NRF24L01 (+) ke papan Arduino yang berisi:
Transmit ulang atau kehilangan komunikasi dapat terjadi ketika menghubungkan NRF24L01 langsung ke 3.3V dari papan Arduino, karena banyak papan Arduino tidak dapat memberikan daya yang cukup untuk chip NRF24L01. Ini dapat diselesaikan dengan regulator tegangan terpisah, atau adaptor daya NRF24L01.
Nordic NRF24L01 atau NRF24L01 (+) 2.4GHz transceiver nirkabel yang terhubung ke papan Arduino UNO dengan regulator tegangan 3.3V terpisah dan 100UF Elco:
Untuk meningkatkan keandalan komunikasi, gunakan adaptor daya NRF24L01 dengan regulator tegangan 3.3V terpisah, seperti:
| NRF24L01+ Pin | NRF24L01+ Fungsi | NRF24L01+ adaptor | Arduino uno/mini | Mega2560 | ESP8266 Nodemcu |
|---|---|---|---|---|---|
| +3.3V | 3.3V langsung | - | 3.3v | 3.3v | 3.3v |
| - | +5V melalui adaptor | +5v | +5v | +5v | - |
| 1 | Gnd | Gnd | Gnd | Gnd | Gnd |
| 3 | Ce | Ce | 7 | 7 | D0 |
| 4 | CSN | CSN | 8 | 8 | D8 |
| 6 | Mosi | Mo | 11 | 51 | D7 |
| 7 | Miso | Mi | 12 | 50 | D6 |
| 5 | Sck | Sck | 13 | 52 | D5 |
antarmuka nrf24l01 (+) | Registeraccess
Pin CE harus dikontrol di dalam kelas turunan.
Perpustakaan berikut digunakan:
# include < nRF24L01Iface.h > class nRF24L01Example : nRF24L01Iface
{
public:
// Constructor, initialize base class with SPI clock and SPI chip-select
nRF24L01Example ( uint32_t spiClock, uint8_t cePin, uint8_t csnPin) :
nRF24L01Iface (spiClock, csnPin),
_cePin (cePin)
{
};
// Read status register
uint8_t readStatus () {
// Read status register
return readRegister (REG_STATUS);
}
// Read from config register
uint8_t readConfig () {
// Read config register
return readRegister (REG_CONFIG);
}
// Write to config register
void writeConfig ( uint8_t val) {
// Write to config register
writeRegister (REG_CONFIG, val);
}
// Write to TX pipe (0) registers
void openWritePipe0 ( const uint8_t *address) {
// Write 5 Bytes transmit pipe
// Now pipe 0 cannot be used for receive
writeRegister (REG_TX_ADDR, address, 5 );
}
// More functions such as read and write
// ...
private:
uint8_t _cePin;
}; // CE pin to enable RX and TX modes
# define CE_PIN 7
// SPI chip select pin
# define CSN_PIN 8
// Create object and initialize with SPI clock, CE pin and SPI chip-select pin
static nRF24L01Example radio (( uint32_t )10000000UL, CE_PIN, CSN_PIN); // Read status register
uint8_t status = radio.readStatus();
// Read from config register
uint8_t config = radio.readConfig();
// Write to config register
radio.writeConfig( 0x08 );
// Define an address pipe for transmit
const uint8_t pipeAddress[ 5 ] = { 0x55 , 0xa5 , 0x5a , 0xaa , 0x99 };
// Configure write pipe0
radio.openWritePipe0(pipeAddress);