Рубрики
Проекты на ESP32

Веб-сервер на модуле ESP32 для измерения температуры и влажности

ESP32 представляет собой относительно недорогой микроконтроллер с низким энергопотреблением с интегрированным в него Wi-Fi и двухрежимным Bluetooth. Он поставляется с микропроцессором Tensilica Xtensa LX6 в вариантах с двумя ядрами и одним ядром, содержит встроенную антенну, радиочастотный (RF) симметрирующий трансформатор, усилитель мощности, малошумящий усилитель в тракте приема, фильтры и модули управления мощностью.

Ранее на нашем сайте мы рассматривали подключение датчика DHT11 (создание метеостанции) к платам Raspberry Pi и Arduino, а также к модулю ESP8266. В этой же статье мы рассмотрим создание веб-сервера на основе модуля ESP32 для отображения значений температуры и влажности, считываемых с датчика DHT11. Модуль ESP32 будет считывать значения температуры и влажности с данного датчика и отображать их на веб-странице. Также в нашем проекте мы будем использовать сервис IFTTT для отправки уведомлений по Email в случаях, когда температура будет превышать установленное значение.

Необходимые компоненты

  1. Модуль ESP32 (купить на AliExpress).
  2. Датчик температуры и влажности DHT11 (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Схема проекта

Схема подключения датчика DHT11 к модулю ESP32 представлена на следующем рисунке.

Датчик DHT11 имеет всего 3 контакта, поэтому подключить его к модулю ESP32 достаточно просто. Подключите контакты VCC и GND датчика к контактам 3.3V и GND модуля ESP32. Контакт данных (Data pin) датчика подключите к контакту D2 модуля ESP32.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Настройка сервиса IFTTT

IFTTT представляет собой бесплатный онлайн-сервис, который позволяет пользователям создавать цепочки простых действий с условиями, называемые «рецептами», которые могут формировать определенные события в таких сервисах как Gmail, Facebook, Instagram и Pinterest. Расшифровывается название сервиса IFTTT как “If This Then That” (если произошло ЭТО, то сделать ТО).

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

Вначале войдите в свой аккаунт на сервисе IFTTT. Создайте себе аккаунт на данном сервисе если у вас его еще нет.

Затем в сервисе IFTTT выполните поиск ‘Webhooks’, после чего нажмите на Webhooks в секции Services.

Затем в окне Webhooks (веб-хуков) нажмите на ‘Documentation’ в правом верхнем углу чтобы получить приватный ключ (private key). Скопируйте этот ключ, в дальнейшем он потребуется нам в программе.

После получения приватного ключа создадим апплет (applet) используя сервисы Webhooks и Email. Для создание апплета нажмите на свой профиль, а затем нажмите на ‘Create’ (создать).

Затем в следующем окне нажмите на иконку ‘This’.

Далее выполните поиск Webhooks в строке поиска, затем в результатах поиска нажмите на ‘Webhooks.’

В следующем окне выберите триггер ‘Receive a Web Request’ и в следующем окне введите в качестве имени события temp_event, затем нажмите на create a trigger (создать триггер).

После этого нажмите на ‘Then That’ и затем нажмите на Email.

Далее в следующем окне нажмите на ‘send me an email’ (послать мне email), введите тему и содержание письма, после чего нажмите на create action (создать действие).

И на завершающем шаге нажмите ‘Finish’ чтобы закончить создание апплета.

Объяснение программы для модуля ESP32

В данном проекте мы будем программировать модуль ESP32 с помощью Arduino IDE.

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим используемые библиотеки. Нам понадобятся библиотеки WiFi, DHT (для работы с датчиком DHT) и Wire (для использования протокола I2C).

Далее укажем тип датчика DHT и контакт, к которому он подключен. Создадим объект для работы с данным датчиком.

Затем укажем имя Wi-Fi сети, к которой мы будем подключаться, и пароль для доступа к ней. Также укажем имя хоста сервиса IFTTT и приватный ключ (private key) с данного сервиса.

Далее создадим объект библиотеки WifiServer. Мы будем использовать порт 80 по умолчанию для доступа по HTTP.

Внутри функции Void setup() мы инициализируем последовательную связь со скоростью 115200 бод, инициализируем датчик DHT с помощью функции dht.begin() и затем подключимся к сети Wi-Fi, используя имя пользователя и пароль. Как только модуль ESP32 подключится к сети Wi-Fi, в окно монитора последовательного порта будет выведен IP адрес модуля.

В функции void loop() мы будем считывать значения температуры и влажности и сохранять их в двух различных переменных.

После этого начнем программирование дизайна нашей веб-страницы и выведем скрипт с помощью функции client.println().

Для оформления стиля текста и фона мы будем использовать CSS – вы можете их изменить по своему желанию.

В HTML коде мы будем использовать тэги <div> для отображения наших обоих параметров – температуры и влажности.

Далее с помощью условного оператора if мы будем проверять превысила ли температура значение 20 градусов или нет. Если превысила, то мы будем передавать триггер на сервис IFTTT.

Тестирование работы проекта

Подключите модуль ESP32 к вашему компьютеру/ноутбуку, выберите в Arduino IDE корректную плату и порт, к которому подключен модуль, после чего нажмите кнопку Upload для загрузки программы в модуль.

Убедитесь в том, что ваш компьютер/ноутбук и модуль ESP32 подключены к одной и той же сети Wi-Fi. После загрузки программы в модуль откройте окно монитора последовательной связи и установите в нем скорость 115200. После этого ваше окно монитора последовательной связи должно выглядеть примерно следующим образом:

А формируемая нашим веб-сервером веб-страница будет иметь следующий вид:

Теперь, всегда когда температура будет превышать значение 20 градусов, будет срабатывать событие IFTTT чтобы передать вам email о том, что температура достигла критического значения.

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

8 ответов к “Веб-сервер на модуле ESP32 для измерения температуры и влажности”

как хотите но код не работает третий день всем классом химичем ничего не получается, 7а хотел сделать проект по экологии термометр на плате Вемос Д1 Р32 . Ошибка компиляции для платы. Пожалуйста помогите если вы не фейк и не бот

К сожалению, я нахожусь сейчас в отпуске и не могу в этом помочь. Сочувствую

Если не работает код, приведённый в статье, а вы сами не в состоянии его написать или скорректировать, используйте нейросети для написания кода. Главное правильно сформулировать запрос.

Для любителей можно что то попроще, для детей градусник сделать, без хоста без лишних проблем, просто ПРОСТО ЧТОБЫ РАБОТАЛО .Я ЗАГРУЖАЮ НО ОН ПИШЕТ ОШИБКА КОМПИЛЯЦИИ. УПРОСТИТЕ КОД, ЧТОБЫ БЕЗ ПИСЕМ ВСЯКИХ ХОТЯБЫ. больше дня потратил испсиховался весь ничего не работает. если честно это не мотивирует а отбивает желание заниматься всем этим. только зря деньги тратил на эти чипы

На этих чипах можно сделать много чего другого интересного. Но неужели вы сами не можете убрать из кода все лишнее, оставить только самое простое, а потом, когда он заработает, постепенно добавлять в него новые фрагменты кода. Поймите, очень трудно следить за актуальностью такого большого количества статей на сайте, меняется код библиотек и т.д.

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

где логика? откуда вдруг взялся Емайл, на который по умолчанию без ввода адреса вдруг отправляется письмо????????????? ОБЪЯСНИТЕСЬ ПОЖАЛУЙСТА

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *