• Обратная связь
  • Карта сайта
  • Отзыв
  • Комментарии
  • Форум
discord
Технические заметки
  • Главная
  • Лекции
  • Практикум
  • Обзоры
  • Сравнение
  • Нормы
  • События
  • Вход
ГлавнаяArduinoУмный домМониторинг
Болид или Рубеж: причины негативного отношения к Рубеж
Как у меня заработал WIFI для Arduino ESP8266 ESP-12E

Мониторинг по интернет загазованности помещения с Arduino UNO и ESP8266 ESP-12E

27 января 2019 г.Просмотров: 5235Комментарии: 0
ArduinoУмный домМониторингArduinoESP8266АвтоматикаИнтернет ВещейМониторинг

Прошлый раз получилось создать простой WEB-сервер на Arduino UNO R3 и ESP8266. Заставим WEB-сервер размещать на WEB-страничке текущие климатические показатели воздуха: загазованность, температуру, влажность.

Конструкция.

Для упрощения конструкции воспользуюсь мультифункциональной платой, которая у меня завалялась, натянув ее на слоеный пирог из двух плат: UNO и ESP8266 ESP-12E UART Wi-Fi и получим три платы, надетые друг на друга.

Использовались именно такие платы:

DHT11 LM35 Temperature Humidity Sensor Multifunction Expansion Board Adapter For Arduino UNO R3 RGB LED IR Receiver Buzzer I2C

ESP8266 ESP-12E UART Wifi Wireless Shield Development Board For Arduino Mega UNO R3 Module Mega 3.3V 5V TTL Interface one

Arduino UNO R3 из состава набора Upgraded Advanced Version Starter Kit the RFID learn Suite Kit LCD 1602 for Arduino UNO R3

На мультифункциональной плате для WEB-сервера климата понадобятся:

  1. DHT11 - датчик температуры и влажности, занимающий на плате контакт D4.
  2. Трехцветный светодиод Full Color LED Module, занимающий контакты D9-D11 - будем использовать для отображения хода WEB подключения к плате.
  3. Синий и красный светодиоды, занимающие контакты D13,D12 - будем зажигать в зависимости от считанного с датчика загазованности цифрового сигнала (есть газ/нет газа). И, заодно, будем видеть что происходит в UNO с выполнением скетча.

Жаль, что на мультифункциональной плате нет датчика загазованности - вообще бы без проводов обошлись.

А так, датчик загазованности MQ-5 подключим к свободным входам на мультифункциональной плате A3, D8.

Программный код.

Напишем такой скетч и загрузим его в Arduino UNO R3.

Скетч.

#include "WiFiEsp.h"    // Библиотека для работы с платой
#include <dht11.h>      // Добавляем библиотеку DHT11
dht11 DHT;              // Объявление переменной класса dht11
#define DHT11_PIN 4     // Датчик DHT11 подключен к цифровому пину номер 4
char ssid[] = "********"; //Имя сети
char pass[] = "********"; //Пароль сети
int status = WL_IDLE_STATUS; //Временный статус
const int analogSignal = A3; //подключение аналогового сигналоьного пина
const int digitalSignal = 8; //подключение цифрового сигнального пина
boolean noGas; //переменная для хранения значения о присутствии газа
int gasValue = 0; //переменная для хранения количества газа
int chk; //переменная для хранения ошибки DHT
WiFiEspServer server(80); // Создать соединение PORT 80
RingBuffer buf(8); // Буфер для увеличения скорости и снежения распределения памяти
void setup(){
  pinMode(digitalSignal, INPUT); 
  Serial.begin(9600); 
  pinMode(LED_BUILTIN, OUTPUT); 
  pinMode(12, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  WiFi.init(&Serial); // Инициализация связи с платой 
  WiFi.config(IPAddress(192,168,1,110)); //Диапазон IP вашей сети
  //НАЧАЛО - поверить, если wi-fi плата подключена к Arduino, подключить беспроводную сеть и запустить ВЕБ-сервер.
  if(WiFi.status() == WL_NO_SHIELD)
  { 
    while (true);
  }
  while(status != WL_CONNECTED)
  {
    status = WiFi.begin(ssid, pass);
  }
  server.begin();
  //КОНЕЦ - поверить, если wi-fi плата подключена к Arduino, подключить беспроводную сеть и запустить ВЕБ-сервер.
}
void loop(){
  WiFiEspClient client = server.available(); // Получение запроса клиента
  if (client) { // Если клиент делает попытку подключения
    digitalWrite(9, HIGH); 
    noGas = digitalRead(digitalSignal); //считываем значение о присутствии газа
    gasValue = analogRead(analogSignal); // и о его количестве
 
    if (noGas){
       digitalWrite(LED_BUILTIN, HIGH); 
       digitalWrite(12, LOW);  
    }
    else
    {
       digitalWrite(LED_BUILTIN, LOW); 
       digitalWrite(12, HIGH); 
    }
    chk = DHT.read(DHT11_PIN);    
    buf.init(); // Инициализация буфера
    while (client.connected()){ // Пока клиент подключен выполнять
      if(client.available()){ // Исли подключение запрошено клиентом выполнять
        char c = client.read(); // Чтение требований клиента
        buf.push(c); // Требования к буферной записи
        digitalWrite(10, HIGH);
        //Определяет конец запроса HTTP и отправляет ответ
        if(buf.endsWith("\r\n\r\n")) {
          digitalWrite(11, HIGH);
          sendHttpResponse(client);
          break;
        }
      }
    }
    client.stop(); //Закончить HTTP запрос и отключить клиента
  }
  else
  {digitalWrite(9, LOW); 
   digitalWrite(10, LOW);
   digitalWrite(11, LOW); 
  }
}
// Построение HTTP ответа
void sendHttpResponse(WiFiEspClient client){
  client.println("HTTP/1.1 200 OK"); 
  client.println("Content-Type: text/html"); 
  client.println("");
  client.println("<!DOCTYPE HTML>"); 
  client.println("<html>"); 
  client.println("<head>"); 
  client.println("<meta charset='UTF-8'>"); //
  client.println("<title>ESP8266 for Arduino</title>"); 
  client.println("</head>"); 
  client.println("<body>"); 
  client.println("<hr />"); 
  client.println("<hr />"); 
  
  client.println(""); 
  if (noGas) client.println("<p style='line-height:0'><font>Загазованность: </font><font color='green'>"+String(gasValue)+ "</font>  Газа нет"); 
  else client.println("<p style='line-height:0'><font>Загазованность: </font><font color='red'>"+String(gasValue)+ "</font>  ОПАСНО! ГАЗ!!!");
  client.println("<p style='line-height:0'><font>Температура: </font><font color='green'>"+String(DHT.temperature)+ "</font>"); 
  client.println("<p style='line-height:0'><font>Влажность: </font><font color='green'>"+String(DHT.humidity)+ "</font>"); 
  client.println("<a href=\"/R\">Обновить</a>"); 
  client.println("<hr />"); 
  client.println("<hr />"); 
  client.println("</body>"); 
  client.println("</html>"); 
  
  delay(1); // 1ms
}

Особенностью процесса загрузки программы в наше устройство является необходимость переключать P1, P2, для чего нелбходимо снимать верхнюю мультифункциональную плату.

Чтобы компьютер увидел Arduino - необходимо переключатели P1, P2 поставить в позицию 0. Но тогда у Arduino не будет связи с ESP8266 ESP-12 ESP-12E UART Wi-Fi.

Чтобы у Arduino появилась связь с EESP8266 - необходимо после загрузки скетча переключатели P1, P2 вернуть в позицию 1.

Переключать туда-сюда приходится часто и я делаю эти переключения, не обесточивая платы. После переключения нажимаю сброс на ESP8266 ESP-12E UART Wi-Fi.

Теперь при обращении по IP-адресу к ESP8266 получаем страничку.

Получение доступа к страничке ESP8266 из WEB.

В том что у нас получилось мало интересного.

А интересно было бы просматривать состояние климата из любой точки, когда никого нет дома.

Один из способов - получение статического IP-адреса.

Думал что в личном кабинете оператора, через которого получаю интернет, можно купить IP-адрес. Оказалось что у мобильных операторов невозможно купить статический IP-адрес частному лицу.

Сторонние же сервисы предоставления статического IP-адреса имеются.

Тарифы, содержащие мало трафика (что подходит для устройств интернета вещей) очень дешевые.

Для пробы воспользовался сервисом Birevia.com. Прочитал инструкцию для своего роутера Zyxel Keenetic 4G II и пробросил IP-адрес на свое Arduino устройство за 40 минут.

IP-адрес устройства сложно запомнить и вводить. Поэтому создал поддомен сайта и сделал редирект на IP-адрес, выделенный Brevia.

Для получения скидки 20% в Birevia.com введите промокод "FILTEC".

Для полноты картины добавить бы еще датчик температуры воды в контуре отопления и датчик количества углекислого газа в воздухе.

Какой еще способ дистанционного мониторинга без IP?

Более интересным выглядит публикация состояний датчиков на каком-нибудь сервере, размещенном в интернет.

Тогда будут видны в любой момент не только текущие показания, но и динамика изменения за период.

Думаю что совсем не сложно будет создать плагин для MaxSite, который будет принимать POST или GET запросы c устройства.

Надо продумать функционал: добавление и удаление устройств, датчиков, построение графиков и т.п.

Этим и займусь.

Еще записи по теме

Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Отправка данных из ESP8266WiFi на сервер с CMS MaxSite
Отправка данных из ESP8266WiFi на сервер с CMS MaxSite
Мониторинг Arduino UNO + ESP8266 через облачный сервер RemoteXY
Мониторинг Arduino UNO + ESP8266 через облачный сервер RemoteXY
Версия 02 плагина My_ESP8266 для MaxSiteCMS.
Версия 02 плагина My_ESP8266 для MaxSiteCMS.
Сравнение показаний двух датчиков DHT11 в динамике.
Сравнение показаний двух датчиков DHT11 в динамике.
Подключаем Arduino UNO при помощи ESP8266-12E  к облаку Cayenne
Подключаем Arduino UNO при помощи ESP8266-12E к облаку Cayenne
Оставьте комментарий.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Выберите для анонимного комментирования (комментарий будет опубликован после проверки).

     

  

Выберите если нужно войти или зарегистрироваться и оставить комментарий от своего аккаунта.

Войти, используя

(обязательно)

Подписка на новости
discord

Email:

Регистрация

Вход через
Разделы
  • Пожарная сигнализация124
    • Инструкции13
    • Проекты2
  • Автоматика58
  • Отопление33
  • Мониторинг30
  • Электрика17
  • Пожаротушение32
  • Умный дом32
  • Arduino12
  • Гаджеты32
  • MaxSite CMS26
Актуальное
  • СП 484
  • Автоматизация теплого пола
  • Болид vs Рубеж
  • С2000-АСПТ
  • ПЦН в кармане
  • Системы противопожарной зашиты
  • Cloud IoT
  • Проектирование
  • Программирование
  • Ссылки
Последние комментарии
Можно ли использовать независимый расцепитель в противопожарных системах
  • Виталий » "Примечание. В статье применяется аббревиатура СПА (системы противопожарной автоматики), которая может резать глаза. Но к ней стоит привыкать, ибо аббревиатуру...
  • Андрей » Неправда Ваша. "Мысль изречённая есть ложь." Но это и не система сигнализации, а система оповещения.
  • Андрей » Замечательная статья, все по делу, все по полочкам, основательный инженерный подход, спасибо! И я тоже проходил подобные искания и копания,...
  • Андрей » Спасибо. Если данный участок расположен внутри щита (шкафа) управления вентиляцией, то контролировать его целостность не требуется, т.к. этот участок не подпадает...
  • Андрей » Думаю для данного случая подходит вариант из п.3.20: "между системой пожарной автоматики и другими инженерными системами" Корпус щита, шкафа вентиляции не является...
Последние загрузки
Все загрузки
Дискуссии на форуме
  • КПБ
  • Выбор ОПС для коттеджа
  • Отключение питания раздвижных дверей при пожарном сценарии.
Реклама

Power Adapter Supply AC 110V/220V To DC 5V 12V 24V Lighting Transformer 1A 2A 3A 5A 6A 8A 10A LED Strip Power Adapter For CCTV

XH-W1411 Thermostat LED Digital Temperature Controller AC 110V 220V 10A Switch Thermometer Smart Temperature Regulator DC 12V

(10pcs/lot) PCT-212/213/214/215 Universal Compact Wire Wiring Connector 2/3/4/5/8 pin Conductor Terminal Block Lever 0.08-2.5mm2

Пожарка 126 Проектирование 99 Болид 64 Лекции 58 Социальное 53 Рубеж 49 Обзор 47 Автоматика 47 Инженерные системы 40 Курьез 36 Практикум 36 Адресные системы 35 Пожаротушение 34 Отопление 33 Интернет Вещей 29 MaxSite 28 ГОСТ 26 Терморегуляторы 24 Облачный Сервис 24 Мониторинг 22 Вентиляция 21 Теплый пол 21 Плагин 21 Сравнение 20 AliExpress 20 Законы Ома 20 ППУ 20 Техобслуживание 19 Эксплуатация 19 СП 484 19 Астра 17 ППК 17 Клапана 15 Электрика 14 С2000-АСПТ 14 Рубикон 13 Arduino 13 Оповещение 13 WiFi 12 С2000М 12 Ritm 11 Гранд Магистр 11 Датчики 11 Насосная Станция 11 ESP8266 10 Юнитест 10 ПЦН 9 ВЭРС 9 Сценарии 8 Авария 8 Жилой дом 8 Taggallery 7 Отзыв 7 Освещение 7 Программирование 7 Сообщества 7 Диспетчеризация 7 Плазма-Т 6 Гаджеты 5 ПО 5 С2000-СП4 5 Спрут-2 5 Радиоканал 4 МПН 4 GeoRITM 4 МПТ 4 Версет 3 Firesec3 3 Гранит 3 РИП 3 Баня 3 Учет ресурсов 3 ИПДЛ 3 Navigard 3 Visio 3 Рубеж-2ОП 3 My_ESP8266 3 Гидравлика 2 Задвижка 2 Zigbee 2 Security Hub 2 ТО 2
  • Обратная связь
  • Карта сайта
  • Отзыв
  • События
  • Комментарии
  • Форум
© Технические заметки 2026. Работает на MaxSite CMS. ( Вход )
Автор не несет ответственность за последствия применения материалов сайта на практике.