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


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

Внешний вид веб-сервера на модуле ESP32 и датчике DHT11

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

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

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

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

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

Схема подключения датчика 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.

Поиск веб-хуков в сервисе IFTTT

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

Получение приватного ключа в сервисе IFTTT

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

Создание апплета в сервисе IFTTT

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

Выбор ‘This’ в сервисе IFTTT

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

Выбор Webhooks в сервисе IFTTT

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

Создание триггера в сервисе IFTTT

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

Создание триггера для передачи электронной почты в сервисе IFTTT

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

Ввод параметров триггера в сервисе IFTTT

И на завершающем шаге нажмите ‘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 о том, что температура достигла критического значения.

Email предупреждающее о том, что температура достигла критического значения

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

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

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

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

(Проголосуй первым!)
Загрузка...
380 просмотров

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

Ваш адрес email не будет опубликован.