Шановні друзі!
26 та 31 грудня магазин працюватиме до 16 години. 1 та 2 січня магазин працювати не буде.
Вітаємо всіх з Різдвом та Новим Роком!
Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Автономная метеостанция как начало умного дома

2020-04-02

Всі статті →

Владислав Новицкий

Описание: C:\Users\vladyslavN\Documents\Projects\KievWeather\Website\images\4.jpg

Вступление

Согласитесь, не всегда погода за окном совпадает с той, что дают нам погодные сайты. Это происходит по ряду причин: неравномерность распределения метеостанций, человеческий фактор при выборе окончательного результата, разность высот и т.д. Градусник, который весит за окном также не способен показать реальную температуру на улице, потому что на него влияет температура, отдаваемая домом. И в добавок хотелось бы немного больше информации, нежели одна температура. Так и родилась идея о создании метеостанции, которая была бы отдалена от дома на достаточное расстояние и давала полную картину погоды.

Содержание

Мозгом станции было принято взять отладочную плату STM32F103C8T6, которую в народе называют «синяя таблетка» (рис.1). Она дешевая, доступная, на борту есть все необходимое для легкого старта. Для программирования использовал ST-Link V2, среда разработки – STM32CubeIDE. Настройки ножек микроконтроллера приведены на рисунке 2.

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2178.JPG

Рис. 1. Отладочная плата STM32F103C8T6

Рис. 2. Конфигурация ножек микроконтроллера

Покуда основную часть времени станция должна спать, вводим ее в режим Standby. Это самый энергосберегающий режим на этом МК. Согласно технической спецификации в данном режиме остаются работать часы реального времени (далее RTC) и поддерживаются значения только специальных регистров. Нам нужен лишь RTC для того, чтобы вовремя проснуться, сделать замеры, отправить их на сервер и снова заснуть. На рисунке 3 изображено описание каждого из доступных режимов сна для нашего МК. Ссылка на техническую спецификацию:

https://www.st.com/resource/en/datasheet/stm32f103c8.pdf

Рис. 3. Описание режимов низкого энергопотребления STM32F103

Я решил, что поддерживать точное текущее время на станции нет смысла, поэтому, как только мы выходим из сна, мы настраиваем время на 00:00:00 и ставим будильник на 01:00:00 (рис.4). Таким образом каждый час мы получаем новые данные. Вход в режим Standby проиллюстрирован на рисунке 5. У этого режима есть одна особенность, отличающая его от остальных режимов – МК не продолжает выполнять программу с места, в котором он заснул, а начинает выполнять программу с самого начала, будто ему выключили и включили питание.

Рис. 4. Настройка RTC и будильника

Рис. 5. Код входа в режим Standby

Для передачи данных был выбрать модуль ESP-01 (рис.6). Поближе к ножкам питания был припаян конденсатор на 1000 мкФ для стабильной работы. Общается модуль с мозгом на UART интерфейсе. Библиотеку для работы с ним я написал сам, но можно взять и любую другую. Вот ссылка: https://github.com/VNovytskyi/STM32_ESP8266

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2184.JPG

Рис. 6. Wi-Fi модуль ESP8266 версия ESP-01

Измерения проводятся с помощью датчика BME280 (рис. 7). Он дает показания температуры, влажности и давления. Общается с STM через I2C шину. Библиотеку для работы с ним я взял из исходников и усовершенствовал. Вот ссылка:

https://github.com/VNovytskyi/STM32_BME280

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2181.JPG

Рис. 7. Барометр BME280 5В I2C

Для автономной работы использовал аккумулятор NCR18650B и солнечную панель 6В 1Вт. Зарядка аккумулятора происходит путем подачи напряжения с солнечной панели (через диод) на зарядное устройство TP4056 (рис.8). Во время зарядки периферия станции питается от солнечной панели, не затрагивая батарею. Только во время активной работы задействуется аккумулятор, покуда сама солнечная панель не выдает необходимой мощности.

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2182.JPG

Рис. 8. Зарядное устройство для литиевых аккумуляторов TP4056

Если станция питается от аккумулятора, то напряжение сначала подается на повышающий преобразователь MT3608 (рис. 9), потом на стабилизатор 3V3 (рис. 10) и дальше на периферию станции. MT3608 усовершенствован двумя конденсаторами на вход и на выход по 1000мкФ. Без них, при подключенном амперметре, Wi-Fi модуль не запускался, и станция циклически перезапускалась.

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2180.JPG

Рис. 9. Регулируемый повышающий преобразователь MT3608

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2183.JPG

Рис. 10. Модуль линейного стабилизатора 3.3В

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

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\DSC_2185.JPG

Рис. 11. Макетная плата метеостанции

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

В стадии тестирования солнечная панель размещалась на штативе, изначально предназначенном как держатель телефона.

Даже при небольших лучиках солнца удалось добиться 20мА зарядки аккумулятора из возможных 160мА (рис. 12).

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\Фото\2020_02_19.JPG

Рис. 12. Первый запуск метеостанции

Когда метеостанция проснулась и сделала замеры, она отправляет их на сервер. Происходит это следующим образом: на ноутбуке установлен локальный сервер Apache с интерпретатором PHP. Модуль ESP-01 присоединяется к домашней Wi-Fi сети, устанавливает соединение с сервером и выполняет запрос на добавление данных, то есть обращается к файлу main.php и в теле запроса GET передает данные. А файл main.php в свою очередь устанавливает соединение с сервером баз данных, и заносит результаты в таблицу WeatherData. В результате мы можем открыть файл getTableWeather.php (рис. 13) и посмотреть таблицу или сделать это в phpMyAdmin. Структура таблица приведена на рис. 14.

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\Фото\6.PNG

Рис. 13. Отображение таблицы результатов

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\Фото\8.PNG

Рис. 14. Структура таблицы WeatherData

Если зайти на основной сайт (для пользователей), то можем увидеть красивый вывод информации (рис. 15).

Описание: C:\Users\vladyslavN\Desktop\Статья о метеостанции\Фото\7.PNG

Рис. 15. Вид пользовательского сайта

Заключение

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

Сейчас я работаю над созданием умного дома и в скором времени подключу к нему метеостанцию.

Ссылка на проект: https://github.com/VNovytskyi/WeatherStation

Переключение между режимами:

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Загальна оцінка:

Оцінка "Автономная метеостанция как начало умного дома"
5 з 5
зроблена на основі 2 оцінок 2 клієнтських відгуків.

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Dmytro
08.04.2020 23:56:03
отлично расписано
Софія
02.04.2020 16:25:43
Дуже цікава стаття, дякую
оплата картами Visa і MasterCard