77 проектов Arduino
.pdf
Эксперимент 73.
Прием на устройстве команд, отправленных с сайта Народного мониторинга
В этом эксперименте мы рассмотрим отправку команд из сервиса Народный мониторинг на устройство
В эксперименте мы будем использовать следующие компоненты:
Плата Arduino+WiFi – 1;
Кабель USB – 1.
Сервис Народный мониторинг предоставляет возможность отправлять данные с сайта на устройство, что позволяет подключить к домашней метеостанции через реле исполнительные устройства и управлять ими через Интернет. Сначала определим список команд, которые будем отправлять с сайта Народный мониторинг, например:
•relay1=1 – включить реле1;
•relay1=0 – выключить реле1;
•relay2=1 – включить реле2;
•relay2=0 – выключить реле2.
Набрать данные команды можно из своего профиля (пункт меню Профиль Моидатчики),кликнувнассылкуОтправитькомандунаустр-во.Впоявившемся окне вводим команду (рис. 73.1)
Рис.73.1.Ввод списка команд для отправки на устройство
Эксперимент 73 |
333 |
Данный ответ от сервера, добавив символ '$', будем отправлять по последовательному порту на Arduino. Из скетча 71_01 ноебходимо убрать вывод в последовательный порт отладочной информации. Скачать необходимый скетч можно на сайте Arduino-kit по ссылке https://arduino-kit.ru/scetches/ exp_73_01.zip.
Управлять устройствами отправкой команд с сайта не совсем удобно. К счастью есть возможность упростить управление с помощью телефона или планшета с операционной системой Android. Для этого необходить установить на свой телефон (или планшет) приложение Народный мониторинг 2018 из Play Market (рис. 73.4).
Рис.73.4.Приложение Народный мониторинг 2018 в Play Market
После установки приложения, запускаем его, авторизуемся с данными своего профиля в Народном мониторинге и через некоторое время получаем доступ к данным датчиков своей домашней метеостанции (рис. 73.5, 73.6)
Эксперимент 74.
Обработка и исполнение команд, полученных с сайта Народный мониторинг
В этом эксперименте рассмотрим прием и исполнение на домашней метеостанции команд управления отправляемых
с сайта Народного мониторинга
Вэксперименте мы будем использовать следующие компоненты: Плата Arduino+WiFi – 1;
Кабель USB – 1;
Плата прототипирования – 1; Датчик BMP280 – 1;
Датчик DHT11 – 1; Релейный модуль– 1; Провода MM – 8.
Вэксперименте 73 мы настроили отправку с сайта Народного мониторинга
иполучение на модуле ESP8266 команд управления. Теперь рассмотрим перенаправление по последовательному порту данных команд на Arduino, также их исполнение. В домашнюю метеостанцию из эксперимента 72 добавим релейный модуль, к которому можно потом подключить исполнительные устройства, например вентилятор или лампу освещения.
Схема соединений показана на рис. 74.1.
На Arduino необходимо организовать прием и анализ команд, приходящих по последовательному порту. В скетч из эксперимента 72 добавляем сбор в строковую переменную inputString. По получению символа '$' строка скомплектована
ивызывается функция command() для поиска ожидаемых команд:
•relay1=1 – включить реле1;
•relay1=0 – выключить реле1;
•relay2=1 – включить реле2;
•relay2=0 – выключить реле2. Содержимое скетча показано в листинге 74.1.
Эксперимент 74 |
337 |
void setup()
{
//подключение последовательного порта
Serial.begin(115200);
//конфигурация пинов pinMode(pinRelay1,OUTPUT); pinMode(pinRelay2,OUTPUT);
//начальная установка digitalWrite(pinRelay1,HIGH); digitalWrite(pinRelay2,HIGH);
//запуск датчиков DHT,BMP20 dht.begin();
bmp.begin();
}
void loop() {
// проверка прихода строки из последовательного порта if (stringComplete) {
command();
// очистить строку inputString = ""; stringComplete = false;
}
// ждем время паузы if(millis()-millissend>=1000) {
pauseseconds--; if(pauseseconds==0) {
// получение данных
int h = dht.readHumidity(); int t = bmp.readTemperature();
float p = bmp.readPressure()/133.32;
//формирование строки
String str="/get?ID="+IDstr; str=str+"&H1="+String(h); str=str+="&T1="+String(t); str=str+="&P1="+String(p); str=str+="*";
//отправка в последовательный порт
Serial.print(str);
pauseseconds=300;
}
millissend=millis();
Эксперимент 74 |
339 |
Рис.74.2.Получение команд управления по последовательному порту
|
Далее необходимо перевести плату в режим ATmega328 |
ESP8266. |
|||||||
Переключатели необходимо установить следующим образом: |
|
|
|
||||||
|
1 |
2 |
3 |
4 |
5 |
|
6 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
ON |
ON |
OFF |
OFF |
OFF |
|
OFF |
OFF |
|
|
|
|
|
|
|
|
|
|
|
Теперь Arduino и ESP8266 соединены по последовательному порту.
Пробуем отправлять команды управления с сайта и мобильного приложения Народный мониторинг 2018.
Эксперимент 75.
Протокол MQTT.Отправка данных по протоколу MQTT
В этом эксперименте познакомимся с протоколом MQTT для взаимодействия устройств "Интернета вещей" и рассмотрим отправку данных на сервер MQTT
В эксперименте мы будем использовать следующие компоненты:
Плата Arduino UNO – 1;
Кабель USB – 1;
Плата прототипирования – 1;
Датчик BMP280 – 1;
Датчик DHT11 – 1;
Relay shield – 1;
Провода MM – 8.
Наша плата Arduino-WiFi, имея возможность подключения к сети Интернет, может являться устройством IoT ("Интернет вещей"). Рассмотрим самый распространенный протокол взаимодействия устройств IoT – MQTT (Message Queue Telemetry Transport).
Он обладает рядом преимуществ по отношению к другим протоколам:
низкое потребление трафика;
соединение между клиентом и сервером всегда открыто;
не нагружает интернет канал;
отсутствие задержек в передаче данных;
удобная система подписок на топики;
Все это дает возможность мониторинга и управления в режиме реального времени.
Обмен сообщениями в протоколе MQTT осуществляется между клиентом (client), который может быть издателем или подписчиком (publisher/subscriber) сообщений, и брокером (broker) сообщений (например, Mosquitto MQTT). Издатель и подписчик не передают друг другу сообщения напрямую, не устанавливают прямой контакт, могут не знать о существовании друг друга. Издатель отправляет данные на MQTT брокер, указывая в сообщении определенную тему, топик (topic).
