NRF24L01 2.4 Ghz'de çalışan 125 kanala sahip bir kablosuz alıcı/verici modülüdür. 2Mbps'ye kadar veri hızına 100Mt'ye kadar iletişim mesafesine sahiptir. SPI ile veri transferi sağlar.
Yukarıdaki gibi devreyi kuralım. Arduino IDE ye RF24 kütüphanesini kuralım.
/*
* NRF24L01 Arduino_ Uno Arduino_Mega Blue_Pill(stm32f01C)
* __________________________________________________________________________
* VCC | 3.3v | 3.3v | 3.3v
* GND | GND | GND | GND
* CSN | Pin10 SPI/SS | Pin10 SPI/SS | A4 NSS1 (PA4) 3.3v
* CE | Pin9 | Pin9 | B0 digital (PB0) 3.3v
* SCK | Pin13 | Pin52 | A5 SCK1 (PA5) 3.3v
* MOSI | Pin11 | Pin51 | A7 MOSI1 (PA7) 3.3v
* MISO | Pin12 | Pin50 | A6 MISO1 (PA6) 3.3v
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
//RF24 radio(PB0, PA4); // CE, CSN on Blue Pill
//RF24 radio(PA4, PA3);//stm
const uint64_t address = 0x5443322110ULL;
boolean button_state = 0;
void setup() {
//pinMode(PC13, OUTPUT);//stm
pinMode(13, OUTPUT);
Serial.begin(115200);
radio.begin();
radio.setChannel(76);
radio.setAutoAck(1, true);
radio.setDataRate(RF24_1MBPS);
radio.setCRCLength(RF24_CRC_8);
Serial.print("ADDRESS :");
radio.openReadingPipe(0, address); //Setting the address at which we will receive the data
radio.setPALevel(RF24_PA_MIN);
radio.enableDynamicPayloads(); // *** Dynamic Payload aktif et ***
radio.startListening(); //This sets the module as receiver
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
radio.read(&button_state, sizeof(button_state));
if (button_state == HIGH) {
digitalWrite(13, HIGH);
Serial.println(text);
} else {
digitalWrite(13, LOW);
Serial.println(text);
}
}
delay(5);
}
/*
* NRF24L01 Arduino_ Uno Arduino_Mega Blue_Pill(stm32f01C)
* __________________________________________________________________________
* VCC | 3.3v | 3.3v | 3.3v
* GND | GND | GND | GND
* CSN | Pin10 SPI/SS | Pin10 SPI/SS | A4 NSS1 (PA4) 3.3v
* CE | Pin9 | Pin9 | B0 digital (PB0) 3.3v
* SCK | Pin13 | Pin52 | A5 SCK1 (PA5) 3.3v
* MOSI | Pin11 | Pin51 | A7 MOSI1 (PA7) 3.3v
* MISO | Pin12 | Pin50 | A6 MISO1 (PA6) 3.3v
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const uint64_t address = 0x5443322110ULL;
int button_pin = 2;
boolean button_state = 0;
void setup() {
pinMode(button_pin, INPUT);
radio.begin();
radio.setDataRate(RF24_1MBPS);
radio.setChannel(76);
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening(); //This sets the module as transmitter
}
void loop() {
button_state = digitalRead(button_pin);
if(button_state == HIGH) {
const char text[] = "Your Button State is HIGH";
radio.write(&text, sizeof(text));
} else {
const char text[] = "Your Button State is LOW";
radio.write(&text, sizeof(text));
}
radio.write(&button_state, sizeof(button_state));
delay(1000);
}
Henüz yorum yapılmamış. İlk yorumu siz yapın!