Каталог
|
Автономная метеостанция как начало умного дома2020-04-02 Всі статті →Владислав Новицкий
ВступлениеСогласитесь, не всегда погода за окном совпадает с той, что дают нам погодные сайты. Это происходит по ряду причин: неравномерность распределения метеостанций, человеческий фактор при выборе окончательного результата, разность высот и т.д. Градусник, который весит за окном также не способен показать реальную температуру на улице, потому что на него влияет температура, отдаваемая домом. И в добавок хотелось бы немного больше информации, нежели одна температура. Так и родилась идея о создании метеостанции, которая была бы отдалена от дома на достаточное расстояние и давала полную картину погоды. СодержаниеМозгом станции было принято взять отладочную плату STM32F103C8T6, которую в народе называют «синяя таблетка» (рис.1). Она дешевая, доступная, на борту есть все необходимое для легкого старта. Для программирования использовал ST-Link V2, среда разработки – STM32CubeIDE. Настройки ножек микроконтроллера приведены на рисунке 2.
Рис. 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
Рис. 6. Wi-Fi модуль ESP8266 версия ESP-01 Измерения проводятся с помощью датчика BME280 (рис. 7). Он дает показания температуры, влажности и давления. Общается с STM через I2C шину. Библиотеку для работы с ним я взял из исходников и усовершенствовал. Вот ссылка: https://github.com/VNovytskyi/STM32_BME280
Рис. 7. Барометр BME280 5В I2C Для автономной работы использовал аккумулятор NCR18650B и солнечную панель 6В 1Вт. Зарядка аккумулятора происходит путем подачи напряжения с солнечной панели (через диод) на зарядное устройство TP4056 (рис.8). Во время зарядки периферия станции питается от солнечной панели, не затрагивая батарею. Только во время активной работы задействуется аккумулятор, покуда сама солнечная панель не выдает необходимой мощности.
Рис. 8. Зарядное устройство для литиевых аккумуляторов TP4056 Если станция питается от аккумулятора, то напряжение сначала подается на повышающий преобразователь MT3608 (рис. 9), потом на стабилизатор 3V3 (рис. 10) и дальше на периферию станции. MT3608 усовершенствован двумя конденсаторами на вход и на выход по 1000мкФ. Без них, при подключенном амперметре, Wi-Fi модуль не запускался, и станция циклически перезапускалась.
Рис. 9. Регулируемый повышающий преобразователь MT3608
Рис. 10. Модуль линейного стабилизатора 3.3В Для удобства использования была спаяна макетная плата (рис. 11), так что за качество контакта можно не беспокоиться. Солнечная панель и аккумулятор присоединяются с помощью зажимных коннекторов.
Рис. 11. Макетная плата метеостанции Светодиоды на плате сигнализируют о состоянии станции и активны, только в режиме замеров, в спящем режиме они отключены. В стадии тестирования солнечная панель размещалась на штативе, изначально предназначенном как держатель телефона. Даже при небольших лучиках солнца удалось добиться 20мА зарядки аккумулятора из возможных 160мА (рис. 12).
Рис. 12. Первый запуск метеостанции Когда метеостанция проснулась и сделала замеры, она отправляет их на сервер. Происходит это следующим образом: на ноутбуке установлен локальный сервер Apache с интерпретатором PHP. Модуль ESP-01 присоединяется к домашней Wi-Fi сети, устанавливает соединение с сервером и выполняет запрос на добавление данных, то есть обращается к файлу main.php и в теле запроса GET передает данные. А файл main.php в свою очередь устанавливает соединение с сервером баз данных, и заносит результаты в таблицу WeatherData. В результате мы можем открыть файл getTableWeather.php (рис. 13) и посмотреть таблицу или сделать это в phpMyAdmin. Структура таблица приведена на рис. 14.
Рис. 13. Отображение таблицы результатов
Рис. 14. Структура таблицы WeatherData Если зайти на основной сайт (для пользователей), то можем увидеть красивый вывод информации (рис. 15).
Рис. 15. Вид пользовательского сайта ЗаключениеВ процессе разработки метеостанции у меня родилась идея о создании умного дома, а метеостанция стала первым элементом этой задумки. Хотя изначально это был лишь маленький проект. В дальнейшем думаю разработать печатную плату для станции, заменить некоторые компоненты на более оптимальные для этого решения и поместить это все дело во влагонепроницаемый корпус для дальнейшего размещения на улице. Сейчас я работаю над созданием умного дома и в скором времени подключу к нему метеостанцию. Ссылка на проект: https://github.com/VNovytskyi/WeatherStation Переключение между режимами:
Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Dmytro
08.04.2020 23:56:03
отлично расписано
Софія
02.04.2020 16:25:43
Дуже цікава стаття, дякую
|