Esp32 умный дом своими руками

Добавил пользователь Евгений Кузнецов
Обновлено: 18.09.2024

sokwert

Всем привет! Ведём разработку интересного проекта на базе микроконтроллеров ESP32/ESP8266, хотим пригласить всех желающих, принять участие в его бета-тестировании. Ниже будет представлено краткое описание данного проекта, так как информации довольно много и ее сложно уложить в рамках одного поста. Более детально можно ознакомиться с проектом на его официальной странице.

Что за проект?
Проект представляет собой специальную разработанную прошивку и систему WEB-управления (конфигурации) устройства. С помощью системы можно составить разнообразные автоматизированные автономные сценарии для работы устройства и подключенных к нему реле. Система поддерживает аналоговые датчики, датчики температуры, реле, расширитель портов, GSM-модем, считыватель ключей (RW1990), экран, кнопки. Для наиболее важных конфигурационных параметров дополнительно продублирована возможность конфигурации с помощью SD карты.

Автономная работа
Работа устройств полностью автономна и не зависит от доступа в Интернет.

Удаленное управление
Управление устройством осуществляется удаленно через web-интерфейс.

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

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

Мониторинг/Логирование
Постоянный мониторинг работы устройства и установленных датчиков.

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

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


Всем доброго времени суток. Модуль ESP32-CAM стал сразу хитом среди “самодельщиков”, как только он вышел. Это получилось потому, что модуль весьма дешевый. И так как эта камера за +-5$ она конечно-же стала многим интересна.

С этой камерой есть много примеров разных. Например, вещание видео по Web интерфейсу, по rtsp протоколу, отправка фото в телеграмм и так далее. И эти все примеры есть у меня на сайте. Если хотите с ними познакомиться то вот ссылки:

В этой же статье пойдем еще дальше. Я активно сейчас изучаю Home Assistant и ESPHome. И у меня возник вопрос, а можно подключить ESP32-CAM в Home Assistant и как оказалось это можно сделать.

Существует несколько таких способов. Например, можно залить скетч с вещанием в web интерфейс видео и просто добавить это картинкой в Home Assistant. Или можно залить скетч с потоком rtsp и добавить rtsp камеру в Home Assistant (Об этом расскажу как-нибудь в другой статье).

Но в этой статье поговорим о более интересном способе на мой взгляд.

Существует способ добавление ESP32-CAM в ESPHome. И уже ESPHome отлично интегрируется с Home Assistant.

Помимо камеры Ai-Thinker(Она же ESP32-cam) Там есть возможность добавления таких камер как: M5Stack Camera, Wrower kit board, TTgo T-camera v05, TTgo T-camera v162, TTgo T-camera v17, TTgo T-JOURNAL, TTgo T-camera Plus, TTgo T-camera mini.

У всех этих камер разная распиновка. По этому если у Вас имеется какая-то из этих камер, то нужно перейти по ссылке выше на сайт ESPHome и найти конфиг под ваш модуль.

Ну а скрипт под модуль Ai-Thinker(Она же ESP32-cam) выглядит следующим образом:

Ну и все. В ESPHome создаем новое устройство. После этого открываем редактирование этого созданного устройства, добавляем этот код туда. Сохраняем и загружаем в модуль ESP32-cam.

Но чтоб залить скрипт, нам нужно для начала подключить программатор к модулю ESP32-cam по вот такой схеме:


После загрузки программы, нужно отключить устройство от питания и убрать перемычку. Затем заново подать питание и модуль ESP32-cAm подключится к указанной вами wi-fi сети.

После этого в Home Assistant заходим в Настройки->Интеграции и там добавляем новую интеграцию ESPHome . Вбиваем там ip адрес нового устройства ESP32-cam. И камера будет добавлена в Home Assistant.

Чтоб ее вывести на главный экран, нужно добавить карточку под названием “Picture Glance” и в настройках этой карточки в графе “Объект камеры” Выбрать нашу новую появившуюся камеру. И после этого будет выглядеть все это следующим образом:


Уроки программирования ESP

Этой публикацией я начинаю цикл уроков о программировании микроконтроллеров ESP32 в программной среде ESP-IDF. В первом уроке расскажу о параметрах и функциональных возможностях ESP32 на примере отладочной платы DevKit V1.

Еще в 2015 году компания-разработчик микроконтроллера ES8266 выпустила новое устройство также ориентированное на работу с беспроводными технологиями – серию микроконтроллеров ESP32. От предшественника новые устройства отличаются невообразимыми параметрами и функциональными возможностями. Они являются идеальными элементами для создания устройств, поддерживающих IoT технологии (Интернет Вещей), т.е. подключение всего к Интернету.

В настоящее время контроллеры ESP32 стали вполне доступными. Отладочную двухъядерную плату на АлиЭкспресс можно купить всего за 350 руб.

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

Общие сведения.

ESP32 – это серия недорогих высокопроизводительных микроконтроллеров с низким энергопотреблением и интегрированными интерфейсами Wi-Fi и Bluetooth.

Серия разработана компанией Espressif Systems. В ней используется процессорное ядро Tensilica Xtensa LX6 в одноядерном и двухъядерном вариантах.

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

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

В уроках буду использовать плату ESP DevKit V1 (аналог ESP32 DevKitC V4). Я купил эту плату на АлиЭкспресс всего за 340 руб вместе с доставкой. И это за плату. Модуль стоит еще дешевле.

Иерархия аппаратных узлов.

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

Есть микроконтроллер (микросхема), например ESP32-D0WDQ6. Он обеспечивает большую часть функциональных возможностей системы, но для применения требует дополнительных компонентов.

Модуль WROOM
Модуль WROOM

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

Еще удобнее использовать плату. У меня это ESP DevKit V1.

DevKit V1
DevKit V1

Примерно как на платах Ардуино добавились следующие функциональные и конструктивные возможности.

  • Конвертер USB/UART CP210X, позволяющий подключаться к стандартному USB компьютера.
  • Аппаратные цепи, обеспечивающие загрузку FLASH микроконтроллера от компьютера в автоматическом режиме.
  • Стабилизатор напряжения питания модуля.
  • Кнопки сброса и загрузки.
  • Светодиоды.
  • Внешние сигналы микроконтроллеры выведены на края платы.

Т.е. в минимальном варианте достаточно подключить плату ESP32 к USB компьютера. Через него плата получает питание, загружается резидентная программа, производится отладка.

Плата ESP DevKit V1.

В плате установлен модуль ESP-WROOM-32.

В модуле используется микроконтроллер ESP32-D0WDQ6.

Эти элементы определяют функциональные возможности и параметры платы.

  • Процессорная часть:
    • ядро Tensilica Xtensa LX6;
      • два ядра;
      • 32 разряда;
      • производительность до 600 MIPS (миллионов инструкций в сек);
      • 448 KB ROM для загрузчика и функций ядра;
      • 520 KB SRAM для данных и команд;
      • 16 KB SRAM в RTC (квази энергонезависимая память);
      • 4 MB FLASH - память программы.
      • Wi-Fi: 802.11 b/g /N;
      • Bluetooth: v4.2 BR/EDR и BLE.
      • внутренний генератор 8 мГц;
      • внутренний RC-генератор;
      • внешний генератор 40 мГц;
      • внешний генератор 32 кГц для RTC;
      • 2 группы таймеров, включая 2x64 бит таймеры и сторожевой таймер в каждой группе;
      • RTC таймер (часы реального времени);
      • RTC сторожевой таймер.
      • 34 программируемых универсальных портов ввода/вывода;
      • 12ти разрядный АЦП, до 18 каналов;
      • 2 x 8 битных ЦАП;
      • 10 портов для подключения емкостных датчиков;
      • 4 x SPI;
      • 2 x I 2 S;
      • 2 x I 2 C;
      • 3 x UART;
      • 1 хост контроллер SD/eMMC/SDIO;
      • 1 слейв контроллер SDIO/SPI;
      • Ethernet MAC interface с выделенным DMA и IEEE 1588 поддержкой;
      • CAN 2.0;
      • ИК порт;
      • ШИМ для двигателей;
      • ШИМ для светодиодов до 16ти каналов;
      • датчик Холла.
      • безопасная загрузка;
      • шифрование FLASH;
      • 1024-битный ключ, до 768 бит для клиентов;
      • криптографическое аппаратное ускорение:
        • AES;
        • хеширование SHA-2;
        • RSA;
        • ECC;
        • генератор случайных чисел (RNG).

        Функциональная схема микроконтроллера выглядит так.

        Функциональная схема

        Скорее, это перечисление основных компонентов микроконтроллера.

        Применение ESP32.

        В технической документации ESP32 есть глава “Применение (не полный список)”.

        Действительно, микроконтроллер с такими потрясающими возможностями и такой низкой ценой может быть использован где угодно. Но производитель – компания Espressif Systems, прежде всего, выделяет предназначение ESP32 для создания IoT устройств.

        IoT (Internet of Things), в переводе “Интернет Вещей” – это концепция подключения всего к интернету, что позволит управлять этим всем через интернет. Действительно, наличие интегрированных интерфейсов WiFi и Bluetooth, высокая производительность и низкая цена делают ESP32 идеальными контроллерами для IoT технологий.

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

        Распиновка и элементы платы.

        Назначение выводов платы показано на этой схеме.

        Распиновка DevKit V1

        А здесь показано назначение элементов платы.

        DevKit V1

        Электрические характеристики ESP32.

        Мы собираемся создавать реальные устройства. А значит подключать к микроконтроллеру какие-то сигналы, подавать на него питание, эксплуатировать устройства в определенных климатических условиях. Значит важно знать минимальный набор электрических характеристик контроллера. Я посчитал, что на первом этапе необходимо знать следующие параметры.

        Питание.

        Напряжение питания модуля – 3,3 В, но на плате установлен стабилизатор AMS1117-3.3. В документации на плату DevKit все время фигурирует напряжение внешнего питания 5 В. Я не понимаю, почему нельзя подавать большее напряжение. AMS1117-3.3 допускает питание до 20 В, но надо еще учитывать мощность рассеивания на стабилизаторе.

        Питание USB развязано от внешнего питания платы диодом Шоттки. Значит можно запитывать плату от внешнего источника и одновременно подключать к USB.

        Средний потребляемый ток – 80 мА, но источник питания должен допускать пиковые нагрузки до 0,5 А.

        Температура окружающей среды -40 +85 °C. Это для платы. У микроконтроллера -40 +125 °C.

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

        Описание микроконтроллера ESP32

        Фирма Espressif выпустила мощный недорогой микроконтроллер ESP32 летом 2016 года. Устройство представляет собой систему на кристалле, построенную по технологии TSMC 40 нм, с Wi-Fi и Bluetooth контроллерами. Оно оснащено двухъядерным 32-битным процессором, который работает на частотах 80, 160 или 240 МГц. Также в систему интегрированы антенные коммутаторы, радиочастотные компоненты, фильтры, усилители, модули управления питанием. Подключается ESP32 к компьютеру через обычный USB провод.

        Модуль ESP32 NodeMCU

        Характеристики чипа

        Технические характеристики ESP32:

        • Двух- или одноядерный 32-битный процессор Tensilica Xtensa LX6;
        • Тактовая частота – 160 или 240 МГц;
        • 520 Кб SRAM;
        • Максимальный ток потребления 260 мА, в спящем режиме – 10 мА;
        • Стандарты беспроводной связи – Wi-Fi: 802.11 b / g / N, Bluetooth: v4.2 BR/EDR and BLE;
        • Наличие датчиков температуры, Холла, тач-сенсоров;
        • Инфракрасное дистанционное управление;
        • Можно подключать двигатели и светодиоды через ШИМ разъем;
        • Стандарт IEEE 802.11 с поддержкой WFA, WPA/WPA2 и WAPI;
        • Возможность безопасной загрузки;
        • Шифрование флэш диска.

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

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

        • Arduino IDE;
        • Espressif IoT Development Framework;
        • Espruino;
        • PlatformIO;
        • Pymakr IDE.

        Большинство проектов реализуется на Arduino IDE и Espruino.

        Использование ESP 32

        Хоть плата ESP32 появилась недавно, она уже активно используется в коммерческих проектах, связанных с мобильными приложениями, электроникой и задачами IoT. Например, на ее базе построен светодиодный браслет IoT группы Alibaba. Он представляет собой живой беспроводной экран, в котором каждый браслет работает как пиксель. Также на основе микроконтроллера реализована биометрическая система отслеживания посещаемости и проекты, связанные с анализом климатических условий. Имея плату ESP32 и датчики температуры, влажности и давления, можно самостоятельно собрать метеостанцию. ESP32 используется в музыкальных плеерах, помощниках с голосовым управлением, аудиогарнитуре.

        Распиновка ESP32

        Микроконтроллер оснащен 48 контактами плюс 1 большой тепловой контакт, которые обладают разными функциями. Выводы микросхемы:

        Расположение выводов зависит от производителя. Например, есть плата ESP32 DEVKIT V1 DOIT, у которой 36 контактов. Распиновка представлена на рисунке ниже.

        Распиновка ESP32

        Одним из самых популярных модулей является ESP-WROOM-32. Распиновка также приведена на картинке.

        Распиновка ESP WROOM 32

        К портам GRIO 0, 4, 2, 15, 13, 12, 14, 27, 33 и 32 подключены сенсорные выводы. Они могут использоваться для вывода ESP32 из глубокого сна. Они фиксируют любое изменение электрического заряда.

        Порты с 34 по 39 используются только для ввода информации. На них отсутствуют подтягивающие резисторы, поэтому их нельзя использовать как выходы.

        На некоторых платах отображаются контакты 6-11. Они подсоединены к к интегрированной SPI flash. Их не используют в проектах.

        Есть различные версии платы ESP32 размерами 5х5 мм или 6х6 мм. Также на основе ESP32 существуют модули SMT для интегрирования в другие платы.

        Отличия esp32 от esp8266

        Платформы ESP8266 и ESP32 произведены одной компанией Espressif. Микроконтроллер ESP32 отличается от своего предшественника улучшенными характеристиками, увеличенным функционалом и большим объемом памяти. Стоимость нового прибора дороже примерно в 2 раза.

        Важным преимуществом ESP32 является более быстрый Wi-Fi и Bluetooth. В ESP32 установлен более мощный процессор, позволяющий реализовывать сложные проекты. Эта платформа подходит для приложений, в которых требуется интернет или новые интерфейсы. Для более дешевых разработок используется ESP8266.

        Объем памяти у нового устройства ESP32 увеличен – 512 Кб против 160 Кб ESP8266. Также ESP32 отличается большим количеством выводов GRIO. К нескольким контактам на ESP32 прикреплены емкостные сенсорные датчики и датчик температуры. На обоих устройствах контакты GRIO можно использовать по-разному. ESP32 имеет 18 12-битных АЦП каналов. У его предшественника есть всего 1 10-битный вывод АЦП.

        Мощность процессора значительно влияет на скорость работы. Модуль ESP32 показывает рекордную производительность по сравнению с предшественником ESP8266. Загрузка страницы с длинным скетчем и множеством графики занимает секунды.

        Из недостатков ESP32 можно выделить отсутствие библиотек для поддержки сенсоров и малое количество драйверов. Это связано с тем, что плата появилась в продаже недавно. Но учитывая все преимущества микроконтроллера и его перспективы, эта проблема будет решена уже в ближайшее время.

        Настройка Arduino IDE для работы с ESP32

        Изначально изделия от компании Espressif поставляются с прошивкой, позволяющей работать с помощью AT команд. Это не всегда удобно, поэтому лучше программировать плату в привычной среде разработки – Arduino IDE.

        Чтобы начать создавать проекты на ESP32, сначала нужно иметь его поддержку в среде разработки Arduino IDE. Поддержка в настоящий момент находится на начальном, но работоспособном уровне. Проблемы могут возникнуть с драйверами устройств, но из-за популярности модуля вскоре будет поддерживаться вся периферия.

        Так как плата ESP32 новая и поддержка в среде разработки Ардуино появилась недавно, то могут возникнуть сложности с установкой. Это связано с тем, что драйвера только разрабатываются и изменен порядок расположения системных директорий. Все скетчи должны быть расположены в папке C:\Users\User\Documents\Arduino. Файлы дистрибутива должны быть размещены внутри этой папки, как советует производитель. Если этого не учесть, то поддержка в Ардуино ESP32 будет отсутствовать.

        После установки можно открыть Arduino IDE. Затем нужно перейти в настройки и в менеджере плат выбрать нужную. Теперь можно прошивать модуль.

        Проверка модуля и подключение к Arduino IDE

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

        • Модуль ESP32;
        • Источник питания на 3 В;
        • Кнопка;
        • Резисторы;
        • USB кабель для подключения к компьютеру;
        • Провода;
        • Светодиод;
        • USB-TTL конвертор.

        Собирается это все согласно схеме ниже.

        Схема ESP8266

        Затем нужно загрузить тестовый код, прописав в нем номер COM порта, к которому подключен модуль, и тип платы. После загрузки скетча должен замигать светодиод.

        Настройка официальной среды разработки ESP-IDF (Espressif IoT Development Framework)

        Среду ESP-IDF можно установить на Windows. Для этого нужно:

        После этого можно начинать работу. В каталоге \esp-idf\examples\ есть различные примеры скетчей для работы с модулем.

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