Esp32 метеостанция: создание своими руками на основе микроконтроллера

Создаем метеостанцию на основе ESP32 и датчиков

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

Что нам необходимо

В этом проекте мы собираемся создать метеостанцию, используя ESP32. Мы будем использовать датчики DHT22 и BMP180, а затем, используя ESP32, мы создадим веб-страницу, где мы покажем значения.

Нам для реализации проекта нужны:

1 – ESP32
1 – DHT22
1 – BMP180
1 – макетная плата
1 – провода-перемычки

Принципиальная схема

Прежде всего, подключите DHT22 к ESP32. Соединения для DHT22 с ESP32 следующие:

  • Контакт 1 DHT22, который является контактом VCC, на 3,3 В от ESP32
  • Контакт 2 DHT22, который является штырем данных к D15 ESP32
  • Контакт 4 DHT22, который является контактом GND для GND ESP32

Затем подключите датчик давления BMP180 к ESP32. Соединения следующие:

  • Vin от BMP180 на 3.3V ESP32
  • GND BMP180 на GND ESP32
  • SCL BMP180 на вывод 22 ESP32 (контакт 22 ESP32 является контактом SCL)
  • SDA BMP180 на штырьковый разъем 21 ESP32 (контакт 21 ESP32 является выводом SDA)

Штыри 22 и 21 ESP32 предназначены для связи I2C.

Код проекта метеостанции

Код проекта можно скачать или скопировать ниже:

Пояснение код проекта метеостанции

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

Теперь мы сохраняем имя и пароль Wi-Fi, чтобы позднее мы могли подключиться к нему. Затем мы определяем порт, на котором мы создадим сервер.

В функции настройки мы подключили ESP32 к нашей сети Wi-Fi, используя предоставленную выше информацию Wi-Fi. Если соединение с сетью Wi-Fi будет успешным, на последовательном мониторе будет показано «соединение успешно». В противном случае он будет продолжать попытки, пока не подключится к сети Wi-Fi.

Команда ниже приведет к отображению IP-адреса на последовательном мониторе.

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

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

Затем мы проверяем, отправил ли какой-либо клиент HTTP-запрос или нет. Если какой-либо клиентский запрос доступен, он будет сохранен и показан на серийном мониторе. В конце запроса мы отправим команды HTML, которые будут печатать данные датчика на веб-странице.

Как запустить вашу метеостанцию

Во-первых, замените имя и пароль Wi-Fi в коде своими. Затем загрузите код и откройте последовательный монитор. Последовательный монитор покажет вам IP-адрес, как показано на рисунке ниже.

Введите этот IP-адрес в своем браузере.

После ввода IP-адреса веб-страница будет примерно такой.

Таким образом вы сделали передачу данных от датчиков вашей метеостанции на веб-страницу.

Микроконтроллер ESP32 и проекты Arduino

Микроконтроллер 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;
  • Возможность безопасной загрузки;
  • Шифрование флэш диска.

Микросхема ESP32

Также в модуле традиционно присутствует встроенное управление энергопитанием. Для этого используются линейный регулятор, индивидуальное питание для 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 большой тепловой контакт, которые обладают разными функциями. Выводы микросхемы:

  • 18 каналов 12-разрядного АЦП;
  • 10 GRIO портов;
  • 3 SPI;
  • 3 UART;
  • 2 I2C;
  • 16 ШИМ выводов;
  • 2 8-битных ЦАП вывода;
  • 2

Расположение выводов зависит от производителя. Например, есть плата 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. Поддержка в настоящий момент находится на начальном, но работоспособном уровне. Проблемы могут возникнуть с драйверами устройств, но из-за популярности модуля вскоре будет поддерживаться вся периферия.

В первую очередь нужно скачать Arduino IDE и официальную инструкцию с сайта https://github.com/espressif/arduino-esp32. Нужно загрузить файлы дистрибутива и поместить в папку C:UsersUserDocumentsArduinohardwareespressifesp32.

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

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

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

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

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

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

Пример схемы ESP8266

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

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

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

  • Скачать с официального сайта среду разработки;
  • Распаковать архив, поместить его на диск C;
  • Затем появится каталог msys32, в который нужно перейти и запустить программу mingw32.exe;
  • Появится окно терминала, где нужно создать каталог с именем esp;
  • Нужно перейти в созданный каталог;
  • Подключить необходимые библиотеки с помощью команды git clone –recursive https://github.com/espressif/esp-idf.git;
  • Затем устанавливаются пакеты Python командой python -m pip install –user -r $IDF_PATH/requirements.txt.

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

Веб-сервер на ESP32 создание мини-метеостанции на BME280

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

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

  • Плата ESP32 DOIT DEVKIT V1
  • Датчик bme280
  • Макетная плата
  • Соединительные провода

Модуль датчика BME280 считывает температуру, влажность и давление. Поскольку давление изменяется с высотой, вы также можете оценить высоту. Существует несколько версий этого сенсорного модуля, здесь используется версия, показанная на рисунке ниже.

Датчик может обмениваться данными, используя протоколы связи SPI или I2C (есть датчики, которые обмениваются данными по I2C, они поставляются с четырьмя контактами).

Чтобы использовать протокол связи SPI, необходимо использовать следующие контакты:

  • SCK – это SPI Clock pin
  • SDO – MISO
  • SDI – MOSI
  • CS – Выбор микросхемы

Для использования протокола связи I2C датчик использует следующие контакты:

  • SCK – это также SCL pin
  • SDI – это также SDA pin

схема

В данном проекте используется связь I2C. Датчик подключается к контактам ESP32 SDA и SCL, как показано на следующей принципиальной схеме.

Установка библиотеки BME280

Для считывания показаний с сенсорного модуля BME280 используется библиотека Adafruit_BME280. Чтобы установить библиотеку в Arduino IDE :

Откройте Arduino IDE и выберите «Скетч»> «Включить библиотеку»> «Управление библиотеками».

Найдите «adafruit bme280» в поле поиска и установите библиотеку.

Установка библиотеки Adafruit_Sensor

Чтобы использовать библиотеку BME280, вам также необходимо установить библиотеку Adafruit_Sensor.

После установки библиотек перезапустите Arduino IDE.

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

Чтобы ознакомиться с датчиком BME280, воспользуемся примером скетча из библиотеки

После установки библиотеки BME280 и библиотеки Adafruit_Sensor откройте интегрированную среду разработки Arduino и выберите «Файл> Примеры> Библиотека Adafruit BME280> тест bme280».

Библиотеки

Код начинается с включения необходимых библиотек

SPI связь

Поскольку используется связь I2C, необходимо объявить следующие строки:

Примечание: если используется связь SPI, нужно изменить определение контактов, чтобы использовать ESP32 GPIO. Для связи SPI на ESP32 можно использовать контакты HSPI или VSPI, как показано в следующей таблице.

SPI MOSI MISO CLK CS
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5

Давление на уровне моря

Будет создана переменная SEALEVELPRESSURE_HPA.

Она сохраняет давление на уровне моря в гектопаскале (эквивалентно милибару). Эта переменная используется для оценки высоты для данного давления путем сравнения его с давлением на уровне моря. В этом примере используется значение по умолчанию, но для более точных результатов замените это значение текущим уровнем моря в вашем регионе.

В этом примере по умолчанию используется связь I2C. Как видите, просто нужно создать объект Adafruit_BME280 с именем bme.

Если использовать SPI, нужно закомментировать эту строку и раскомментировать одну из следующих строк в зависимости от того, используется аппаратный или программный SPI.

setup()

В setup() запускается последовательная связь

Значения печати

В цикле loop() функция printValues ​​() считывает значения из BME280 и печатает результаты в последовательном мониторе.

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

Программирование микроконтроллеров ESP8266/ESP32 написанием YAML конфиг файлов

Будучи поклонником системы управления “умным домом” Home Assistant я недавно открыл для себя интересный инструмент, тесно с HA интегрированный и ранее на Хабре не освещенный — ESP Home (ранее ESPhomeYAML).

ESP Home представляет собой набор библиотек и инструментов, генерирующих прошивку для микроконтроллеров ESP8266 и ESP32 из созданного пользователем конфиг файла в формате YAML. Это значительно упрощает написание прошивок малого и среднего уровня сложности в особенности для тех, кто не силен в программировании под Arduino и сильно сокращает количество строк кода/конфигурации для тех, кто силен.

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

ESP Home поддерживает устройства на базе ESP8266 и ESP32, очень популярных среди любителей домашней автоматизации и прочих самоделкиных, а также несколько десятков сенсоров и различную периферию — дисплеи, сетевые карты и т.д. Для обмена данными с запрограммированным устройством поддерживаются MQTT, UART, I2C, SPI и API, интегрированное с Home Assistant.

Ниже короткий пример установки ESP Home и простой настройки устройства на примере выключателя Sonoff T1, который представляет из себя ESP8266 с одним реле, одной кнопкой и одним управляемым светодиодом. В примере будут шаги установки одновременно для чистого Python и Docker.

Установка

Python 2.7 (из-за зависимостей Platformio)

Docker из готового образа

Создание конфигурационного файла

ESP Home включает в себя визард, который помогает создать начальный конфигурационный файл.
Эти же шаги можно проделать в WEB интерфейсе ESP Home, про который написано в конце статьи.

Для начала нужно указать:

  • Название устройства (назовем его switch)
  • ESP8266 (в примере) или ESP32
  • Тип платы (у нас esp01_1m)
  • Назване точки доступа WiFi
  • Пароль от WiFi
  • Пароль от API Home Assistant, он же будет по умолчанию использоваться для обновления прошивки по воздуху.

Результатом работы визарда будет файл switch.yaml в текущей папке примерно такого вида:

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

Первая прошивка

Теперь, если подключить контроллер к компьютеру по USB (NodeMCU) или через программатор можно заливать прошивку.

ESP Home проверит, что в файле конфигурации нет ошибок, скомпилирует и загрузит прошивку. Кроме того в текущей папке появится новая папка с именем вашего устройства и проектом platformio внутри.

Если программатор/устройство не подключены к компьютеру можно выполнить команду:

и скомпилированный файл прошивки появится в папке switch/.pioenvs/switch/firmware.bin

Docker
На Linux или MacOS можно добавить в –device=/dev/ttyUSB0 Docker-команду — адрес устройства программатора или серийного порта.

Аналогично команде esphome в результате запуска контейнера появится папка switch/.pioenvs/switch/firmware.bin

Бинарный файл прошивки можно загрузить на контроллер через Arduino IDE.

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

Настройка выключателя

Дальше можно добавлять необходимые компоненты:

Источники:

http://arduinomaster.ru/platy-arduino/esp32-arduino-raspinovka-arduino-ide/

http://diytech.ru/projects/veb-server-na-esp32-sozdanie-mini-meteostancii-na-bme280

http://habr.com/post/441984/

http://arduinoplus.ru/kak-vybrat-invertor-dlya-solnechnyh-batarej/

Ссылка на основную публикацию