Делаем метеостанцию на базе Arduino

Содержание

Современные технологии позволяют в любой момент узнать прогноз погоды — на текущую дату-время или будущее. Но в ряде случаев необходимо знать параметры окружающей среды «здесь и сейчас», для чего понадобится метеостанция. Это устройство можно приобрести готовым или собрать своими руками на базе контроллера Ардуино и связанных с ним датчиков. Такой прибор, в отличие от громоздких анемометров и термометров, компактен, дешев и благодаря небольшим размерам может быть легко перенесен куда угодно.

метеостанция влажность

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

Общий принцип работы

Измеряющая данные окружающей среды метеостанция на Ардуино состоит из нескольких основных компонентов:

  • собственно плата управления Arduino (например, Uno). На нее поступает информация со внешних датчиков, контроллер выполняет вычисления и выводит информацию на экран;
  • электронный дисплей — служит для отображения поступивших с контроллера данных в понятной человекочитаемой форме;
  • сенсор влажности температуры. В подобных схемах популярны датчики DHT11 и DHT22. Они регистрируют данные среды и отдают их контроллеру;
  • макетная плата — основа для сборки всех компонентов. На ней фиксируются все элементы метеостанции, по ней же прокладываются электрические соединения;
  • соединительные провода — с «оголенными» концами под пайку или оснащенные штекерами.

Кроме того, в плату понадобится залить соответствующее программное обеспечение — скетч. Его содержимое зависит от набора элементов и выполняемых задач, примеры скетчей мы также рассмотрим ниже.

Виды датчиков

Для измерения параметров среды часто применяют три вида сенсоров:

Датчик SHT1x

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

  • малым погрешностям;
  • высокой дальности сигнала;
  • поддержке дробных значений.

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

Датчики линейки SHT1x быстро срабатывают, имеют весьма низкую погрешность, экономичны и умеют «засыпать» при долгой неактивности. Из недостатков выделим:

  • два цифровых интерфейса;
  • невозможность работы без подключения программной библиотеки и диапазон от 0 до 50 градусов — как в других образцах. Его хватает не всегда.

По стоимости все три варианта примерно одинаковы. Для «домашних» установок чаще берут DHT11-22 за их сравнительную простоту в эксплуатации и настройке.

Схема на датчике DHT11

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

  • определяющего влажность резистора;
  • измеряющего температуру термистора.

Информация с выходов датчика идет на контроллер, в нашем случае это Ардуино.

Датчик DHT11

Сенсор имеет следующие характеристики:

  • рабочее напряжение — 3–5 В;
  • питание — от источника в 2.5 мА;
  • диапазон измерения влажности окружающей среды — 20–80% с погрешностью в 5%;
  • диапазон измеряемых температур — 0–50 °С с погрешностью в 2%;
  • частота измерений — раз в секунду;
  • габариты — 15 на 15.15 на 5.5 мм.

На корпусе имеются четыре выхода, благодаря чему можно подключать сенсор к различным измерительным приборам. В домашней схеме будут использоваться лишь три:

Важно отметить, что подключать 5–10 кОм резистор на выход DATA необходимости нет. Иногда этот элемент встречается в других проектах, но в нашем случае он избыточен — плата уже несет на себе необходимый резистор.

В продаже встречаются и датчики DHT11 по отдельности, и в составе готового модуля. Рекомендуется найти последний вариант — он удобнее. В разных модулях внешний вид и конфигурация выходов могут различаться, но принцип везде одинаков, следует лишь обращать внимание на распиновку.

Модуль DHT11

Методика взаимодействия

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

Связь происходит по следующему принципу:

  • микроконтроллер отправляет сенсору запрос проверки состояния;
  • DHT11 меняет битовую кодировку и отдает на Arduino результат;
  • если формат запроса-ответа согласован с обеих сторон, на управляющую плату поступает пятибайтовый отчет о влажности и температуре.
  • первые два байта — уровень температуры;
  • вторые два — влажность;
  • пятый байт — нужная для предотвращения ошибки измерений и передачи контрольная сумма.

Программная часть

Чтобы собранная метеостанция на базе Ардуино заработала, понадобится подходящий скетч.

Принципиальная схема

Так будет выглядеть схема сборки станции:

Принципиальная схема метеостанции

После сборки, прошивки и запуска на экране станет отображаться влажность и температура. Дисплей покажет:

  • тепловой индекс — HiX;
  • температуру воздуха — Т (temperature, в градусах);
  • влажность — H (Humidity, в процентах).

Используется I2C-дисплей 1602.

Дисплей 1602

Недостатки

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

Если используется простой DHT11, а нули после запятой не нужны или эстетически мешают, можно также добавить в код поддержку подсчетов с «плавающей точкой» — dtostrf.

Теперь рассмотрим образец метеостанции под Ардуино на основе DHT22 и с дополнительной функцией — измерением давления.

Станция с датчиком давления

Следующая модель будет уметь определять:

  • влажность и температуру;
  • уровень высоты;
  • атмосферное давление.

Компоненты

Для сборки потребуются:

  • сенсор DHT22;
  • датчик давления BMP180;
  • плата Ардуино Нано;
  • lcd-экран с блоком I2C;
  • резистор 10 кОм;
  • плата макетная;
  • припой;
  • 40-контактный однорядный разъем;
  • соединительные провода.

Придется паять и работать с контактами, поэтому также необходим паяльник и плоскогубцы.

Сенсор давления

Таковым послужит барометрический датчик с интерфейсом I2C BMP180. Он станет контролировать абсолютное значение параметра вокруг себя. Падение обычно сигнализирует о приближении грозы и наступлении дождя (поскольку им сопутствует область низкого давления), а увеличение, наоборот, говорит о прохождении области низкого давления и наступлении ясной сухой погоды.

Датчик BMP180

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

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

Кроме того, монитор погоды должен быть защищен и от нагрева — воздействие источников тепла исказит показания температуры. Попадание воды также внесет помехи, в конструкции это нужно учесть и предусмотреть защиту.

Еще один важный момент — светочувствительность. Благодаря силикону в конструктиве BMP180 он способен улавливать попадающий через отверстие в корпусе микрочипа свет и нагреваться. Максимально точные измерения потребуют изоляции от окружающего света.

Датчик bmr180 вид 2

BMP180 соединяется через шину I2C по следующей схеме:

Датчик bmp180 распиновка

Сборка

Процесс сборки начинается с монтажа однорядных разъемов для DHT22 и Arduino:

Начало сборки

От вывода DATA к GND припаян резистор на 10 кОм.

Резистор

Далее монтируется разъем для BMP180 (питаться датчик будет от линии 3.3 В). Компоненты соединяются шиной I2C.

Разъемы

На последнем этапе та же шина соединяется с дисплеем.

Так выглядит домашняя метеостанция в сборе:

Станция в сборе

Пример вывода информации об атмосферном давлении:

Показатели давления

Программный код

Для работы понадобятся скетч Ардуино и библиотеки датчиков. Все они доступны в приложениях к статье.

Скетч1

Датчик на Arduino Uno и плате расширения Troyka Shield

Рассмотрим еще одну погодную станцию. Ее особенности:

  • использование цифрового метеосенсора troyka;Метеосенсор
  • термометр DS18B20;Термометр
  • барометр Troyka V2.Барометр
  • хранение данных на карточке MicroSD — для удобства их последующего анализа на любом устройстве.

Компоненты

Для проекта требуются:

  • контроллер Arduino Uno;
  • плата расширения Troyka Shield;
  • метеодатчик;
  • четырехразрядный цифровой дисплей-индикатор;Дисплей
  • барометр с troyka-блоком подтяжки;Блок подтяжки
  • картридер и карточка micro-SD.

Порядок сборки

Система собирается по шагам.

  1. Установить плату расширения на Ардуино.Установка платы расширения
  2. Подключить к пинам шины I2C метеодатчик.Подключение метеодатчика
  3. Подсоединить дисплей в разъемы e-f на схеме. Пин CS идет на пин 10 микрокомпьютера Ардуино.Подключение дисплея
  4. Барометр вставляется в слот B, пины шины I2C.Подключение барометра
  5. Термометр подключается в слот C, пин 4. Для его работы потребуется дополнительный модуль подтяжки.Подключение термометра
  6. И, наконец, к слоту D и на пин 8 подключается картридер.Подключение картридера

Программные компоненты

Для работы системы нужно «прошить» Ардуино соответствующей программой. Исходный текст доступен ниже по ссылке, а «залить» его в плату можно через Arduino IDE.

Заключение

Мы рассмотрели несколько примеров несложных приборов на Ардуино. Простота и доступность платформы и компонентов позволяет своими руками собрать функциональную и недорогую метеостанцию, которая справится и с задачами измерений дома/на даче, и с более серьезными вызовами, вплоть до научных исследований. А модульность Arduino дает возможность бесконечно дорабатывать и совершенствовать схемы, дополняя их новыми функциями — например, часами.


Источник: osensorax.ru