Метеостанция своими руками esp32

Добавил пользователь Дмитрий К.
Обновлено: 19.09.2024

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


В этой статье мы собираемся сделать метеостанцию ​​с использованием датчиков ESP32 и BME280. Датчик обнаружит соответствующий параметр и отправит его на веб-страницу через локальное соединение WiFi. Для этого мы напишем код и запишем его на плате микроконтроллера.

Как сделать метеостанцию, используя ESP32 и BME280?

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

Шаг 1: Сбор Компонентов

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

Шаг 2: Создание таблицы в HTML

Теперь давайте посмотрим, как таблица создается на языке разметки гипертекста (HTML) и отображается в веб-браузере. HTML — это язык, используемый для создания структуры веб-страниц. Он состоит из ряда элементов, которые сообщают браузеру, как отображать вещи на странице. Эти элементы представлены тегами. Браузер читает код, написанный на HTML, и отображает содержимое на экране без отображения тегов.

Чтобы создать таблицу в браузере, мы будем использовать

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

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

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

тег. Код для создания необходимой таблицы, см. Код, приведенный ниже.

количество, которое мы измеряем значение.


Сохранить как

Когда вы откроете файл в браузере, он будет выглядеть следующим образом. В эту таблицу стили не включены. Если вы хотите добавить рамку, чтобы создать стильную таблицу по вашему выбору, вам придется добавить в нее CSS. Чтобы добавить CSS, кликните сюда.


Стол

Шаг 3: Сборка компонентов

Теперь давайте продолжим и подключим датчик к плате ESP32. Перед выполнением этих подключений лучше пройти краткое изучение конфигурации выводов датчика.

Протокол, который мы собираемся использовать в этом проекте, — это связь 12C с сенсорным модулем BME280. Для этого мы будем использовать вывод SDA и SCL датчика. Контактный разъем 21 ESP32 подключен к выводу SDA датчика, а контакт 22 ESP32 подключен к SCL для датчика.


связи

Шаг 4: Начало работы с ESP32

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

Так что теперь, когда вы загрузите код, может возникнуть ошибка. Это наиболее распространенная ошибка, которая может возникнуть, если вы используете новую версию Arduino IDE и Arduino JSON. Ниже приведены ошибки, которые вы можете увидеть на экране.

В файл включен из C: Users Pro Documents Arduino library IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0,

из C: Users Pro Desktop smartHome code code.ino: 2:

В файл включен из C: Users Pro Documents Arduino library IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0,

из C: Users Pro Desktop smartHome code code.ino: 2:

вернуть StaticJsonBuffer () .ParseObject (_data);

Не о чем беспокоиться, потому что мы можем устранить эти ошибки, выполнив несколько простых шагов. Эти ошибки возникают потому, что в новой версии Arduino JSON вместо StaticJsonBuffer есть другой класс. Это класс JSON 5. Таким образом, мы можем просто устранить эту ошибку, понизив версию Arduino JSON нашей Arduino IDE. Просто зайдите в Sketch> Включить библиотеку> Управление библиотеками. Ищите Arduino JSON от Benoit Blanchon, который вы установили ранее. Сначала удалите его, а затем установите его версию 5.13.5. Теперь, когда мы установили старую версию Arduino JSON, установите ее снова и перекомпилируйте код. На этот раз ваш код будет успешно скомпилирован.

Чтобы скачать код, щелчок Вот.

Шаг 5: Понимание кода

Код этого проекта очень прост и хорошо прокомментирован. Но все же код кратко поясняется ниже.

1. В начале включены библиотеки, так что плату ESP32 можно подключить к локальному WiFi-соединению дома или в офисе. Также включены библиотеки, которые помогают ESP32 интегрировать датчик BME280 с ним. Затем определяются имя и пароль вашего локального соединения Wi-Fi, чтобы ESP32 мог быть подключен к Wi-Fi.

2. После этого некоторые строки комментируются. Эти линии будут использоваться, если вы используете протокол SPI для связи с датчиком. Мы будем комментировать их, потому что мы используем протокол 12C.

3. Создается переменная для сохранения значения давления на уровне моря в гектопаскалях. 1 гектопаскаль эквивалентна миллибару. Высота для данного давления оценивается, а затем эта переменная сравнивает ее с давлением на уровне моря. После этого bme является объектом, который создается для дальнейшего использования.

Adafruit_BME280 bme; // I2C

void setup () Serial.begin (115200); // установка скорости передачи
статус bool;

6. void loop () — это функция, которая многократно запускается в цикле. В этом цикле мы пишем код, который сообщает плате микроконтроллера, какие задачи выполнять и как. В этом коде, во-первых, устанавливается соединение с новым клиентом. Если соединение установлено, веб-страница отображается в браузере. Затем составляется таблица, и показания датчиков заполняются в этой таблице. Когда таблица заполнена, соединение закрывается.

Метеостанция на BME280 и ESP8266

В этой статье расскажу, как создать небольшую метеостанцию дома, используя BME280 и NodeMCU (ESP8266). Контроллер NodeMCU v.2 (ESP8266) будет считывать показания температуры, влажности, давления и высоту (рассчитанную) с датчика BME280 и полученные данный отобразить в WEB странице. В качестве среды разработки используем Arduino IDE

Подключение
В примере используем контроллер NodeMCU v.2 (ESP8266) и датчик BME280, с последнего будем считывать показания температуры, влажности и давления. Для подключения BME280 к ESP8266, нужно контакты SDA и SCL подключить, как показано на принципиальной схеме ниже.

Метеостанция на BME280 и ESP8266

Метеостанция на BME280 и ESP8266

Метеостанция на BME280 и ESP8266

Для установки Adafruit_BME280.h , введите «Adafruit_BME280, она одна, установите ее.

Метеостанция на BME280 и ESP8266

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

Программа
Теперь, у нас все готово, копируем скетч в Arduino IDE или скачайте готовый файл и загружаем его в NodeMCU, незабываем указать свои данные сети.

Дневник разработчика

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.7 для ESP8266 и ESP32.
=======================
. Прошить можно в вэб интерфейсе, архив будет позже в папке где хранятся все прошивки на OneDrive
Ниже читаем изменения.
Показать полностью.

Версия 2.2.7
Что нового:

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

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

Спасибо за классные часики.

Александр Левин

Сергей Скляренко

ESP Проекты

ESP Проекты запись закреплена

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.6 для ESP8266 и ESP32.
=======================
. Прошить можно в вэб интерфейсе или вручную из архива (читаем инструкцию)
Ниже читаем изменения.
Показать полностью.

Версия 2.2.6
Что нового:

- обновлен веб интерфейс для удобства работы с мобильными устройствами
- исправлены ошибки влияющие на стабильность системы, связанные с RTC, и распределением Ram
- добавлено больше опций для синхронизации с NTP для получения времени

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

Sem Prygorodov

Игорь Кучук

Карл Маркс

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

Sem Prygorodov

Александр Шиляев

Sem Prygorodov

😊

Александр, всегда пожалуйста.

ESP Проекты

ESP Проекты запись закреплена

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.5.2 для ESP8266 и ESP32.
=======================
. Прошить можно ТОЛЬКО в вэб интерфейсе.
Ниже читаем изменения.

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

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

Карл Маркс

У меня одного часы испортились с этим обновлением? Вебморда недоступна, точку доступа не создаёт. Передёргиваешь питание, штатно заводятся. Через какое то время опять такая картина.

Карл Маркс

Михаил Калитко

нет голосового оповещения! возможна причина в DFP? из 5ти плат с плеером работает одна. на вых. TX Esp-3.2v??

Sem Prygorodov

ESP Проекты

ESP Проекты запись закреплена

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.5.1 для ESP8266 и ESP32.
=======================
. Прошить можно ТОЛЬКО в вэб интерфейсе.
Ниже читаем изменения.

- обновлен стек памяти для корректной работы сохранения конфигурационного файла на ESP8266
- программно укорочен возможный писк зуммера при рестарте часов на ESP8266
- исправлена ошибка чтения данных с народного мониторинга, приводящая в перезагрузке контроллера

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

Александр Никишин

С моей широкой матрицей 8х2 не изменилась ситуация. Как только в настройках переключаюсь на 8х2, часы больше не грузятся и ничего не отображают.

Виталий Александрович

И всё таки у меня на Wemos8266 всё работало без глюков на 2.2.5. Я проверил несколько раз, со сбросом настроек и без. Единственно, что замечал: несколько раз отваливался вайфай, хотя все остальные устройства продолжали его видеть. Чудесным образом восстанавливалось без моего вмешательства. Сейчас еще прошил ESP32 Wroom, подключил светодиодную матрицу на 8 диодов, буду еще и ее гонять.

Роман Беспалов


Роман Беспалов

Александр Букин

Роман Беспалов


Роман Беспалов ответил Александру

ESP Проекты

ESP Проекты запись закреплена

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.5 для ESP8266 и ESP32.
=======================
. Прошить можно ТОЛЬКО в вэб интерфейсе.
Ниже читаем изменения.

- AHT10 исправлена ошибка, из-за которой не учитывалась коррекция температуры
- Исправлена ошибка MP3-модуля, из-за которой голосовое оповещение было в ночном режиме
- Исправлена ошибка сброса времени в оффлайн режиме
- исправлена ошибка с дублирующими описаниями показаний для MQTT
- исправлена ошибка, из-за которой в ночном режиме отключались датчики
- исправлена ошибка отправки данных с датчиков на интернет сервисы в ночном режиме

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

Sem Prygorodov

🙂

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

Спасибо большое.
Интересно бузер также поправили? А то после перезагрузки пищит. Если отключен в настройках то пока не зайдешь в меню звук и повторно не выключить, а если включен выключается примерно секунд через 30

Александр Никишин

Здравствуйте. У меня начиная с 2.2.3 версии при использовании большой матрицы 8 на 2, все перестаёт работать. Не грузится, не отображается. Вот как только прошился со сбросом - работает. 4 матрицы. Как только в настройках выставляешь нужные параметры матрицы и перегружаешься - всё, кирпич.

ESP Проекты

ESP Проекты запись закреплена

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.4 для ESP8266 и ESP32.
=======================
. Прошить можно в вэб интерфейсе.
Ниже читаем изменения.
(для ESP8266 !Важно - при обновлении обновится файловая система , если обновляетесь с версии ниже 2.2.3, заранее сохраните конфигурационный файл, тк все настройки будут удалены)
Показать полностью.

Версия 2.2.4
Что нового:

- новый оптимизированный драйвер получения и вывода информации на экран часов
- обновлен код парсинга информации с сервисов и вывода в WebUI теперь работает быстрее
- оптимизация кода, теперь больше RAM оперативной памяти для нужд контроллера (+ около 6kb)
- исправлена ошибка , когда большой циферблат в смешанном режиме не включался
- исправлена ошибка ночного режима для звуковых оповещений
- исправлена ошибка с кнопкой, теперь контент переключается корректно

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

ESP32 - постоянно пропадает соединение с сетью примерно где-то через пару часов - далее не помогает ничего, кроме перезагрузки ( от прошивки не зависит). В чем может быть проблема. Есть часы на ESP8266 - тут с сетью все ок - значит роутер не виноват. Может ли RTC влиять на это?

Владислав Акопян

Виталий Петрушенко

А можно как то убрать эту строку?а то от адреса строка получается длинной, А то что я не знаю к какой я станции подключился,

Sem Prygorodov

ESP Проекты

ESP Проекты запись закреплена

👇🏻

Всем привет, вышла новая версия прошивки часов 2.2.3 для ESP8266 и ESP32.
=======================
. Прошить можно только в вэб интерфейсе.
Ниже читаем изменения.
(для ESP8266 !Важно - при обновлении обновится файловая система, заранее сохраните конфигурационный файл, тк все настройки будут удалены)
Показать полностью.
версия 2.2.2 и 2.2.3 - технический update

- исправлена критическая ошибка с конфигурационным файлом, приводящая к перезагрузке контроллера и невозможностью выгрузить или загрузить конфигурационный файл
- исправление багов, связанные с зависанием MQTT и небольшая оптимизация кода MQTT
- добавлена ссылка на инструкцию в виде виджета в правом нижнем углу, интеграция в WebUI
- добавлены анекдоты, аффоризмы и статусы в вкладке "Ещё"
- поддержка, технически, кодировок текста(win1251, utf-8, unicode characters)
- косметические изменения в WebUI
- поддержа создания MD5 HASH отпечатков для безопасных авторизаций, используется для narodmon
- добавлен модуль чтения показаний по ID-device с сервиса NARODMON, с поддержкой до 10 датчиков или 10 показаний с мультифункциональных датчиков
- добавлена поддержка кодирования на русский язык с сервиса NARODMON если расположение датчика вне стран СНГ и системный язык русский
- исправлены ошибки касающиеся анимации секунд во время ночного режима
- исправлена критическая ошибка связанная с переполнением RAM-памяти при использовании датчика AHT10
- некоторые ненужные элементы перенесены в HEAP(RAM) из статических значений
- исправлена ошибка с автоподключением к сети, вместо 10 минут постоянных попыток подключения, теперь 10 попыток и затем 10 минут отсрочка,
тк из-за большого интервала попыток подключения невозможно было подключиться к точке доступа часов.
- меньше фризов экрана во время воспроизведения времени
- исправлена ошибка приводящая к фризам прокрутки-информации на экране в эффекте Led-подсветки
- увеличен стек памяти для избежания самопроизвольных перезагрузок
- добавлен тестовый алгоритм поиска совместимых устройств на основе свежих прошивок от "ESP Projects"
- исправлена ошибка MAX7219 для esp8266 в широкоформатном разрешении, приводящая к циклической перезагрузке на старте при выборе данного режима
- исправлена ошибка инициализации дисплея во время выхода из спящего режима, когда не все матрицы включались корректно
- с этой версии переход на файловую систему LittleFS вместо Spiffs для надежности и избежания порчи файловой системы,
из-за которой контроллер уходил в циклическую перезагрузку
- исправление бага связанного с подсветкой дисплея

Все ваши идеи и пожелания пишите тут :

Если что-то не понятно при подключении или настройке то читаем инструкцию тут:

Если желаете поддержать проект или купить мне пиво,то это можно сделать тут:

Модули ESP весьма популярны в современной радиоэлектронике благодаря наличию в них функциональности Wi-Fi. К подобным модулям можно отнести ESP8266, ESP-12E и т.д. Но среди этих модулей есть один, который отличается большей вычислительной мощностью и большей универсальностью чем другие подобные модули – это модуль ESP32. В нем реализована поддержка Bluetooth, BLE и Wi-Fi, благодаря чему он весьма часто используется в проектах, связанных с технологией интернета вещей (IoT – Internet of Things). Но не все знают, что ESP32 является двухъядерным (Dual-core) микроконтроллером. Иногда его называют не микроконтроллером, а модулем.

Внешний вид модуля (микроконтроллера) ESP32

ESP32 имеет в своем составе два 32-битных микропроцессора Tensilica Xtensa LX6, благодаря которым он является достаточно мощным двухъядерным (core0 и core1) микроконтроллером. ESP32 доступен в двух вариантах – одноядерный и двухъядерный, но более распространен двухъядерный вариант поскольку он стоит лишь немногим дороже чем одноядерный.

Структурная схема микроконтроллера ESP32 представлена на следующем рисунке.

Структурная схема микроконтроллера ESP32

ESP32 можно программировать с помощью Arduino IDE, Espressif IDF, Lua RTOS и т.д. При программировании с помощью Arduino IDE код программы будет исполняться только на первом ядре (Core1) поскольку нулевое ядро (Core0) будет уже запрограммировано для решения задач радиочастотной связи. Но в данной статье мы рассмотрим как использовать оба ядра ESP32 для выполнения двух операций одновременно. Первой из этих задач будет мигание встроенным светодиодом, а второй – считывание данных температуры с датчика DHT11. Но вначале давайте рассмотрим преимущества многоядерных микропроцессоров над одноядерными.

Преимущества многоядерных микропроцессоров

  1. Многоядерные микропроцессоры особенно полезны когда требуется выполнять два или более процесса одновременно.
  2. Поскольку работа распределена между несколькими ядрами, то это позволяет выполнить некоторые задачи быстрее.
  3. Для многоядерных микропроцессоров можно уменьшить энергопотребление, поскольку когда какое-нибудь ядро находится в холостом режиме (idle mode), оно может быть использовано для отключения периферийных устройств, которые не используются в текущий момент времени.
  4. Двухъядерным микропроцессорам нет необходимости так часто переключаться между различными потоками задач как одноядерным микропроцессорам, поскольку они могут обрабатывать два потока задач одновременно вместо одного.

ESP32 и FreeRTOS

Модуль ESP32 имеет встроенное в него программное обеспечение FreeRTOS, которое представляет собой операционную систему реального времени, особенно полезное при выполнении многозадачных процессов. RTOS помогает в управлении ресурсами и максимизирует производительность системы. FreeRTOS имеет множество API (прикладного программирования) функций для различных целей и с помощью этих функций мы можем запускать различные задачи на различных ядрах.

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

Определение идентификатора ядра (core ID) ESP32

В этом проекте мы будем использовать среду Arduino IDE для загрузки кода программы в модуль ESP32. Для определения идентификатора ядра (core ID), на котором исполняется код, существует специальная API функция.

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