как оказалось 433 давольно таки слабоват чтоб пробить 3 стены. но отказываться от него не будем так как одна из плат приемника все таки может получать данные и с третей комнаты, и датчики подают сильный сигнал. но для связи розеток и управлением светом решено воспользоваться 2.4ГГц очень хороший мануальчик с описаниями я нашел сдесь спасибо автору завтра получу партия радиомодулей дабы не потерять в закладках статью скопирую сюда пару примеров.
Первый пример, передача данных с аналогового входа.:
#include
#include
#include // 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
#include
#include // 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
#include
#include // https://github.com/maniacbug/RF24
#include
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
#include
#include // 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
#include
#include // 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
#include
#include // https://github.com/maniacbug/RF24
#include
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(); // включаем приемник, начинаем слушать трубу
}
}
}