Делаем метеостанцию на базе Arduino
Содержание
- Общий принцип работы
- Виды датчиков
- Схема на датчике DHT11
- Станция с датчиком давления
- Датчик на Arduino Uno и плате расширения Troyka Shield
- Заключение
Современные технологии позволяют в любой момент узнать прогноз погоды — на текущую дату-время или будущее. Но в ряде случаев необходимо знать параметры окружающей среды «здесь и сейчас», для чего понадобится метеостанция. Это устройство можно приобрести готовым или собрать своими руками на базе контроллера Ардуино и связанных с ним датчиков. Такой прибор, в отличие от громоздких анемометров и термометров, компактен, дешев и благодаря небольшим размерам может быть легко перенесен куда угодно.
В статье мы рассмотрим, из чего состоит работающая под управлением Arduino метеостанция, и разберем несколько типовых схем.
Общий принцип работы
Измеряющая данные окружающей среды метеостанция на Ардуино состоит из нескольких основных компонентов:
- собственно плата управления Arduino (например, Uno). На нее поступает информация со внешних датчиков, контроллер выполняет вычисления и выводит информацию на экран;
- электронный дисплей — служит для отображения поступивших с контроллера данных в понятной человекочитаемой форме;
- сенсор влажности температуры. В подобных схемах популярны датчики DHT11 и DHT22. Они регистрируют данные среды и отдают их контроллеру;
- макетная плата — основа для сборки всех компонентов. На ней фиксируются все элементы метеостанции, по ней же прокладываются электрические соединения;
- соединительные провода — с «оголенными» концами под пайку или оснащенные штекерами.
Кроме того, в плату понадобится залить соответствующее программное обеспечение — скетч. Его содержимое зависит от набора элементов и выполняемых задач, примеры скетчей мы также рассмотрим ниже.
Виды датчиков
Для измерения параметров среды часто применяют три вида сенсоров:
Плюс первого — дешевизна, скорость работы и стабильность сигнала. Из минусов отметим сравнительно слабую программную реализацию библиотеки, высокую погрешность выполняемых измерений и не всегда подходящий диапазон рабочих температур. DHT22 выгодно отличается благодаря:
- малым погрешностям;
- высокой дальности сигнала;
- поддержке дробных значений.
Как и первый сенсор, DHT22 не работает без подгруженной библиотеки. Кроме того, для профессиональных задач его чувствительность и скорость реакции может стать недостаточной.
Датчики линейки SHT1x быстро срабатывают, имеют весьма низкую погрешность, экономичны и умеют «засыпать» при долгой неактивности. Из недостатков выделим:
- два цифровых интерфейса;
- невозможность работы без подключения программной библиотеки и диапазон от 0 до 50 градусов — как в других образцах. Его хватает не всегда.
По стоимости все три варианта примерно одинаковы. Для «домашних» установок чаще берут DHT11-22 за их сравнительную простоту в эксплуатации и настройке.
Схема на датчике DHT11
Выбор этого средства измерения температуры/влажности обусловлен его популярностью, дешевизной и надежностью — такой набор характеристик делает датчик отличным вариантом для домашнего проекта. DHT11 состоит из:
- определяющего влажность резистора;
- измеряющего температуру термистора.
Информация с выходов датчика идет на контроллер, в нашем случае это Ардуино.
Сенсор имеет следующие характеристики:
- рабочее напряжение — 3–5 В;
- питание — от источника в 2.5 мА;
- диапазон измерения влажности окружающей среды — 20–80% с погрешностью в 5%;
- диапазон измеряемых температур — 0–50 °С с погрешностью в 2%;
- частота измерений — раз в секунду;
- габариты — 15 на 15.15 на 5.5 мм.
На корпусе имеются четыре выхода, благодаря чему можно подключать сенсор к различным измерительным приборам. В домашней схеме будут использоваться лишь три:
Важно отметить, что подключать 5–10 кОм резистор на выход DATA необходимости нет. Иногда этот элемент встречается в других проектах, но в нашем случае он избыточен — плата уже несет на себе необходимый резистор.
В продаже встречаются и датчики DHT11 по отдельности, и в составе готового модуля. Рекомендуется найти последний вариант — он удобнее. В разных модулях внешний вид и конфигурация выходов могут различаться, но принцип везде одинаков, следует лишь обращать внимание на распиновку.
Методика взаимодействия
Датчик транслирует цифровой сигнал с закодированными в нем значениями влажности и температуры. Оба параметра передаются одновременно.
Связь происходит по следующему принципу:
- микроконтроллер отправляет сенсору запрос проверки состояния;
- DHT11 меняет битовую кодировку и отдает на Arduino результат;
- если формат запроса-ответа согласован с обеих сторон, на управляющую плату поступает пятибайтовый отчет о влажности и температуре.
- первые два байта — уровень температуры;
- вторые два — влажность;
- пятый байт — нужная для предотвращения ошибки измерений и передачи контрольная сумма.
Программная часть
Чтобы собранная метеостанция на базе Ардуино заработала, понадобится подходящий скетч.
Принципиальная схема
Так будет выглядеть схема сборки станции:
После сборки, прошивки и запуска на экране станет отображаться влажность и температура. Дисплей покажет:
- тепловой индекс — HiX;
- температуру воздуха — Т (temperature, в градусах);
- влажность — H (Humidity, в процентах).
Используется I2C-дисплей 1602.
Недостатки
Приведенная конструкция имеет один минус — при взаимодействии с экраном цифры округляются до целых. Для домашних вычислений это некритично, но при необходимости получить более точные величины придется заменить датчик на более продвинутый DHT22. Его поддержка в скетче есть по умолчанию.
Если используется простой DHT11, а нули после запятой не нужны или эстетически мешают, можно также добавить в код поддержку подсчетов с «плавающей точкой» — dtostrf.
Теперь рассмотрим образец метеостанции под Ардуино на основе DHT22 и с дополнительной функцией — измерением давления.
Станция с датчиком давления
Следующая модель будет уметь определять:
- влажность и температуру;
- уровень высоты;
- атмосферное давление.
Компоненты
Для сборки потребуются:
- сенсор DHT22;
- датчик давления BMP180;
- плата Ардуино Нано;
- lcd-экран с блоком I2C;
- резистор 10 кОм;
- плата макетная;
- припой;
- 40-контактный однорядный разъем;
- соединительные провода.
Придется паять и работать с контактами, поэтому также необходим паяльник и плоскогубцы.
Сенсор давления
Таковым послужит барометрический датчик с интерфейсом I2C BMP180. Он станет контролировать абсолютное значение параметра вокруг себя. Падение обычно сигнализирует о приближении грозы и наступлении дождя (поскольку им сопутствует область низкого давления), а увеличение, наоборот, говорит о прохождении области низкого давления и наступлении ясной сухой погоды.
Давление всегда зависит от высоты над уровнем моря и погодных условий в зоне измерения. Но в нашем случае измеряется относительное — как если бы метеостанция находилась на уровне моря.
Важно: BMP180 нуждается в свободном доступе к атмосфере, поэтому нельзя помещать его в закрытый корпус. В таком случае считывать давление воздуха он не сможет. Полностью выносить прибор наружу не обязательно — достаточно оставить ему небольшое отверстие для вентиляции. Если оставить сенсор открытым, показания станут сбиваться ветром, поэтому требуется продумать ветрозащиту.
Кроме того, монитор погоды должен быть защищен и от нагрева — воздействие источников тепла исказит показания температуры. Попадание воды также внесет помехи, в конструкции это нужно учесть и предусмотреть защиту.
Еще один важный момент — светочувствительность. Благодаря силикону в конструктиве BMP180 он способен улавливать попадающий через отверстие в корпусе микрочипа свет и нагреваться. Максимально точные измерения потребуют изоляции от окружающего света.
BMP180 соединяется через шину I2C по следующей схеме:
Сборка
Процесс сборки начинается с монтажа однорядных разъемов для DHT22 и Arduino:
От вывода DATA к GND припаян резистор на 10 кОм.
Далее монтируется разъем для BMP180 (питаться датчик будет от линии 3.3 В). Компоненты соединяются шиной I2C.
На последнем этапе та же шина соединяется с дисплеем.
Так выглядит домашняя метеостанция в сборе:
Пример вывода информации об атмосферном давлении:
Программный код
Для работы понадобятся скетч Ардуино и библиотеки датчиков. Все они доступны в приложениях к статье.
Датчик на Arduino Uno и плате расширения Troyka Shield
Рассмотрим еще одну погодную станцию. Ее особенности:
- использование цифрового метеосенсора troyka;
- термометр DS18B20;
- барометр Troyka V2.
- хранение данных на карточке MicroSD — для удобства их последующего анализа на любом устройстве.
Компоненты
Для проекта требуются:
- контроллер Arduino Uno;
- плата расширения Troyka Shield;
- метеодатчик;
- четырехразрядный цифровой дисплей-индикатор;
- барометр с troyka-блоком подтяжки;
- картридер и карточка micro-SD.
Порядок сборки
Система собирается по шагам.
- Установить плату расширения на Ардуино.
- Подключить к пинам шины I2C метеодатчик.
- Подсоединить дисплей в разъемы e-f на схеме. Пин CS идет на пин 10 микрокомпьютера Ардуино.
- Барометр вставляется в слот B, пины шины I2C.
- Термометр подключается в слот C, пин 4. Для его работы потребуется дополнительный модуль подтяжки.
- И, наконец, к слоту D и на пин 8 подключается картридер.
Программные компоненты
Для работы системы нужно «прошить» Ардуино соответствующей программой. Исходный текст доступен ниже по ссылке, а «залить» его в плату можно через Arduino IDE.
Заключение
Мы рассмотрели несколько примеров несложных приборов на Ардуино. Простота и доступность платформы и компонентов позволяет своими руками собрать функциональную и недорогую метеостанцию, которая справится и с задачами измерений дома/на даче, и с более серьезными вызовами, вплоть до научных исследований. А модульность Arduino дает возможность бесконечно дорабатывать и совершенствовать схемы, дополняя их новыми функциями — например, часами.
Источник: