Dies ist eine optimierte Arduino-Bibliothek auf niedriger Ebene zum Lesen und Schreiben von NRF24L01 (+) -Registern unter Verwendung einer SPI-Schnittstelle. Es sollte in Kombination mit einer abgeleiteten Klasse verwendet werden, die die Funktionen von Lese-, Schreib- und Konfigurationsfunktionen auf höherer Ebene enthält.
Verbinden Sie das NRF24L01 (+) an eine Arduino -Karte, die enthält:
Wiederaufnahmen oder Kommunikationsverlust können auftreten, wenn die NRF24L01 direkt mit dem 3,3 V eines Arduino -Boards verbunden ist, da viele Arduino -Boards für den NRF24L01 -Chip nicht genügend Strom liefern können. Dies kann mit einem separaten Spannungsregler oder einem NRF24L01 -Leistungsadapter gelöst werden.
A Nordic Nrf24L01 oder NRF24L01 (+) 2,4 GHz Wireless Transceiver, der mit einem Arduino Uno -Board mit einem separaten 3,3 -V -Spannungsregler und 100UF -ELCO verbunden ist:
Um die Kommunikationszuverlässigkeit zu erhöhen, verwenden Sie einen NRF24L01 -Leistungsadapter mit einem separaten 3,3 -V -Spannungsregler, wie z. B.:
| NRF24L01+ Stift | NRF24L01+ Funktion | NRF24L01+ Adapter | Arduino uno/mini | Mega2560 | ESP8266 Nodeemcu |
|---|---|---|---|---|---|
| +3,3 V | 3.3 V Direkt | - - | 3.3 V | 3.3 V | 3.3 V |
| - - | +5 V über Adapter | +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 |
NRF24L01 (+) Schnittstelle | Register Access
Der CE -Pin sollte in der abgeleiteten Klasse gesteuert werden.
Die folgenden Bibliotheken werden verwendet:
# 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);