• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 как вэб-сервер или Wifi мост

Melandr

Member
Добрый день, уважаемые форумчане!
Хотел бы посоветоваться по вопросу использования ESP8266. Собрал на столе два макета. Первый макет это ArduinoUNO+Shield ESP-12. Второй макет Arduino Nano+ESP-01.
В ESP-12 залита прошивка esp-link, к ArduinoUNO подключен датчик BME280 и используется библиотека ELclient для передачи показаний датчика на вэб-странице, которая развернута на ESP. Также ESP8266 подключена к брокеру cloudmqtt.com, а на ардуино также добавлен код для публикации показаний датчика bme280 на брокере. После подачи питания на платы показания датчика исправно отображаются на вэб-странице и публикуются на сервере MQTT. Но через некоторое время показания перестают изменяться на странице и не передаются на сервер MQTT. При этом есть возможность через интерфейс esp-link перезагрузить Arduino UNO, после этого возобновляется передача показаний, которая через некоторое время опять зависает. Скорее всего проблема в коде библиотеки ELclient на ArduinoUNO.
На втором макете используется стандартная прошивка ESP8266 с AT-командами. К Arduino Nano подключен датчик SHT10 и показания этого датчика передаются на сервис https://narodmon.ru/ Эта связка работает гораздо стабильней. Показания, конечно, иногда не передаются, но в целом работает без зависаний.
Данные макеты были собраны для тестирования возможности управления устройством на микроконтроллере AVR (Arduino). Задача стоит принимать по UART от Arduino показания датчиков, состояния цифровых входов, передавать по UART на Arduino задания, управляющие сигналы для цифровых выходов и т.д.
Esp-link понравилось, но ее стабильная работа оставляет желать лучшего. Как вариант решения задачи вижу либо использование вэб-сервера на ESP, либо использование ESP как промежуточного звена между Arduino и сервером на RaspberryPi или OpenWRT (роутер).
Подскажите, какие еще есть варианты использования ESP8266 в связке с Arduino? Так как очень много статей перечитал в интернете, везде описывают подключение датчиков или исполнительных механизмов напрямую к ESP8266. Но мне такой вариант не нравится, так как хоть ESP имеет более производительный микроконтроллер, по сравнению с AVR. Но AVR, например, ATmega2560 имеет довольно большое количество цифровых линий ввода/вывода, чтобы подключить датчики, интерфейсы управления и исполнительные механизмы.
 

CodeNameHawk

Moderator
Команда форума
Подскажите, какие еще есть варианты использования ESP8266 в связке с Arduino?
Напишите свой скетч для есп, в ардуино куча примеров.

У меня на есп (нафига брать ESP-01 если есть ESP-12) запущен веб сервер, по домашней сети можно смотреть состояние котла.
local.png
К есп подключено шесть датчиков температуры и через уарт контроллер котла на Атмега16, там еще 8 датчиков и три реле управления. Есп так же отправляет данные в базу данных на внешний сервер.
На котором можно посмотреть графики.
temp.png
Работает связка стабильно.
 

Melandr

Member
А скетч для ESP писали через ArduinoIDE? WEB-страница хранится на ESP? Или передается построчно с контроллера ATmega16? Передача данных от ATmega16 к ESP по UART через AT-команды?
 

CodeNameHawk

Moderator
Команда форума
А скетч для ESP писали через ArduinoIDE?
Да, но использую Visual Studio Code с Arduino плагином.
WEB-страница хранится на ESP?
В есп.
B есп намного больше памяти, даже есть файловая система. Для этого и надо брать есп 12(E или F) с 32Mbit (4MBait) памяти.
Передача данных от ATmega16 к ESP по UART через AT-команды?
Если в есп залить скетч, то в ней не останется АТ команд.
Данные передаются в текстовом виде , удобно использовать JSON и XML.
 
Последнее редактирование:
Сверху Снизу