- Домашняя метеостанция на ESP8266 и датчике BME280
- Что нам понадобится
- Подключение ESP8266 к ПК
- Сборка схемы
- Скетч 1: метеостанция с OLED-дисплеем
- Скетч 2: метеостанция с веб-сервером
- Заключение
- Настольная метеостанция на esp8266 с поддержкой wifi своими руками
- Шаг 1: Компоненты станции
- Шаг 2: ESP32
- Шаг 3: Дисплей Nextion
- Шаг 4: Датчик BME280
- Шаг 5: Соединяем части вместе
- Шаг 6: Код проекта
- Шаг 7: Заключительные мысли и улучшения
Домашняя метеостанция на ESP8266 и датчике BME280
Оживляя цикл публикаций про Raspberry Pi и Arduino, хочу написать статью о сборке домашней метеостанции на основе ESP8266 и цифрового датчика BME280.
BME280 разработан в группе компаний Bosch и включает в себя термометр, барометр и гигрометр. По результатам сравнительного исследования он является наиболее точным из недорогих датчиков подобного типа, часто используемых в DIY электронике.
Себестоимость используемых компонентов составляет меньше $10, а процесс сборки устройства займет не более 1 – 1.5 часов.
Что нам понадобится
Для реализации описываемого в статье проекта понадобится:
Продавцы, ссылки на которых я привел выше, проверены мной лично. Я сам заказывал у них эти товары и остался доволен качеством и скоростью выполнения заказа.
Датчик BME280 (как и многие другие подключаемые модули для Arduino / ESP8266) поставляется с нераспаянными ножками. Они идут в комплекте, но подпаивать их придется самостоятельно. Для пайки могу порекомендовать вот эту паяльную пасту.
Подключение ESP8266 к ПК
Изначально я хотел написать отдельную статью о подключении плат на основе ESP8266 к компьютеру и видах прошивок для них чтобы ссылаться на эту статью в дальнейшем. Но статья “не пошла”, поэтому напишу здесь вкратце, а более подробную информацию по любому из непонятных моментов можно найти в интернете.
Для того, чтобы компьютер увидел плату, нужно установить драйвер для USB-UART (USB -> COM TTL) моста. Используемые для этого моста контроллеры могут различаться в зависимости от версии платы, соответственно, будут различаться и устанавливаемые драйвера. Например, в моем случае используется модуль CH340G, но также могут использоваться модули CP2102. Хорошие, ответственные производители обычно пишут название используемого контроллера на самой плате, но их можно отличить и на глаз: CH340G – маленькая прямоугольная микросхема, а CP2102 имеет квадратную форму.
Если драйвер подобран и установлен правильно, то после подключения ESP8266 к компьютеру USB-кабелем в разделе “Порты (COM и LPT)” диспетчера устройств Windows появится новый виртуальный COM-порт, через который будет проходить обмен данными с платой.
Затем нужно загрузить на ESP8266 Arduino-совместимую прошивку от Ai-Thinker (легко находится и скачивается в интернете) через программу ESP8266Flasher.
Финальный шаг – запустить Arduino IDE и добавить поддержку ESP-модулей. После этого ESP8266 можно программировать как обычную плату Arduino.
Важный момент: не рекомендуется прикасаться к ESP8266 во включенном состоянии, особенно – если плата подключена к USB-порту компьютера. Очень легко случайно замкнуть пальцами контакты на плате, от чего в самом неудачном раскладе может сгореть как сам модуль, так и USB-порт.
Сборка схемы
Для удобства сборки следует использовать макетные платы и DuPont-провода. И то и другое можно найти как на AliExpress, так и в оффлайновых магазинах с радиодеталями.
Подключение BME280 к ESP8266:
3V — VIN
G — GND
D5 — SCL
D6 — SDA
Подключение OLED-дисплея:
G — GND
3V — VDD
D5 — SCK
D6 — SDA
И дисплей, и датчик BME280 используют I2C-шину и потому подключаются к одним и тем же пинам.
Скетч 1: метеостанция с OLED-дисплеем
Для компиляции и загрузки скетча нужно установить в Arduino дополнительные библиотеки:
После установки в файле библиотеки BME280 нужно вручную поправить адрес с 0x77 на 0x76:
(Установленные библиотеки Arduino IDE хранит в папке \Documents\Arduino\libraries текущего пользователя Windows)
После чего остается только скомпилировать и загрузить в память ESP8266 следующий скетч:
Вот так будет выглядеть собранное устройство в работе:
Датчик меряет все доступные ему показатели (температура, влажность, давление) и они выводятся на экран. Показатели обновляются – обновляется информация на экране. Все.
К слову, на фотографии выше можно увидеть какой низкий уровень влажности стоит в помещении зимой в период работы центрального отопления. Низкая влажность негативно влияет на самочувствие людей и комнатных растений, а также ускоряет деградацию деревянной мебели и картин.
Регулярное отслеживание показателей микроклимата в помещении может стать первым шагом к его оздоровлению путем установки увлажнителей воздуха, термостатов и автоматических проветривателей.
Скетч 2: метеостанция с веб-сервером
Еще один хороший вариант использование датчика BME280 – метеостанция с возможностью удаленного мониторинга через браузер.
В данном случае дисплейный модуль не задействован. ESP8266 подключается к Wi-Fi сети и поднимает веб-сервер, содержащий обновляемую показателями датчика страницу, которую можно открыть в браузере.
Хорошая статья на эту тему находится на англоязычном блоге Embedded Lab и там же можно скачать архив с готовым скетчем. Хочу только обратить внимание, что:
- У автора той статьи задействованы пины D3 и D4, тогда как у меня D5 и D6. Можно переподключить провода как предлагает он, а можно собрать устройство по моей схеме и переправить пины в скетче.
- Перед компиляцией скетча нужно ввести в него SSID и пароль своей Wi-Fi сети
Заключение
Вот так на основе ESP8266 и нескольких недорогих модулей можно собрать метеостанцию для домашнего использования.
Можно модернизировать схему, добавив в нее газоанализатор и датчик CO2, превратив тем самым устройство в полноценный монитор качества воздуха, точности которого будет более чем достаточно для домашнего применения.
Еще один вариант развития идеи – настроить отсылку данных с датчиков по MQTT-протоколу, благодаря чему устройство можно интегрировать в любую платформу умного дома и использовать получаемые данные для управления другими умными девайсами.
Источник
Настольная метеостанция на esp8266 с поддержкой wifi своими руками
В этом проекте будет реализована комнатная настольная метеостанция своими руками. Вы можете подумать, что таких проектов было уже много, но этот проект будет базироваться на новом чипе ESP32, также он будет оснащен новым датчиком BME280, этот датчик измеряет температуру, влажность и атмосферное давление.
Когда настольная метеостанция будет включена, она подключится к WiFi и запросит свежий прогноз погоды для заданной местности. Затем она отобразит его, наряду с данными датчика, на 3,2″ дисплее. Данные с датчика будут обновляться каждые 2 секунды, а данные о погоде — каждый час. Как вы видите, в этом проекте мы будем использовать последние технологии, доступные на сегодняшний день. Если у вас есть опыт в DIY, то проект займёт у вас всего 5 минут.
Если вы новичок, то просмотрите видео, в котором разобраны нюансы сборки.
Шаг 1: Компоненты станции
Чтобы построить свою станцию, нам понадобятся:
- Плата ESP32 (ссылка )
- Датчик BME280 I2C (ссылка )
- Дисплей 3.2” Nextion (ссылка )
- Небольшая макетная плата (ссылка )
- Немного проводов (ссылка )
Стоимость проекта будет варьироваться в районе $30.
Вместо модуля ESP32 можно использовать более дешевый чип ESP8266, но я решил использовать ESP32, чтобы получить представление об этом новом модуле и посмотреть, как он работает.
Шаг 2: ESP32
Это первый проект, который я собрал, используя чип ESP32. Если вы не знакомы с ним, чип ESP32 — это следующее поколение популярного чипа ESP8266. ESP32 предоставляет два 32-процессных ядра, работающих на 160MHz,большой объем памяти, WiFi, Bluetooth и много других функций. И это всего за $7.
Посмотрите видео с моим детальным описанием этой платы. Оно поможет понять, почему этот чип изменит наш подход к созданию вещей.
Шаг 3: Дисплей Nextion
Также, это первый проект, в котором я использовал тачевый дисплей Nextion. Это новый вид дисплеев, который оснащен собственным ARM-процессором, позволяющим настраивать дисплей и создавать графический интерфейс. Поэтому мы можем использовать его с любым микроконтроллером и получать хорошие результаты.
Шаг 4: Датчик BME280
Датчик BME280 — это новейший сенсор от Bosch. Он может измерять температуру, влажность и атмосферное давление. Нам нужен всего один датчик, чтобы собрать целую погодную станцию.
В дополнение, этот датчик очень маленький и он прост в управлении. Датчик управляется через интерфейс I2C, так что взаимодействие с Ардуино будет очень простым — для стабильной работы нам нужно будет запитать его и припаять всего пару проводов.
Также существует множество библиотек, разработанных для этого датчика, так что в нашем проекте мы можем использовать любую из них.
Заметка: нам нужен датчик BME280. Существует также датчик BMP280, который не измеряет влажность воздуха. Проверьте название перед тем, как купите датчик.
Шаг 5: Соединяем части вместе
Соединение модулей достаточно простое, вы можете увидеть это на приложенной схеме.
Так как датчик BME280 использует интерфейс I2C, нам нужно всего два провода, чтобы соединить его с ESP32. Я соединил датчик с пинами 26 и 27. В теории, каждый цифровой пин платы ESP32 может быть использован для взаимодействия с периферией, работающей на I2C. На практике, я обнаружил, что некоторые пины не работают, так как зарезервированы для других целей. Пины 26 и 27 работают без перебоев.
Чтобы отправить данные на дисплей, нам нужно соединить провод с пином TX0 на ESP32. Мне пришлось согнуть пин на 90 градусов, чтобы соединить его с дисплеем, так как плата ESP32 оказалась великоватой для макетной платы.
После сборки всех частей, нам нужно залить код на ESP32, а также залить интерфейс на дисплей Nextion. Если у вас возникли трудности при прошивке ESP32, зажмите кнопку BOOT сразу после нажатия кнопки загрузки в ИДЕ Ардуино.
Чтобы залить интерфейс на дисплей, скопируйте файл WeatherStation.tft, который будет приложен ниже, на пустую карту SD. Поместите карту в слот, располагающийся на задней части дисплея. После подачи питания, интерфейс будет загружен в дисплей — можно выключить его и извлечь карту, затем включить заново.
После успешной загрузки кода, станция соединится с WiFi, запросит данные о погоде с сайта openweathermap.org, а также отобразит данные с датчика. Давайте теперь посмотрим на программную часть проекта.
Шаг 6: Код проекта
Чтобы спарсить погодные данные, нам понадобится библиотека JSON для Ардуино. Также нам понадобится библиотека для датчика.
ESP32 BME280: ссылка
Arduino JSON: ссылка
Рассмотрим код. Сначала нам нужно отправить SSID и пароль нашей сети WiFi. Затем нам нужно ввести ключ API с сайта operweathermap.org. Чтобы создать собственный ключ, нужно зарегистрироваться на сайте. Получение текущей погоды бесплатно, но сайт предлагает больше услуг, если вы хотите платить за них. Затем нам нужно найти ID нашего местонахождения. Найдите ваш населённый пункт и скопируйте его ID из URL.
Затем скопируйте ваш ID в переменную CityID. Также скопируйте высоту над уровнем моря для вашего населённого пункта. Это необходимо для того, чтобы барометр показывал точные данные.
Теперь мы готовы идти дальше. Мы инициализировали датчик и подключились к WiFi. Теперь мы запросим с сервера погодные данные.
Ответ мы получим в формате JSON. Перед отправкой данных в библиотеку JSON, я вручную удалил некоторые символы, которые вызывали проблемы. После этого библиотека спокойно принимает данные, и мы можем сохранить их в переменные. После сохранения данных в переменные, всё, что нам нужно сделать — это отобразить их на дисплее и ждать, пока через час они не обновятся. Я отобразил на дисплее только прогноз погоды, но вы, при желании, можете вывести на него больше информации — всё сохраняется в переменные. Затем мы считываем информацию о температуре, влажности, давлении с датчика и также отправляем их на дисплей.
Чтобы обновить информацию на дисплее, мы просто отправляем команды на серийный порт:
Интерфейс дисплея Nextion состоит из заднего фона, текстовых блоков и картинки, которая меняется в зависимости от погоды. Посмотрите руководство к дисплею, чтобы узнать больше о его возможностях. Вы можете быстро спроектировать свои интерфейс, если хотите, чтобы дисплей отображал больше данных.
Или вы можете просто использовать мой код, приложенный к этой инструкции.
Шаг 7: Заключительные мысли и улучшения
Как вы видите, на сегодняшний день, искушенный человек может собрать своими руками удивительные вещи всего за несколько часов и написав всего несколько строчек кода. Проекты такого уровня были невообразимы даже два года назад.
Конечно, это только начало проекта. Я бы хотел добавить в него много улучшений, например графики, тачевую функциональность, может быть, заменил бы дисплей на другой, размером побольше. Также я бы напечатал на 3D принтере красивый корпус. Еще я бы спроектировал более интересный интерфейс и иконки. И у меня уже есть несколько свежих идей комнатных метеостанций, которые можно внедрить!
Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.
Источник