Esp8266 подключение через интернет

Управление ESP32/ESP8266 с помощью веб-сервера и физической кнопки

Управление ESP32/ESP8266 с помощью веб-сервера и физической кнопки

В этом руководстве рассмотрим, как управлять выходами ESP32 или ESP8266 одновременно с помощью веб-сервера и физической кнопки. Состояние вывода обновляется на веб-странице независимо от того, было ли оно изменено с помощью кнопки или сервера.

title

Платы ESP32 / ESP8266 будут программироваться с использованием Arduino IDE. Найти информацию о том, как установить ESP32 в Arduino IDE вы можете здесь:

Обзор проекта

Давайте посмотрим, как должен работать проект.

scheme

  • ESP32 или ESP8266 создает веб-сервер, который позволяет управлять выводами;
  • Текущее состояние вывода отображается на веб-сервере;
  • ESP подключен к физической кнопке, которая управляет тем же выходом;
  • При изменении состояния вывода с помощью кнопки, его текущее состояние также обновляется и на веб-сервере.

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

Схема

Прежде чем продолжить, необходимо собрать схему со светодиодом и кнопкой. Подключим светодиод к GPIO 2, а кнопку к GPIO 4.

Требуемые детали

Вот список деталей, необходимых для сборки схемы:

Схема ESP32

scheme2

Схема ESP8266 NodeMCU

scheme_esp8266

Установка библиотек — AsyncWebServer

Вам необходимо установить следующие библиотеки:

  • для ESP32: установите библиотеки ESPAsyncWebServer и AsyncTCP .
  • для ESP8266: – ESPAsyncWebServer и ESPAsyncTCP

Эти библиотеки недоступны для установки через менеджер библиотек Arduino, поэтому вам необходимо перейти в Скетч > Подключить библиотеку > Добавить .ZIP библиотеку и выбрать указанные библиотеки.

Код веб-сервера для ESP

Скопируйте следующий код в свою Arduino IDE.

Источник

Esp8266 управление через интернет по протоколу MQTT

Всем привет! В этой статье будет подробно рассказано и показано как буквально за 20 минут свободного времени настроить дистанционное управление модулем esp8266 с помощью приложения на Android по протоколу MQTT.

Читайте также:  Google карты работает от интернета

Идея дистанционного управления и мониторинга всегда будоражила умы увлеченных в электронике и программировании людей. Ведь возможность в любой момент времени получить или отправить нужные данные, не зависимо от своего местоположения, дает широкие возможности. В своих прошлых статьях ( Статья 1 и Статья 2) я пытался рассмотреть несколько доступных и относительно простых вариантах реализации дистанционного управления микроконтроллерами через интернет. Однако время и весь мир не стоит на месте – прогресс продолжает свое неумолимое движение вперед. За это небольшое время приобрел широкую популярность модуль esp8266 который благодаря низкой цене и встроенному wi-fi стал одним из основных составляющих «Умного дома».

На данный момент MQTT является передовым и наиболее популярным протоколом передачи данных между отдельными устройствами в рамках систем «Умного дома». Он обладает рядом преимуществ по отношению к другим протоколам:
— низкое потребление трафика;
— соединение между клиентом и сервером всегда открыто;
— не нагружает интернет канал;
— отсутствие задержек в передаче данных;
— удобная система подписок на топики;
Всё это дает возможность мониторинга и управления в режиме реального времени. Однако MQTT требует наличие своего собственного сервера, который выполняет роль посредника между клиентами сети. Тут есть два выхода либо создавать свой сервер либо использовать сторонние сервисы.

Описываемая система управления состоит из двух основных частей: сервера MQTT (он как правило один) и клиентов, которых может быть довольно много. В нашем случае в качестве клиентов будут выступать приложение на Android и сам модуль esp8266.

Алгоритм работы системы следующий. Клиенты подключаются к серверу и сразу после подключения каждый из них осуществляет подписку на и интересующие его топики. Всё общение между клиентами проходит транзитом через сервер, который перенаправляет данные другим клиентам с учетом их подписок.

Читайте также:  Интернет макси нет телефон

В нашем случае мы будем использовать крайне удобный сервис www.cloudmqtt.com у которого есть бесплатный тарифный план (Cute Cat), который полностью покроет потребности для реализации небольшой собственной системы «умного дома».

Пройдём регистрацию на сайте и получаем необходимые данные для доступа к серверу. При настройке клиентов необходимо использовать обычный Порт ( без SSL и TLS).

Приложение на Android.

Наше приложение будет выступать в качестве пульта управления для микроконтроллера, а так же будет принимать и отображать всю получаемую информацию от esp8266.

Приложение называется IoT MQTT Dashboard и представляет собой готовый mqtt клиент с небольшим количеством очень удобных виджетов. Более подробно о работе с приложением можно посмотреть на видео.

Модуль прошивается в среде программирования Arduino, однако хочу заметить что у модуля проблемы с прошивкой в последних версиях Arduino, поэтому рекомендую использовать версию 1.6.4.
Для примера к esp8266 подключены светодиод (5 пин) и датчик температуры ds18b20 (2 пин).
Так как для управления светодиода необходимо получать данные, то esp после подключения должно оформить подписку на соответствующий топик «test/led» иначе все отправленные данные пройдут мимо нашего микроконтроллера.
Для отправки данных температуры подписка не нужно, но при передаче значений температуры необходимо указывать топик в который эти данные пойдут.

Ниже приведен скетч с подробными комментариями.

// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char *ssid = «AIRPORT»; // Имя вайфай точки доступа
const char *pass = «PASSWORD»; // Пароль от точки доступа

const char *mqtt_server = «server»; // Имя сервера MQTT
const int mqtt_port = 11140; // Порт для подключения к серверу MQTT
const char *mqtt_user = «Login»; // Логи от сервер
const char *mqtt_pass = «Pass»; // Пароль от сервера

bool LedState = false;
int tm=300;
float temp=0;

// Функция получения данных от сервера

void callback(const MQTT::Publish& pub)
Serial.print(pub.topic()); // выводим в сериал порт название топика
Serial.print(» => «);
Serial.print(pub.payload_string()); // выводим в сериал порт значение полученных данных

Читайте также:  Мегафон домашний интернет карта подключения

String payload = pub.payload_string();

if(String(pub.topic()) == «test/led») // проверяем из нужного ли нам топика пришли данные
int stled = payload.toInt(); // преобразуем полученные данные в тип integer
digitalWrite(5,stled); // включаем или выключаем светодиод в зависимоти от полученных значений данных
>
>

WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);

sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
>

void loop() // подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) Serial.print(«Connecting to «);
Serial.print(ssid);
Serial.println(«. «);
WiFi.begin(ssid, pass);

if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println(«WiFi connected»);
>

// подключаемся к 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.set_callback(callback);
client.subscribe(«test/led»); // подписывааемся по топик с данными для светодиода
> else Serial.println(«Could not connect to MQTT server»);
>
>

if (client.connected()) client.loop();
TempSend();
>

// Функция отправки показаний с термодатчика
void TempSend() if (tm==0)
sensors.requestTemperatures(); // от датчика получаем значение температуры
float temp = sensors.getTempCByIndex(0);
client.publish(«test/temp»,String(temp)); // отправляем в топик для термодатчика значение температуры
Serial.println(temp);
tm = 300; // пауза меду отправками значений температуры коло 3 секунд
>
tm—;
delay(10);
>

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

Видео с демонстрацией работы системы управления

Подробная видеоинструкция по настройке системы

Один из вариантов применения управления esp8266 через MQTT протокол

Управление светодиодной лентой через интернет

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

В архиве находятся скетч и все необходимые библиотеки для прошивки микроконтроллера скетчем из примера.
Обращаю ваше внимание, что библиотека ESP8266WiFi.h не входит в данный архив, она устанавливается через Boards manager в среде Arduino.

Источник

Оцените статью
Adblock
detector