Il s'agit d'une bibliothèque Arduino optimisée de bas niveau pour lire et écrire des registres NRF24L01 (+) en utilisant une interface SPI. Il doit être utilisé en combinaison avec une classe dérivée qui contient des fonctionnalités de lecture, d'écriture et de configuration de niveau supérieur.
Connectez le nrf24l01 (+) à n'importe quelle carte Arduino qui contient:
Les retransmis ou la perte de communication peuvent se produire lors de la connexion directement du NRF24L01 au 3,3 V d'une carte Arduino, car de nombreux cartes Arduino ne peuvent pas fournir suffisamment d'énergie pour la puce NRF24L01. Cela peut être résolu avec un régulateur de tension séparé ou un adaptateur d'alimentation NRF24L01.
Un nordique NRF24L01 ou NRF24L01 (+) émetteur-récepteur sans fil 2,4 GHz connecté à une carte Arduino Uno avec un régulateur de tension de 3,3 V distinct et 100uf ELCO:
Pour augmenter la fiabilité de la communication, utilisez un adaptateur d'alimentation NRF24L01 avec un régulateur de tension de 3,3 V distinct, tel que:
| nrf24l01 + Épingle | nrf24l01 + Fonction | nrf24l01 + adaptateur | Arduino uno / mini | Méga2560 | ESP8266 Nodemcu |
|---|---|---|---|---|---|
| + 3,3 V | 3.3 V direct | - | 3.3 V | 3.3 V | 3.3 V |
| - | + 5V via l'adaptateur | + 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 |
Interface nrf24l01 (+) | Registre
La broche CE doit être contrôlée à l'intérieur de la classe dérivée.
Les bibliothèques suivantes sont utilisées:
# 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);