Начало здесь.
MQTT брокер здесь.
Шлюз реализован с помощью библиотеки Mysensors подключенной к программе Arduino. MySensors представляет собой открытую аппаратную и программную платформу.
MQTT Gateway преобразует (в протокол MQTT) и посылает данные, полученные от датчиков по каналу wifi, также принимает входные данные из интерфейса MQTT Ethernet, которые затем рассылает в радиосеть.
Подключение NRF24L01+ к ESP8266.
NRF24L01 расположение контактов.
Подключаем согласно таблице 1.
У радиопередатчика и микроконтроллера между выводами VCC(3.3v) и GND припаиваем конденсатор 6-25 вольт 10-100 микрофарад.
Схему запитаем от стабилизатора AMS1117 3.3V 1A.
Для записи программы в микроконтроллер нам надо собрать следующую схему
Схема подключения ESP8266 к ПК через программатор CH341 или Arduino Uno без микроконтроллера.
Элементы D1, D2, R7, R8 обязательные, так как если подать сигнал амплитудой 5 вольт микросхема ESP8266 может выйти из строя. Также напряжение питания должно быть не больше 3.5 вольт.
К GPIO4, GPIO12, GPIO13, GPIO14, GPIO15, GND и 3.3 V подключен (по таблице 1) радиопередатчик nRF24L01+.
Кнопка SB1 - RESET (сброс).
При нажатии кнопки SB2 и подачи питания ESP8266 переходит в режим программирования.
Программируем шлюз.
Для этого скачиваем и установим на ПК программу Arduino. Включим в программе плату ESP8266 и дополнение MySensors.
Для включения ESP8266 (6) запускаем программу Arduino и в настройках (Дополнительные ссылки для Менеджера плат:) печатаем (или копируем Ctrl+c затем вставляем Ctrl+v) http://arduino.esp8266.com/stable/package_esp8266com_index.json -> OK.
Инструменты -> Плата -> Менеджер плат -> В списке выбираем esp8266 -> и нажимаем установка (начнется загрузка около 150мб и установка платы).
Для включения MySensors запускаем программу Arduino в программе выбираем
Скетч -> Подключить библиотеку -> Управлять библиотеками.
В менеджере библиотек в поиске вводим mysensors. В найденном выбираем версию и нажимаем установка.
После установки MySensors в программе Arduino
Файл -> Примеры -> MySensors -> GatewayESP8266MQTTClient
Откроется текст программы в которой нам надо сделать несколько изменений а именно там где я вставил свои однострочные комментарии.
Однострочный комментарий начинается с // и игнорируется программой. Используется чтобы дать больше информации о том, что выражение выполняет. (7)
//Начало скетча
#define MY_DEBUG
#define MY_BAUD_RATE 9600
#define MY_RADIO_NRF24
#define MY_GATEWAY_MQTT_CLIENT
#define MY_GATEWAY_ESP8266
#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
#define MY_MQTT_CLIENT_ID "mysensors-1"
#define MY_WIFI_SSID "MySSID" // Вместо MySSID пишем название своей WIFI сети например TP-LINK.
#define MY_WIFI_PASSWORD "MyVerySecretPassword" // Вместо MyVerySecretPassword пишем пароль от своей сети WIFI например 12345
#define MY_IP_ADDRESS 192,168,178,87 //Раскомментируем а именно удалим две черты // в начале этой строки и вместо 192,168,178,87 пишем свой статический ip address начало этого адреса (192,168,178) должно совпадать с началом ip адресом роутера а вместо 87 печатаем любой свободный адрес нашей сети.
#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68 // Вместо 192, 168, 178, 68 напишем адрес ПК или устройства на котором установлен MQTT брокер
#define MY_PORT 1883
#include <ESP8266WiFi.h>
#include <MySensors.h>
void setup()
{
}
void presentation()
{
}
void loop()
{
}
//Конец скетча
После внесенных изменений загрузим скетч. Для этого с помощью нажатия кнопки SB2 и подачи питания на ESP8266 (Подключения программатора CH341 или Arduino Uno без микроконтроллера к ПК) переведем его в режим программирования.
В программе Arduino -> Инструменты -> Плата ***** -> Выбираем ESPino (ESP-12 Module) также в Инструментах проверяем чтоб Порт соответствовал номеру порта программатора CH341 или Arduino Uno.
Нажимаем кнопку загрузка
и ждем когда задача будет выполнена.
После удачной загрузки наш MQTT шлюз готов принимать по радио каналу данные от датчиков и отправлять их в WIFI сеть на MQTT брокер.
..........................................Далее соберем узел датчик.