Zdravím všechny,
po vyzkoušení několik jednoduchých funkcí jako je ovládání servomotorů, komunikace po I2C a pár dalších jsem se dostal k bezdrátovým modulům NRF24l01. 4etl jsem několik tutoriálů, jak tento bezdrátový modul připojit, ale zatím se mi to nepodařilo ve smyslu, že nějaká data odejdou, ale po prvním přijetí dat mi bezdrátový modul neustále vrací „přijaté“ hodnoty, které s odeslanou hodnotou nemají nic společného, vypisuje to samé nuly. Tady uvádím zapojení a kódy:
Zapojení je:
1 – GND
2 – 3V3 (přímo z arduina nano, doplněno o kapacitu)
3 – CE – D9
4 – CSN – D10
5 – SCK – D13
6 – MOSI – D11
7 – MISO – D12
8 – IRQ – nepřipojeno
Kód Master:
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define CE_PIN 9
#define CSN_PIN 10
void setup() {
Wire.begin();
delay(200);
Serial.begin(9600); // RF24
Mirf.spi = &MirfHardwareSpi;
Mirf.cePin = CE_PIN;
Mirf.csnPin = CSN_PIN;
Mirf.init();
Mirf.setTADDR((byte *)“TX_01″); // name the receiving channel – must match tranmitter setting!
Mirf.setRADDR((byte *)“TX_02″); // name the receiving channel – must match tranmitter setting!
Mirf.payload = 5; // number of transmitted bytes
Mirf.channel = 90; // channel 90 as it is outside of WLAN bands , channels used by wireless surveillance cameras
Mirf.config(); //config the device
Mirf.configRegister(RF_SETUP,0x06); // Set 1MHz data rate – this increases the range slightly
Serial.print(„Ready!“);
}
void loop() {
Mirf.send((byte*)“AHOJ“);
while(Mirf.isSending());
delay(1000);
}
Kód pro slave:
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define CE_PIN 9
#define CSN_PIN 10
void setup() {
pinMode (LED, OUTPUT); // Define the LED pin as Output
Serial.begin(9600);
delay(1000);
Mirf.spi = &MirfHardwareSpi;
Mirf.cePin = CE_PIN;
Mirf.csnPin = CSN_PIN;
delay(10);
Mirf.init();
Mirf.setTADDR((byte *)“TX_01″); // name the receiving channel – must match tranmitter setting!
Mirf.setRADDR((byte *)“TX_02″); // name the receiving channel – must match tranmitter setting!
Mirf.payload = 5; // number of transmitted bytes
Mirf.channel = 90; // channel 90 as it is outside of WLAN bands , channels used by wireless surveillance cameras
Mirf.config(); //config the device
Mirf.configRegister(RF_SETUP,0x06); // Set 1MHz data rate – this increases the range slightly
Serial.println(„Nrf24L01 Receiver Started“);
}
void loop() {
byte data[Mirf.payload];
if(Mirf.dataReady()){
Mirf.getData((byte*)&data);
Serial.print(data[0]);
Serial.print(data[1]);
Serial.print(data[2]);
Serial.println(data[3]);
}
}