Вот, на всякий случай, скетчи для этой пары.
#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10); // можно использовать любые
const uint32_t pipe = 123456789; // адрес
byte massiv[1];
int ledPin = 3;
void setup()
{
Serial.begin(57600);
Serial.println("Welcome!");
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, 0);
radio.begin();
delay(2000);
radio.setDataRate(RF24_250KBPS); // скорость обмена данными RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
radio.setCRCLength(RF24_CRC_16); // длинна контрольной суммы 8-bit or 16-bit
radio.setPALevel(RF24_PA_MAX); // уровень питания усилителя RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
// соответствует уровням: -18dBm, -12dBm, -6dBM, 0dBm
radio.setChannel(102); // установка канала
radio.setAutoAck(false); // - автоответ.
radio.powerUp(); // включение или пониженное потребление powerDown - powerUp
radio.openWritingPipe(pipe); // открыть канал на отправку
}
void loop()
{
massiv[0] = 255;
digitalWrite(ledPin, 1);
radio.write(massiv, 1);
Serial.println("1 " + String(millis()));
delay(1000);
massiv[0] = 155;
digitalWrite(ledPin, 0);
radio.write(massiv, 1);
Serial.println("0");
delay(1000);
}
#include <ESP8266WiFi.h>
#include <PubSubClient.h> //https://github.com/Imroy/pubsubclient
#include <SPI.h>
#include <RF24.h>
RF24 radio(4, 2);
const uint32_t pipe = 123456789;
byte massiv[4];
const char *ssid = "Igor"; //Имя вайфай точки доступа
const char *pass = "89062385350A"; //Пароль от точки доступа
String espName = "espDostupNRF"; //Имя самой esp8266. Используется для формирования записей MQTT
const char *mqtt_server = "192.168.88.222"; //Имя или IP-адрес сервера MQTT
const int mqtt_port = 1883; //Порт для подключения к серверу MQTT
const char *mqtt_user = ""; //Логин от сервера MQTT
const char *mqtt_pass = ""; //Пароль от сервера MQTT
#define BUFFER_SIZE 100
unsigned long timingIP, timingLed, timingUptime;
int intervalIP = 600; //интервал отправки своего IP-адреса в секундах
int intervalLed = 10; //интервал отправки состояния светодиода в секундах
int intervalUptime = 20; //интервал отправки uptime в секундах
bool LedState = false;
int led = 5;
// Функция получения данных от сервера
void callback(const MQTT::Publish& pub)
{
String payload = pub.payload_string();
if (String(pub.topic()) == espName + "/led") //проверяем из нужного ли нам топика пришли данные
{
int stled = payload.toInt(); //преобразуем полученные данные в тип integer
digitalWrite(led, stled); //включаем или выключаем светодиод в зависимости от полученных значений данных
}
}
WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);
void setup() {
Serial.begin(57600);
Serial.println("Welcome!");
pinMode(led, OUTPUT);
radio.begin();
delay(2000);
radio.setDataRate(RF24_250KBPS); // скорость обмена данными RF24_250KBPS, RF24_1MBPS или RF24_2MBPS
radio.setCRCLength(RF24_CRC_16); // длинна контрольной суммы 8-bit or 16-bit
radio.setPALevel(RF24_PA_MAX); // уровень питания усилителя RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
// соответствует уровням: -18dBm, -12dBm, -6dBM, 0dBm
radio.setChannel(102); // установка канала
radio.setAutoAck(false); // - автоответ.
radio.powerUp(); // включение или пониженное потребление powerDown - powerUp
radio.openReadingPipe(1,pipe); // открыть канал на приём
radio.startListening(); // приём
}
void loop() {
if(radio.available())
{
radio.read(massiv, 1);
if(massiv[0] == 255)
{ ledSend();
}
}
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Connecting to " + String(ssid) + "...");
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
return;
}
Serial.println("WiFi connected");
Serial.println("IP address: " + WiFi.localIP().toString());
Serial.println("Signal strength (RSSI): " + String(WiFi.RSSI()) + " dBm");
}
// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Connecting to MQTT server");
if (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Connected to MQTT server");
client.publish(espName + "/ip", WiFi.localIP().toString());
client.set_callback(callback);
} else {
Serial.println("Could not connect to MQTT server");
}
}
if (client.connected()) {
client.loop();
uptimeSend();
ipSend();
}
}
}
//////////////////////////////////////////////////
void ipSend() {
if (millis() - timingIP > intervalIP * 1000) {
client.publish(espName + "/ip", WiFi.localIP().toString()); //отправляем наш IP-адрес
Serial.println("IP address: " + WiFi.localIP().toString());
timingIP = millis();
}
}
void uptimeSend() {
if (millis() - timingUptime > intervalUptime * 1000) {
client.publish(espName + "/rssi", String(WiFi.RSSI())); //отправляем уровень сигнала
client.publish(espName + "/uptime", String(millis())); //отправляем uptime
Serial.println("Signal strength (RSSI): " + String(WiFi.RSSI()) + " dBm");
Serial.println("Uptime: " + String(millis()));
timingUptime = millis();
}
}
void ledSend() {
client.publish(espName + "/led", String(1) + String(millis())); //отправляем состояние светодиода
Serial.println("Led: 1");
}