Примеры из видео.
Распиновка модуля
Первый пример, передача данных с аналогового входа.:
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe" radio.startListening(); // включаем приемник, начинаем слушать трубу } // radio.stopListening(); // останавливает приём (нужно перед началом передачи) void loop() { int data; if (radio.available()){ // проверяем не пришло ли чего в буфер. radio.read(&data, sizeof(data)); // читаем данные, указываем сколько байт читать Serial.print("data: "); Serial.println(data); } }
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openWritingPipe(pipe); // открываем трубу на передачу. } void loop() { int data = analogRead(0); // читаем значение radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет Serial.print("data: "); Serial.println(data); // delay(1000); }
Второй пример, передача данных с DHT11.:
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 #include <dht11.h> const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" dht11 sensor; RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openWritingPipe(pipe); // открываем трубу на передачу. delay(1000); } void loop() { int data[2]; sensor.read(8); data[0] = int(sensor.temperature); // заполняем массив data[1] = int(sensor.humidity); radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет Serial.print("Humidity (%): "); Serial.println(data[1]); Serial.print("Temperature (oC): "); Serial.println(data[0]); delay(1000); }
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe" radio.startListening(); // включаем приемник, начинаем слушать трубу } // radio.stopListening(); // останавливает приём (нужно перед началом передачи) void loop() { int data[2]; if (radio.available()){ // проверяем не пришло ли чего в буфер. radio.read(&data, sizeof(data)); // читаем данные и указываем сколько байт читать Serial.print("Humidity (%): "); Serial.println(data[1]); Serial.print("Temperature (oC): "); Serial.println(data[0]); } }
Третий пример, передача данных с DHT11 по запросу.:
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe" radio.startListening(); // включаем приемник, начинаем слушать трубу } // // для ПроМини void loop() { int data[2]; if (Serial.available() > 0){ // если чтото пришло в сериал int val = Serial.parseInt(); // читаем в переменную if (val == 1){ // если это 1 radio.stopListening(); // останавливает приём (нужно перед началом передачи) radio.openWritingPipe(pipe); // открываем трубу на передачу. radio.write(&val, sizeof(val)); // отправляем val и указываем сколько байт пакет radio.startListening(); // включаем приемник, начинаем слушать трубу } Serial.flush(); // очищаем буфер } if (radio.available()){ // проверяем не пришло ли чего в буфер. radio.read(&data, sizeof(data)); // читаем данные и указываем сколько байт читать Serial.print("Humidity (%): "); Serial.println(data[1]); Serial.print("Temperature (oC): "); Serial.println(data[0]); } }
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 #include <dht11.h> const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" dht11 sensor; RF24 radio(9, 10); // CE, CSN void setup(){ // Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) // скорость, RF24_250KBPS, RF24_1MBPS или RF24_2MBPS // RF24_250KBPS на nRF24L01 (без +) неработает. // меньше скорость, выше чувствительность приемника. radio.setDataRate(RF24_1MBPS); // мощьность передатчика, RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_MED=-6dBM, radio.setPALevel(RF24_PA_HIGH); radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe" radio.startListening(); // включаем приемник, начинаем слушать трубу // radio.openWritingPipe(pipe); // открываем трубу на передачу. } ////// для UNO void loop() { int data[2]; if (radio.available()){ // проверяем не пришло ли чего в буфер. int val; radio.read(&val, sizeof(val)); // читаем данные и указываем сколько байт читать if (val == 1){ // если пришло 1, radio.stopListening(); // останавливает приём (нужно перед началом передачи) sensor.read(8); // читаем градусник delay(1000); data[0] = int(sensor.temperature); // заполняем массив data[1] = int(sensor.humidity); //отправляем данные radio.openWritingPipe(pipe); // открываем трубу на передачу. radio.write(&data, sizeof(data)); // отправляем данные и указываем сколько байт пакет radio.startListening(); // включаем приемник, начинаем слушать трубу } } }
Платы в формате .lay