Метеостанция и монитор качества воздуха на ESP32-P4 с LoRa и ESP-NOW

Перевод статьи DIY ESP32-P4 weather station & air quality monitor connects to LoRa and ESP-NOW sensors, various weather APIs — Jean-Luc Aufranc, CNX Software.
Харальд Кройцер собрал метеостанцию и монитор качества воздуха на ESP32-P4 с 10,1-дюймовым дашбордом-дисплеем и встроенным датчиком Sensirion SEN66 для измерения взвешенных частиц, CO2, VOC и NOx. Устройство также умеет подключаться к беспроводным датчикам по LoRa и ESP-NOW.
Проект целиком собран из готовых плат, без единой заказной платы, поэтому его относительно легко повторить. Он не требует ни облака, ни учётной записи, хотя при желании может подключаться к одному из погодных API (Open-Meteo, OpenWeatherMap или Visual Crossing), чтобы показывать прогноз погоды. Сборка подробно описана в большой статье в блоге автора, а мы здесь остановимся на ключевых особенностях проекта.
Аппаратная часть основного блока#
Характеристики главного устройства:
- Основа — ESP32-P4-Module-DEV-KIT-C размером с кредитную карту, на базе модуля ESP32-P4NRW32 с ESP32-P4, 32 МБ PSRAM и ESP32-C6 для Wi-Fi и BLE
- 10,1-дюймовая IPS-панель с разрешением 1280 × 800, контрастностью 800:1 и яркостью 400 кд/м²
- Динамик 8 Ом, 2 Вт (в проекте не используется)
- Камера RPi Camera (B) и 15-контактный шлейф FFC для неё (в проекте не используются)
- Связь по LoRa — Heltec V4 (только плата)
- Датчики:
- Мультисенсор Sensirion SEN66 для PM1.0, PM2.5, PM4.0, PM10, оксидов азота (NOx) и летучих органических соединений (VOC)
- Датчик освещённости BH1750 для управления яркостью
- 24-ГГц mmWave-датчик DFRobot C4001 для обнаружения присутствия человека (вариант с дальностью 12 метров)

Waveshare ESP32-P4-Module-DEV-KIT-C

Обратная сторона полностью собранного блока в напечатанной на 3D-принтере подставке
Харальд также работает над версией на базе 10-дюймового сенсорного дисплея GUITION ESP32-P4 — она должна получиться тоньше, поскольку ESP32-P4 там встроен прямо в плату дисплея.
Дополнительные датчики LoRa и ESP-NOW#
Основной блок можно использовать и как есть, но вы наверняка захотите добавить несколько внешних модулей LoRa и ESP-NOW:
- Sensor-Receiver — приёмник LoRa + ESP-NOW на базе Heltec WiFi LoRa 32 (ESP32-S3)
- Sensor-LORA-BME280 — узел LoRa для температуры, влажности и давления на Heltec WiFi LoRa 32 V3/V4
- Sensor-LORA-BME280-HTCC-AB01 — то же самое на Heltec CubeCell HTCC-AB01 V2 (дешевле, без дисплея)
- Sensor-LORA-SHT45 — узел LoRa для температуры и влажности на Heltec WiFi LoRa 32 (ESP32-S3)
- Sensor-LORA-RadiationD — счётчик Гейгера по LoRa на базе трубки RadiationD-v1.1 и Heltec WiFi LoRa 32 V4 (ESP32-S3)
- Sensor-LORA-RadiationD-HTCC-AB01 — то же самое, но на Heltec CubeCell HTCC-AB01 V2
- Sensor-ESP-NOW-BME280 — узел ESP-NOW для температуры, влажности и давления на обычной плате ESP32 (самый старый подпроект)

Sensor-ESP-NOW-BME280

Счётчик Гейгера по LoRa

Блок-схема архитектуры
Программная часть#
На этом с аппаратной частью всё. Исходный код основного блока, приёмного модуля и датчиков лежит на GitHub. В основном он построен на фреймворке ESP-IDF — за исключением модулей на CubeCell, чья прошивка написана на Arduino/PlatformIO. Пользовательский интерфейс на главном блоке отрисовывается через LVGL и спроектирован в открытом GUI-редакторе EEZ Studio.

Архитектура ПО
Ещё вам понадобится напечатать на 3D-принтере корпуса для основного блока и датчиков. Единственная загвоздка в том, что STL-файлы, похоже, пока не выложены — удалось найти только файлы для старой версии проекта, и для нового варианта они не подойдут. Зато файлы STEP и SolidWorks теперь лежат в папке SolidWorks того же репозитория с прошивкой.
Стоит ли повторять#
Существует немало DIY-проектов метеостанций и мониторов качества воздуха — например, MoreSense MS-07, Project Aura или Sparkfun ESP32 Arduino IoT Weather Station, — но этот проект довольно продвинутый и к тому же первый на моей памяти на базе ESP32-P4.
Собирая собственную метеостанцию и монитор качества воздуха на ESP32-P4, вы наверняка получите удовольствие, новые знания и навыки, но почти наверняка не сэкономите по сравнению с готовыми коммерческими решениями. Стоимость основного блока оценивается так:
- Waveshare ESP32-P4-Module-DEV-KIT-C — $77,99 на Waveshare или $98,55 на Amazon
- Плата Heltec V4 — $29,99 на Amazon
- Sensirion SEN66 — $62,03 на сайте Sensirion
- Датчик освещённости BH1750 — $1,39 на AliExpress
- C4001 24 ГГц (12 метров) — $12,90 на DFRobot
Итого как минимум $185. К этому нужно добавить налоги и доставку, а также немного крепежа, филамент для 3D-печати и дополнительные электронные компоненты, если захотите подключать внешние модули.