» » Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

 

Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

Автор: admin от 9-04-2015, 12:58, посмотрело: 2435

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

Сегодня практически в любом доме есть Wi-Fi роутер и было бы недальновидно не воспользоваться этим устройством для домашней автоматизации, тем более что сегодня на рынке есть все доступное оборудование для реализации любых идей. Ниже будет представлен вариант создания небольшого электронного устройства, являющегося платформой для построения различных датчиков/исполнительных механизмов на основе Wi-Fi модуля — ESP8266.

Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

Данный модуль хорошо описан здесь, здесь, а на этом сайте вы найдете вообще все, что знает человечество о модуле ESP8266.

Итак, что должно «уметь» устройство:

  • Получать данные с датчика влажности/температуры DHT22;

  • Управлять твердотельным реле (например SSR-25 DA);

  • Подключаться к Wi-Fi роутеру с заданным логином и паролем;

  • Передавать и получать данные через MQTT брокер;

  • Подключаться по USB для отладки и прошивки.



Схема устройства:

Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

Модифкаций модуля ESP8266 очень много (варианты здесь), но, в принципе, отличаются они только размерами, типом антенны и количеством доступных портов ввода-вывода. Я использовал модуль ESP8266 ESP-01:

Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

У него всего два порта (не считая USART) — GPIO0, GPIO2, но для моих целей достаточно, один порт — для датчика и второй — для управления нагрузкой.

Интерфейс USB реализуется USB-USART преобразователем CH340G.

Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

Здесь описанно его подключение к 3.3 и 5В логике. Микросхема очень дешевая и удобная в использовании. Из обвязки только кварцевый генератор на 12MHz и пара конденсаторов. В итоге у вас с одной стороны USART, а с другой — USB. На PC устройство отображается как виртуальный последовательный порт.

Для управления нагрузкой я использовал пару транзисторных ключей. Почему так — спросит прожженный электронщик внимательный читатель. Все дело в том, что напряжение питания может быть разным, а мне хотелось, чтобы реле управлялось напряжением=напряжению питания. При использовании pnp транзистора, ток эмиттера (при напряжении питания > напряжения модуля ESP8266) пойдет в модуль, что совсем не хорошо. Использовать только npn транзистор я не мог, так как тогда порт GPIO0 все время будет подтянут к минусу, а в этом случае модуль будет входить в режим программирования каждый раз, когда мы рестартим модуль. Таким образом, подключив pnp + npn транзисторы, я управляю минусом реле.

Датчик DHT22:

Многофункциональный датчик температуры/влажности на ESP8266 или еще один шаг к «интернету вещей»

Не требует никакой дополнительной обвязки и подключается прямо к модулю ESP. Ему нужен только один порт для обмена данными(интерфейс подобный 1-wire).

Так же на схеме:

  • Перемычка JP2 — для прошивки модуля. Перемычка подтягивает GPIO0 к минусу. В рабочем режиме — разомкнута, во время прошивки — замкнута);

  • Кнопка S1 — reset модуля;

  • Разъем SV1 — подключение реле;

  • Разъем J1 — гнездо питания;

  • Разъем JP1 — micro USB мама.


Питается устройство 5 — 12В.

Теперь поговорим о программном обеспечении.

Есть такой проект NodeMCU. На мой взгляд, очень крутая штука. Небольшая ОС, которая может выполнять ваши lua-скрипты прямо на ESP8266. NodeMCU умеет работать с кучей протоколов из коробки, может поднять web сервер, создать TCP соединение…

В начале прошиваем в наш модуль NodeMCU. Инструкция по прошивке.

После того, как модуль прошит, можно загружать наши скрипты. Способов множество, но лично мне нравится утилита ESPlorer — очень удобная софтина не только для загрузки скриптов, но и для разработки, дебага скриптов.

Теперь более подробно. Нам нужно залить три скрипта:




Здесь есть нюанс. К сожалению, внешней флэш памяти модуля не достаточно для загрузки NodeMCU и моих скриптов, поэтому я использую следующее «костыльное» решение: загружаю один скрипт, выполняю команду node.compile(«dht22.lua») — данная команда компилирует скрипт в «dht22.lc», в результате он занимает меньше места и во флэш памяти и в оперативной памяти, та как потом NodeMCU будет загружать его в память во время выполнения основного скрипта. Потом удаляем нескомпилированный скрипт командой file.remove («dht22.lua»). Проделываем те же манипуляции с main.lua. Последним загружаем init.lua скрипт, его уже не компилируем. Рестартим модуль.

На старте NodeMCU выполнит «init.lua» скрипт, который в свою очередь запустит «main.lua». «main.lua» скрипт будет коннектится к сети, отправлять данные в COM порт и в сеть на заданный mqtt брокер.

Более подробно по скриптам отвечу в комментариях.

Ну, вроде бы все. Если тема интересна, в следующей статье расскажу про mqtt брокер и подключение всего этого дела к Openhab.

Спасибо за внимание.

Источник: Хабрахабр

Категория: Программирование, Веб-разработка, Сделай Сам

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

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *