Устройства на esp8266 своими руками схемы

Добавил пользователь Владимир З.
Обновлено: 10.09.2024

Микросхема ESP8266 – один из самых популярных инструментов для организации беспроводной связи в проектах умного дома. С помощью беспроводного контроллера можно организовывать связь по интерфейсу WiFi, обеспечивая проектам Arduino выход в интернет и возможность дистанционного управления и сбора данных. На основе ESP8266 созданы такие популярные платы как WeMos и NodeMcu, а также огромное количество самодельных проектов. В этой статье, мы узнаем, что из себя представляет ESP82266, какие бывают ее разновидности, как работать с ESP8266 в среде Arduino IDE.

Описание ESP8266

микросхема esp8266

ESP8266 – микроконтроллер с интерфейсом WiFi, который имеет возможность исполнять программы из флеш-памяти. Устройство было выпущено в 2014 году китайской фирмой Espressif и практически сразу же стало популярным.

Контроллер недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:

  • Поддерживает Wi-Fi протоколы 802.11 b/g/n с WEP, WPA, WPA2;
  • Обладает 14 портами ввода и вывода, SPI, I2C, UART, 10-бит АЦП;
  • Поддерживает внешнюю память до 16 МБ;
  • Необходимое питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.

Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем указывается приблизительное количество ОЗУ – 50 кБ.

Особенности платы ESP8266:

  • Удобное подключение к компьютеру – через USB кабель, питание от него же;
  • Наличие встроенного преобразователя напряжения 3,3В;
  • Наличие 4 Мб флеш-памяти;
  • Встроенные кнопки для перезагрузки и перепрошивки;
  • Все порты выведены на плату на две гребенки с шагом 2,5 мм.

Сферы применения модуля ESP8266

  • Автоматизация;
  • Различные системы для умного дома: Беспроводное управление, беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
  • Мобильная электроника;
  • ID метки;
  • Детские игрушки;
  • Mesh-сети.

Распиновка esp8266

Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.

Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.

Распиновка для ESP01 изображена на картинке.

распиновка esp8266

esp8266 описание контактов

  • 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
  • 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
  • 4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
  • 7 и 0 – RXD0 и TXD0, это аппаратный UART, необходимый для перепрошивки модуля.
  • 2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
  • 5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения) .
  • 3 – GPIO2, порт ввода и вывода.

распиновка esp12 esp8266

Основные отличия Ардуино от ESP8266

  • ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
  • Процессор ESP8266 быстрее, чем у Ардуино;
  • Наличие Wi-Fi у ESP8266;
  • ESP8266 потребляеn больше тока, чем для Ардуино;

Программирование ESP8266 в Arduino IDE

Программный комплект разработчика esp8266 включает в себя:

  • Компилятор из пакета GNU Compiler Collection.
  • Библиотеки, стеки протоколов WiFi, TCP/IP.
  • Средство загрузки информации в программу контроллера.
  • Операционная IDE.

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

Можно программировать из среды Arduino IDE. При ее помощи можно легко писать скетчи и загружать их в ESP8266, прошивать ESP8266, при этом не требуется сама плата Ардуино. Arduino IDE поддерживает все виды модулей ESP8266.

В настоящий момент для ESP8266 можно реализовать следующие функции:

  • Основные функции языка Wiring. Управлять портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
  • Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, которые прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() – аналог функции delay(0).
  • Serial и Serial1 (UART0 и UART1). Работа Serial на ESP8266 аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
  • Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать данные read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
  • I2C. Перед началом работы с шиной I2C выбираются шины с помощью функции Wire.pins(int sda, int scl).
  • SPI, OneWire – поддерживаются полностью.

Использование esp8266 для связи Ардуино по WiFi

Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266. Схема подключения для ESP8266-01 представлена на рисунке.

esp8266 подключение

3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.

Для поддержки стабильной работы ESP8266 необходим источник постоянного напряжения на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.

Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:

  • mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
  • softAP(ssid) – нужен для создания открытой точки доступа.
  • softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
  • WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
  • WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
  • printDiag(Serial); – позволят узнать данные о диагностике.
  • WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.

Работа выполняется по следующему алгоритму:

  • Подключение USB-TTL к USB и к ESP.
  • Запуск Arduino IDE.
  • Выбрать в меню инструменты нужный порт, плату, частоту и размер flash-памяти.
  • Файл — Примеры — ESP8266WiFi — WiFiWebServer.
  • Записать в скетче SSID и пароль сети Wi-Fi.
  • Начать компиляцию и загрузку кода.
  • Дождаться окончания процесса прошивки, отсоединить GPIO0 от земли.
  • Поставить скорость 115200.
  • Произойдет подключение, будет записан адрес IP.
  • Открыть браузер, ввести в адресной строке номер IP/gpio/1
  • Посмотреть монитор порта, если к выходу GPIO2 подключен светодиод, он должен загореться.

NodeMCU на базе esp8266

esp8266 nodemcu

NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.

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

Платформа имеет современное API для аппаратного ввода и вывода. Это позволяет сократить количество действий во время работы с оборудованием и при его настройке. С помощью прошивки NodeMCU можно задействовать весь рабочий потенциал для быстрой разработки устройства.

WeMos на базе esp8266

wemos d1 esp8266

WeMos – еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны. Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем. Аналоговый вход 1 с максимальным напряжением 3,2В.

После этого требуется найти пакет esp8266 by ESP8266 и установить его. Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.

Выводы по ESP8266

С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их гораздо более интеллектуальными. Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением – все это становится доступным, когда мы подключаем наш проект по WiFi к интернету. В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.

Сегодня в уроке рассмотрим переменные и математические операции в MicroPython. Научимся попеременно включать 2 светодиода, написав всего 14 строчек кода.

Переменные в MicroPython.

MicroPython основан на Python 3, поэтому типы данных и работа с переменными будет точно такой же, как и в Python.

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Типы данных в Python.

Давайте рассмотрим основные типы данных Python.

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Математические операции в MicroPython.

Математических операций в Python много, поэтому рассмотрим только основные.

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Мигание светодиодом. Оптимизируем код.

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Мигание двумя светодиодами на ESP32 и MicroPython.

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Урок 3. Переменные и математические операции в MicroPython Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост, Led, Программа, Образование, Учеба

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!


Микроконтроллер ESP32 MicroPython. Пример первой программы

Рассмотрим распиновку микроконтроллера ESP32 DEVKIT V1.

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Более подробную информацию о назначении GPIO ESP32 DEVKIT V1 читайте тут.

Рассмотрим, как можно с помощью консоли REPL проводить отладку кода без загрузки в микроконтроллер.

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Определимся с очерёдностью выполнения файлов интерпретатором MicroPython.

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

Микроконтроллер ESP32 MicroPython. Пример первой программы Урок, Видеоблог, Программирование, Esp8266, Esp32, Python, Обучение, Видео, Длиннопост

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

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!


Урок 1. MicroPython ESP32. Установка и настройка IDE

В этом уроке поговорим о том, с чего начать работу с MicroPython. Установим необходимое программное обеспечение.

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

1. Установка Thonny Python IDE.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

2. USB-драйвер для ESP8266 и ESP32.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

3. Загрузите прошивку MicroPython.

Сейчас прошивку для ESP8266 или ESP32 можно с официального сайта.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

Установка прошивки для ESP32 с помощью Thonny Python.

Урок 1. MicroPython ESP32. Установка и настройка IDE Esp8266, Esp32, Python, Видеоблог, Обучение, Видео, Урок, IDE, Программирование, Длиннопост

Подробное описание читайте тут.

Надеюсь моя информация будет полезной.

Спасибо! Всем добра!


Esp8266 нужен совет

Прошу совета у ардуинщиков и еспешников.

Второй год занимаюсь с соседскими детьми Ардуинками частным образом. Дети от 6 до 9 класса. Ребята уже соображают лучше меня.

В основном собирают метеоприборы, но есть и другое. Работаем с уно, нано, мега. В прошлом году закупил esp32 и esp8266. Несколько esp32 использовали для светодиодных матриц 2812b. Другие для сбора данных с датчиков bme280, 1750, uv и других. Через телефон или на дисплей. Короче все работало по sda и scl.

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

Релюшки управляемые нулем и единицей отказываются переключаться от esp8266 и d1 mini. От есп32, меги, уно, нано работают.

Для проверки подключили адресные матрицы. Результат ноль. Сажали рабочии светодиоды через резисторы на землю - не управляются.

Даже самый примитивный код типа:

void setup() <
pinMode(13, OUTPUT);
>
void loop() digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
>

не работает. На еsp8266 нумерация gpio не совпадает с d или пином. Проверяли разные номера. Подключали к разным пинам. Например, ставили пин 4, цепляли рабочий светодиод ко всем выводам, кроме питания и земли поочередно. Ставили принтлайн, в мониторе порта показывается переключение.

Несколько детей и я ищем решение по тематическим форумам. Везде указывают на несоответствие gpio нумерации и нумерации пинов. Например gpio2 это пин 4.

Контроллеры и датчики через i2c работают отлично. А вот на пинах пусто.

Проблема еще в том, что сейчас нано, уно подорожали сильно. Закупил для ребят с Али больше 10 esp8266 версии 340 (у меня 2101).

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

Куда копать, как заставить esp8266 менять состояние пинов? Вернеее не так. Как определить какой именно номер d будет переключаться по команде на пин 2?

Плату в АрдуиноИДЕ версии 1.8.5 я выбираю правильно. Порт и скорост так же.

В начале года начал делать так называемый умный дом, ниже описание того, что получилось и немного деталей.

smart home robot

(Кадр из психоделического советского мультика на тему, “Будет ласковый дождь").

Простая часть

Началось всё с того, что я поставил лампочку в туалете, которая реагирует на присутствие. Идея отказаться от выключателей запала в душу. Установка заняла минуту. Она была неудобной, и выключалась когда не надо.

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

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

  • Светло или темно
  • Дома я или нет
  • Сплю я или нет
  • Есть ли дома гости

Эти основные состояния становятся условиями в сценариях управления.

Как сделать свет управляемым по WiFi?

Между лампочкой и выключателем ставится умное реле. Ум его заключается в том, что оно умеет принимать сигналы на переключение по WiFi в центр управления. Монтируется за 10-20 минут.

Датчики

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

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

На кухне стоит датчик температуры и влажности, от него дом знает, когда надо включать вытяжку: от включенного газа температура повышается. В мирное время он просто даёт посмотреть температуру на кухне.

Датчик освещения даже не буду рассказывать что даёт.

Выключатели

Накупил радиовыключателей, настроил их, чтобы дублировали обычные.

Есть пульт на 4 кнопки, с которого можно включать весь свет и тёплый пол.

Плюс радиокнопок в том, что с ними можно переключать в обе стороны. Если выключить обычным выключателем, то включить можно тоже только с него, а если через радио, то включить можно любым способом (см. ниже). Ещё их легко монтировать: просто положить или приклеить к стене на скотч.

Способы управления

1. Автоматика. Лучший вариант, когда она сработала и сделала то, что ты хотел.

2. Радиовыключатель, он всегда где-то неподалёку.

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

4. Приложение на телефоне. Это неудобно, нужно несколько секунд, чтобы его открыть.

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

Пылесос

Пылесос идёт отдельной графой, он дороже, чем всё остальное вместе взятое ) Про него есть отдельный обзор.

Его я никак не интегрировал, просто поставил на смартфон официальную приложуху и настроил ежедневную уборку. Работает, жалоб нет, все, что есть - в комментах к Youtube обзору.

Голос

Голос у дома то появлялся, то исчезал, в конце года сделал проектик mqtt2tts, который решил эту проблему.

У меня в обеих комнатах стоят компы на Windows, которые почти всегда включены. Поэтому я написал программку, которая:

  • Принимает строку на озвучку через MQTT
  • Если её ещё не озвучивали, запрашивает mp3 у Google
  • Воспроизводит на колонки

Работает неплохо, особенно для повторяющихся строк, компы произносят почти всегда синхронно.

Примеры автоматики

Что произошло Что сделал дом
Я пришёл домой Датчик двери передал сигнал. Дом проверил, нет ли меня дома, если не было, значит я пришёл (меняет состояние “Дома”). Если при этом темно, включает свет.
Кастрюля поставлена на газ Через минуту, когда воздух нагреется, включится вытяжка.
Я был в коридоре, а стал в комнате Включится свет в комнате, если темно и если я не сплю.
Я открыл входную дверь, хотя я дома Включится свет в коридоре на 5 минут, т.к. пришли гости.
Я открыл входную дверь и ушёл Выключается режим “Дом”: свет, вытяжка, тёплый пол отключаются.
Я ставлю телефон на зарядку, находясь дома, вечером Телефон отправит сигнал на переключение режима “Сон” (весь свет выключается, датчики движения перестают включать свет).
Стемнело Если я дома, свет начинает включаться в комнате или кухне, когда я туда захожу. Если я долго нахожусь на кухне, свет в комнате выключится.
Включен прибор, который обычно не нужен надолго Свет в коридоре, вытяжка и тёплый пол включаются на определённое время (5-15 минут), независимо от способа включения.

Надёжность

Работает это всё нестабильно:

  • Сигналы от радиокнопок иногда не долетают, надо нажать кнопку хотя бы полсекунды чтобы она сработала
  • Датчик движения может не сработать (у меня от этого может неправильно определиться направление движения)
  • Датчик температуры и освещения иногда зависает и перестаёт что-либо передавать
  • Иногда процесс выхода из дома не определяется, свет не выключается и горит весь день
  • Бывают ошибки в скриптах
  • Бывает, что глючит роутер и всё перестаёт работать
  • Батарейки в любом из устройств могут сесть, (у меня пока такого не было)

Подробности про внутреннее устройство и фото

Туалет и ванная

Автономные датчики движения в радио диапазоне. Ставится между выключателем и лампочкой, на установку нужно 15 минут работы, 3 клеммы и минимальные знания в электрике, чтобы не соединить фазу с землёй.

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

Датчик в туалете хорошо ловит электрическую зубную щётку и включается на неё )

Это самая надёжная часть умного дома, т.к. самая тупая, поэтому она не отключается.

Кухня

На входе датчик движения Sonoff PIR2.

Свет сделан через Slampher, ничего не надо монтировать, нужно только вкрутить слампер в патрон, а лампочку в него. Сам девайс толстый и некрасивый, смотрите, чтобы подошёл к вашему плафону, в мой шарообразный вошёл еле-еле.

На столе радиовыключатель от кухни.

В районе плиты стоит колонка Irbis A1 с Алисой, через которую можно управлять светом.

Там же вытяжка, подключена через Sonoff S26, у неё есть свой радиовыключатель, т.к. до розетки тянуться далеко.

Датчик температуры-влажности собран на ESP8266 + BME280 + фоторезистора на делителе, воткнутого в аналоговый вход. Вмонтирован в вытяжку, питается по USB длинным удлинителем от USB зарядки. Кстати, открыл для себя Mongoose OS, прошивку для ESP чипов, позволяющую писать на JS, мне так больше нравится, чем на Lua или C.

В районе компа есть управляемая розетка с измерением мощности на Sonoff POW, в неё включается мини-комп или 3д-принтер.

Здесь же лежит мост Sonoff Bridge, который умеет принимать сигналы от радио кнопок и датчиков, транслируя его в MQTT.

Коридор

Sonoff Basic в светильнике, тройной выключатель от всего света на стене, датчик движения.

На входной двери датчик открытия.

Комната

Внутри светильника Sonoff Basic. Датчик движения. Пульт от дома обычно где-то здесь.

Под компом расстелен тёплый пол (в осеннее-весеннее время он переезжает на балкон) на Sonoff POW.

В середине комнаты стоит колонка Станция Мини, слышит тихий разговор из любого угла.

Пылесос живёт здесь:

Пылесос ILIFE A9s по соседству с обычным (который его дополняет)

Прошивка

Все устройства Sonoff я перепрошивал (датчики движения и открытия слишком тупы, чтобы в них была прошивка). Прошивка Tasmota решила мою задачу: отказаться от китайских официальных приложух, которые работают на облаке Amazon AWS и иногда лежат, вместо этого управлять всем по MQTT.

Node-red

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

Вся система работает по локалке (MQTT и Node-red), поэтому перебои с инетом ей не страшны.

Node-red - один из центров управления умным домом, придуман в IBM, написан на NodeJS. Отличается тем, что позволяет через блок-схемы и плагины делать большинство нужных задач. Если не хватает готовых блоков, можно наполнять пустой блок JS кодом. Если заморочиться, можно оформить свой блок в виде плагина (я так не делал).

Он принимает все MQTT сигналы, можно делать с ними что хочешь: связать данные с датчика температуры и вытяжки:

Цепочка в Node-red

Также он даёт возможность собирать простой GUI, который можно запускать на смартфоне или на десктопе, это PWA:

Node-red Dashboard UI

Не буду много про него рассказывать, в общем мне нравится, пока не заблудился в этих блоках, хотя выглядит уже устрашающе (это примерно 25% от всех блоков):

Блоки управления светом в Node-red

Интеграция с Алисой

В конце мая, Яндекс запустил управление умным домом через Алису. Через пару дней все мои установленные переключатели научились переключаться голосом. Штука довольно бесполезная для меня, т.к. план был в том, чтобы всё работало без действий человека. Делал через проект yandex-dialogs-smarthome-mqtt, по ссылке подробности настройки (кодить вам не надо, только конфиг написать).

В начале ноября купил вторую колонку с Алисой, Станцию Мини, поставил в комнате. Теперь я могу из любой части квартиры переключать свет.

Технически тут заморочено: пишется навык для Алисы, который должен понимать специальное API на команды включения-выключения и передавать их по MQTT в шину, откуда Node-red их прочитает и сделает как надо.

Скажу так: надо много желания, чтобы повторить это у себя, желающие находились, но вряд ли это вы )

Для тех, кто хочет недорогих розеток от Sonoff с интеграцией с Алисой: подождите, Яндекс с Sonoff уже начали обсуждать официальную интеграцию (о чём официально заявили в канале Telegram “Около Яндекс Станции”).

  • Пылесос ILife A9s, не взаимодействует с другими, но сам по себе автоматизирует - 17000 рублей
  • Колонка Irbis A1, на кухню - 3000 рублей
  • Колонка Яндекс.Станция мини, в комнату - 4000 рублей
  • Sonoff POW (WiFi розетки с измерением мощности), тёплый пол, розетка для разных целей - 2 x 650 рублей = 1300 рублей
  • Sonoff Basic, свет в комнате и коридоре - 2 x 350 рублей = 700 рублей
  • Sonoff Slampher, свет на кухне - 780 рублей
  • Sonoff S26, ставится между вилкой и розеткой вытяжки - 700 рублей
  • Sonoff Bridge, комплект из моста, датчика движения, открытия двери - 1400 рублей
  • Выключатель 1-кнопочный, для вытяжки - 380 рублей
  • Выключатель 1-кнопочный, для кухни - 470 рублей
  • Выключатель 3-кнопочный, комната-корридор-кухня - 420 рублей
  • Радиопульт 4-кнопочный - 110 рублей
  • Датчики движения Sonoff PIR2 - 2 x 570 рублей = 1140 рублей
  • Тёплый пол 100x80см - 500 рублей
  • Датчики движения, не подключенные к системе (тупые, но автономные), для туалета и ванной - 2 x 130 рублей = 260 рублей
  • Датчик CO2, он ни на что не влияет, просто есть - 1000 рублей (не помню точно)
  • Соединительные клеммы типа Wago - 10 x 10 рублей = 100 рублей

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

Кроме того, есть ещё косвенные траты, не входящие в итоговую версию:

  • Автономная лампочка с датчиком движения (с неё всё началось) - 250 рублей
  • 2 радиопульта потерялись при доставке - 180 рублей
  • Bluetooth-маячок (хотел на себя повесить, чтобы дом знал, где я, не доделал) - 650 рублей
  • Микрофон с умом, который прямо wav вещает по I2C (не знаю даже, что с ним сделать) - 230 рублей
  • Микрофон без ума (хотел заменить встроенный микрофон в Irbis, не дошли руки) - 120 рублей
  • Куча разных датчиков (жесты, температура, влажность, освещение, звук, расстояние) ~ 1500 рублей
  • Россыпь из ESP8266, версия WeMos D1 Mini - 5 x 200 рублей = 1000 рублей
  • Датчик пыли PMS7003 - 950 рублей

Итого 4900 рублей. Того, что можно было не покупать.

Это всё я купил примерно за 2 года.

Выводы

Не скажу, что это всё изменило мою жизнь, конечно, по большому счёту это баловство, очередной домашний проект (домашнее некуда) с большой тратой времени и небольшой пользой. Но я ни о чём не жалею, прикольно же )


Эта статья будет первой из цикла про всевозможные датчики. В ней будут рассмотрены только несколько распространенных атмосферных датчиков. А для начала будут даны общие принципы работы с Wi-Fi модулями типа ESP-8266, создание для них микропрограммы, передача данных с датчиков в систему умного дома MajorDoMo.

Датчики:

  • датчики температуры, влажности, давления…
  • датчик концентрации CO2
  • датчик освещенности
  • датчик движения
  • датчики открытия дверей и окон
  • датчик затопления (протечки)
  • датчик утечки бытового газа
  • датчик дыма.
  • датчик электропотребления

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

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

Далее как обычно рассмотрим самодельные и покупные варианты. Кстати не всегда нужно однозначно отдавать предпочтение тем или другим — можно смело комбинировать.

Датчики своими руками:

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

Микроконтроллер:

Итак, начнём с самодельных вариантов на базе Wi-Fi микроконтроллера ESP8266. Во всех примерах буду использовать плату Wemos D1 mini.

На данном микроконтроллере очень легко можно строить различные комбинированные устройства, совмещающие в себе сразу и какие-то датчики и актуаторы для управления нагрузкой, например, светильник с датчиком освещенности и т.п. К модулю можно подключать кнопки и сенсорные площадки. При чем нажатия кнопок с модуля можно обрабатывать на сервере умного дома. Интересные комбинации можно получить, подключив к модулю миниатюрный OLED дисплей, на который можно сразу выводить текущие значения с датчиков и (или) информацию с сервера умного дома. Для подключения к этой плате без пайки есть несколько разных шилдов, например, плата для подключения внешнего аккумулятора, плата с установленным реле, со слотом для microSD карты и т.п.

Для первоначальной загрузки в плату микропрограммы, не требуются дополнительные адаптеры. Модуль уже имеет на борту встроенный USB-UART адаптер и его достаточно просто подключить к компьютеру через USB. В дальнейшем поддерживается обновление микропрограммы по воздуху (OTA).

Перед тем, как перейти к конкретным решениям необходимо рассмотреть общие правила работы с модулями ESP8266.

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

Создание микропрограммы при помощи конструктора:


Итак, после регистрации на сайте проекта, для создания микропрограммы через конструктор, необходимо:


Загрузка микропрограммы:


Настройка ESP8266:

Для настройки модуля необходимо:




Настройка Majordomo:





Датчики температуры, влажности, давления.

Итак, теперь перейдем к рассмотрению самих датчиков:

DS18B20


Для начала изучим цифровой температурный датчик DS18B20, подключаемый по шине 1-wire. Основные технические характеристики следующие:

  • Диапазон измерения температуры составляет от -55 до +125 °C.
  • Точность: ±0,5°C (в пределах -10…+85 °C)
  • Время получения данных: 750 мс при 12-битном разрешении; 94 мс при 9-битном разрешении
  • Напряжение питания: 3–5,5 В
  • Потребляемый ток при бездействии: 750 нА
  • Потребляемый ток при опросе: 1 мА

Из особенностей следует отметить:

  • На одну линию связи может быть установлено до 20 датчиков (макс. кол-во нужно выставить в конструкторе прошивки перед компиляцией). Каждый DS18B20 имеет свой уникальный цифровой идентификатор, что позволяет принимать данные от нескольких датчиков на одной линии связи.
  • Возможность получения питания от той-же линии связи (паразитное питание). 1 и 3 выводы подключаются на общий провод, а плюс питания через резистор 4,7k подключается к выводу №2 (на длинной линии рекомендуется полноценное питание).
  • Выпускается как в обычном исполнении, так и в закрытом корпусе (герметичной металлической капсуле), что позволяет использовать его под водой, например для контроля температуры воды в аквариуме.

Схема подключения термодатчика к популярной плате Wemos D1 Mini выглядит следующим образом (GPIO5 для примера, можно использовать и другие, только отразить это в настройках микроконтроллера):



После всех манипуляций на главной странице админки контроллера можно увидеть показания с термодатчика, а для доставки данных в систему умного дома лучше всего использовать протокол MQTT, выполнив соответствующие настройки в разделе Servers (при условии, что нужная опция была задана в конструкторе прошивок, подробности ранее в этой статье и в статье про MQTT):


DHT22 (AM2302):


Это комбинированный датчик температуры и влажности, с приемлемой точностью (возможно потребуется начальная калибровка в настройках прошивки WiFi-IoT). Однако существует и более дешёвая версия этого датчика DHT11 (в синем корпусе), которая к использованию не рекомендуется по причине совсем низкой точности. Основные параметры датчика следующие:

  • Питание – от 3 до 5 Вольт;
  • Измерение влажности в интервале от 0% до 100%. Точность измерений от 2% до 5%;
  • Диапазон измеряемых температур – от минус 40 до 125 градусов по Цельсию (точность измерений – 0,5);
  • Частота снятия показаний: одно измерение за 2 секунды.
  • Габаритные размеры: 15,1 мм длина; 25 мм широта; 5,5 мм высота;

Схема подключения к плате D1 Mini следующая:



BME280

Новейший датчик от фирмы BOSH. BME-280 это три в одном: Датчик давления, влажности, температуры, подключается по I2C. Есть так же версия под названием BMP-280 — она менее интересна, т.к. не имеет на борту датчика влажности. Сам датчик очень мелкий, поэтому имеет смысл покупать его сразу в виде модуля (например, как на фото справа). Характеристики у датчика следующие:

  • Рабочее напряжение: 3.3В
  • Диапазон давления: 300-1100hPa
  • Диапазон температур: -40 — +85 °C
  • Диапазон влажности: 0 — 100 %
  • Среднее энергопотребление: во время измерений 2.74 нА, в спящем режиме: 0.1 нА
  • Среднее время измерения: 5.5 мс
  • Точность измерения: Давление — 0.01 hPa (
  • Температурный коффициент смещения: ± 0.12 hPa (средний), эквивалент 1 метра

Схема подключения следующая (Внимание, датчик требует питание 3.3В):


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




Это была тройка пожалуй самых популярных датчиков. Естественно в вышеприведенных вариантах эти датчики (микроконтроллеры) требуют питания от сети, т.к. поддержание Wi-Fi соединения довольно энергозатратно. Как-то может помочь в этой ситуации режим Deep sleep, для активации которого необходимо отметить соответствующую опцию в конструкторе прошивки (в шестеренке указав время бодрствования), затем электрически соединить между собой два вывода микроконтроллера — Reset c GPIO16, а так же настроить интервалы просыпания в разделе MAIN веб-админки Wi-Fi модуля. Но конечно микроконтроллеры, которые используют другие стандарты передачи данных, могут обеспечивать на порядки лучшую энергоэффективность, работая годами от одного комплекта батареек.

Покупные датчики:

Как правило большинство готовых решений имеют батарейное питание и работают по радиоканалу zigbee, z-wave и т.п. Среди готовых датчиков весьма популярны Noolite (433MHz свой протокол), Xiaomi (zigbee), большой ассортимент z-wave совместимых решений и т.п. Более подробно остановлюсь на первом:

Noolite PT111 :


Это датчик температуры и влажности с автономным питанием. Работает по беспроводному протоколу на частоте 433МГц. Основные технические характеристики:

  • Диапазон измерения температуры: -20…+50 °С
  • Диапазон измерения относительной влажности: 1…99 %
  • Точность измерения температуры:
    — в диапазоне от -10 до +50 °С :0,5 °С
    — в диапазоне от -20 до -10 °С: 1 °С
  • Точность измерения влажности: 4,5 %
  • Диапазон рабочих температур / влажности -20… +50 °С / 10…80 %
  • Максимальное рабочее расстояние: 50 м
  • Тип элементов питания датчика: 2 x AAA (LR03)Alkaline 1.5 В
  • Время автономной работы от одного комплекта элементов питания: не менее 1 года
  • Степень защиты корпуса: IP 20

Для получения данных температуры и влажности понадобится шлюз Ноолайт, подключаемый к UART или USB:


По UART можно подключить устройство напрямую, например, к одноплатному компьютеру Raspberry Pi. В версии с USB, кроме наличия USB-UART преобразователя, нет никаких отличий от более дешёвого варианта (без USB).

В систему Majordomo из Маркета дополнений необходимо установить модуль Noolite и выполнить начальные настройки — для ОС Линукс необходимо выбрать Serial Port /dev/ttyUSB0 (как правило). После этого на всякий случай можно перезагрузить Мини ПК.




Данное устройство так же можно использовать автономно совместно с силовыми блоками от Ноолайт для управления нагрузкой без каких-либо дополнительных систем. Таким образом можно получить функционал термостата или гигростата на выбор:

Более подробно про систему Noolite читайте в предыдущей части и на сайте производителя.

Все рассматриваемые датчики установлены у меня дома. Все инструкции из собственного опыта.

Последние пару лет практически все прототипирование несложных IoT-устройств я делаю на NodeMCU, хотя зачастую она и великовата по размеру, и дороговата, и избыточна по функционалу. А все потому, что имела неудачный опыт с ESP-01, которая совершенно не поддавалась прошивке. Сейчас пришло время преодолеть этот барьер и освоить другие железки, от которых мне нужно следующее - Wi-Fi и пины для подключения периферии.

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


Несколько представленных в статье модулей (ESP-01, ESP-07, ESP-12E, ESP-12F) и плат (Goouuu Mini-S1, WeMos D1 mini и NodeMCU V2) базируются на контроллере ESP8266, использование которого позволяет простым и дешевым способом добавить в своё устройство беспроводную связь через Wi-Fi.

Так выглядит модельный ряд модулей на базе чипа ESP8266.


Последняя плата из тех, о которых я расскажу (ESP32 WROOM DevKit v1), построена на контроллере семейства ESP32 - более продвинутой по своим возможностям версии ESP8266.

Все представленные модели можно программировать и загружать прошивки через Arduino IDE точно так же, как при работе с Arduino.

ESP32 WROOM DevKit v1

Настройка среды программирования Arduino IDE

По умолчанию среда IDE настроена только на AVR-платы. Для платформ, представленных ниже, необходимо добавить в менеджере плат дополнительную поддержку.

1) Открываем среду программирования Arduino IDE.


4) В пункте меню Tools (Инструменты) -> Board (Плата) выбираем Boards manager (Менеджер плат).

Находим в списке платформы на ESP8266 и нажимаем на кнопку Install (Установить).


6) Надпись INSTALLED сообщает, что дополнения успешно установлены.


7) Аналогичным образом устанавливаем дополнение для ESP32.


8) Теперь нам доступны к программированию платформы с модулем ESP8266 и ESP32.



Примечание - Также для работы с платами понадобится установить драйверы CH340 (WeMos и Goouuu) и CP2102 (для остальных). Их отсутствие повлияет на то, найдет ли Arduino IDE COM-порт, к которому подключена плата.

Код прошивки

Для прошивки всех используемых ниже модулей используем один и тот же код.

Установка Wi-Fi соединения

Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT

Отправка рандомных значений по температуре ("base/state/temperature") и влажности ("base/state/humidity") каждые 5 секунд (PUB_DELAY)

Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка .

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

Модули на базе ESP8266

Для работы с модулями на базе ESP8266 есть два варианта:

Wi-Fi модуль как самостоятельный контроллер (все представленные модули очень умные: внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE).

В статье будем рассматривать второй вариант - прошивка модулей в виде самостоятельного полноценного устройства. Здесь также есть два варианта прошивки с точки зрения железа:

Через плату Arduino;

Через USB-Serial адаптер.

1. ESP-01

ESP-01 - самый популярный модуль на ESP8266. PCB антенна обеспечивает дальность до 400 м на открытом пространстве.

Внешний вид


Питание

Родное напряжение модуля — 3,3 В. Его пины не толерантны к 5 В. Если вы подадите напряжение выше, чем 3,3 В на пин питания, коммуникации или ввода-вывода, модуль выйдет из строя.

Читайте также: