«

»

Распечатать Запись

Комнатная метеостанция на Arduino Pro

Описанный в [1] несложный велоспидометр на основе платы Arduino Pro Mini неплохо справляется со своими обязанностями, однако большую часть времени пылится вместе с велосипедом в гараже. Между тем это хорошее устройство для вывода на двух­разрядный светодиодный индикатор любой информации небольшого объёма. Подключив к нему какой-либо датчик, можно получить функционально совершенно другой прибор. В предлагаемой статье рассказано, как превратить его в простой измеритель температуры и относительной влажности воздуха.

В последнее время в продаже появи­лись датчики температуры и влаж­ности воздуха DHT11 [2] — недорогие малогабаритные устройства, в корпусе которых имеются резистивный измеритель влажности, терморезистор и электронный узел, опрашивающий дат­чики и передающий их показания по­требителю по цифровому интерфейсу, напоминающему 1-Wire. Датчики калиб­рованы и не требуют какой-либо регу­лировки при эксплуатации. Параметры DHT11 не слишком хороши, но вполне удовлетворительны для бытового применения. Он измеряет температуру от 0 до 50 °С с погрешностью ±2 °С и отно­сительную влажность воздуха от 20 до 90 % с погрешностью ±5 %.

В дежурном режиме (free status) на информационной линии датчика дол­жен быть установлен высокий логиче­ский уровень, что обеспечивается её соединением с плюсом источника пита­ния внешним резистором сопротивле­нием 4,7 кОм. Когда микроконтроллеру или другому устройству, к которому подключён датчик, требуются сведения о температуре и влажности, он устанав­ливает на информационной линии низ­кий логический уровень, затем снимает его и "слушает" линию. В ответ DHT11 передаёт 5 байтов (40 двоичных разря­дов) информации: два байта — измерен­ное значение влажности, два байта — измеренное значение температуры и один байт контрольной суммы. Подроб­нее протокол описан в [2].

В нашем случае микроконтроллер должен периодически опрашивать дат­чик, а затем поочерёдно выводить на индикатор полученные значения температуры и влажности. Двух разрядов цифро­вого индикатора как раз достаточно для их отображения.

Схема метеостан­ции показана на рис. 1. Она мало от­личается от приведённой в [1]. Подклю­чение светодиодного индикатора HG1 к плате Arduino Pro mini [3] осталось преж­ним. Вместо геркона SF1 (датчика враще­ния колеса) с ней со­единён датчик DHT11 (В1), однако информа­ционную линию дат­чика (вывод 2) оказа­лось удобным присо­единить не к контакту 02 (как геркон), а к контакту DO (RXI) пла­ты Arduino Pro mini. Этот контакт распо­ложен на её узкой стороне рядом с кон­тактами VCC и GND, на которые подают напряжение питания.

Рис. 1

Рис. 1

Питать устройство можно было бы и от трёх гальванических элементов типораз­мера ААА, как это сде­лано в [1]. Однако при постоянно включён­ном индикаторе ме­теостанция потребля­ет ток около 50 мА. Поэтому её удобнее питать от внешнего источника напряже­ния 5 В, например, от зарядного уст­ройства для сотового телефона. Его подключают к разъёму Х2 (microUSB).

Специальная печатная плата для ме­теостанции оказалась не нужна. Исполь­зована та же плата Arduino Pro mini с установленным прямо на неё светоди­одным индикатором, что и в велоспидо­метре. Для соединения с Arduino Pro mini датчика и источника питания собрана навесным монтажом небольшая комму­тационная плата. На ней размещены разъёмы Х1 и Х2 (гнездовая часть), ре­зистор R1 и гнездовая колодка для со­единения с контактами Arduino, в от­верстия которых впаяны штыри. Внешний вид конструкции по­казан на рис. 2.

Рис. 2

Рис. 2

Необходимо отметить, что в устройстве можно использовать готовый мо­дуль датчика влажности и температуры DHT11, в ко­тором датчик находится на небольшой печатной плате с разъёмом. Как правило, эквивалентный R3 (на рис. 1) резистор на ней уже имеется.

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

Рис. 3

Рис. 3

Программа (скетч) микроконтролле­ра метеостанции dht_2razr_segm_1 .ino разработана в IDE Arduino [4]. Для взаи­модействия с датчиком DHT11 она использует библиотеку dht, которую, прежде чем транслировать программу, следует скачать из Интернета по ссылке [5) и подключить к среде разработки Arduino IDE.

Программа работает следующим образом. Её блок начальной настройки Setup() после подачи питания гасит индикатор и устанавливает режим его работы — индикацию номера версии программы. Затем он инициализирует однопроводный последовательный ин­терфейс для связи с датчиком.

В основном цикле программы Loop(), в зависимости от режима рабо­ты, индикатор выводит информацию, вид которой задан значением перемен­ной var J:

1 — в течение 1 с отображает изме­ренное значение окружающей темпера­туры в градусах Цельсия. Признак этого режима — включённая десятичная точка в младшем (правом) разряде индикатора;

2 и 4 — индикатор погашен на 0,6 с. В это время происходит обмен информацией между датчиком и микроконт­роллером, а полученные результаты присваиваются переменным;

3 — в течение 1 с отображает изме­ренное значение относительной влаж­ности воздуха. Точки на индикаторе в этом режиме погашены;

5 — в течение 1 с отображает номер версии программы.

Как уже было сказано, в процедуре Setup() переменной varj присвоено значение 5, поэтому работа процедуры Loop() начинается с вывода номера версии. Затем циклически перебирают­ся значения var i от 1 до 4.

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

После подачи питания на плате Arduino Pro mini включается сигнализи­рующий об этом светодиод LED1 и кратковременно вспыхивает свето­диод D3. По завершении работы про­граммы-загрузчика светодиод D3 све­тит непрерывно. На секунду на индика­торе появляется номер версии про­граммы ("0.1"), затем она переходит в рабочий режим. На индикаторе попе­ременно с паузами 0,6 с на 1 с появ­ляются измеренные значения темпе­ратуры в градусах Цельсия и относи­тельной влажности воздуха в процен­тах.

Вместо датчика DHT11 в конструк­ции можно использовать более точный датчик температуры DS18B20 [6], под­ключив его к разъёму Х1, как показано в верхнем левом углу на рис. 1. Влаж­ность после этого, конечно, измеряться не будет. Датчик DS18B20 распростра­нён и недорог. Он имеет цифровой интерфейс 1 -Wire, легко реализуемый с помощью любого микроконтроллера, калиброван изготовителем и не требует какой-либо подстройки в процессе экс­плуатации. Датчик способен работать в интервале температуры -55...+125 °С с погрешностью не хуже ±2 °С. В интер­вале температуры -10...+85 °С гаранти­рована погрешность не хуже ±0,5 °С. Для обмена информацией с датчиком DS18B20 используется интерфейс 1- Wire, протокол обмена по которому существенно сложнее, чем используе­мый для связи с DHT11. Он подробно описан в [7].

Для работы с датчиком DS18B20 в модуль Arduino Pro mini нужно загрузить программу ds_2razr_segm4.ino. Она отличается от описанной выше исполь­зованием для организа­ции обмена по интер­фейсу 1-Wire библиотеки OneWire [8] и тем, что и в режиме 1, и в режиме 3 на индикатор выводится одинаковая информа­ция — полученное от дат­чика значение температу­ры. Если она ниже нуля, то отображаются только це­лые градусы со знаком минус, а при температуре

ниже -9 °С индикатор гаснет. Темпера­тура от 0 до 9,9 °С отображается с одним десятичным знаком после запя­той, выше — только целая часть её значения.

ЛИТЕРАТУРА

  1. Пахомов А. Велоспидометр на Arduino. — Радио, 2015, № 11, с. 44
  2. DHT11 Humidity & Temperature Sensor. — URL: http://www.robotshop.com/PDF/dht11.pdf (10.08.15).
  3. Arduino Pro Mini. — URL: http://arduino.ru/Hardware/ArduinoBoardProMini
  4. Download the Arduino Software. — URL: https://www.arduino.cc/en/Main/Software
  5. Библиотека DHT к — URL: http://iarduino.ru/lib/DHT.rar (10.08.15).
  6. DS18B20 Programmable Resolution 1-Wire Digital Thermometer. — URL: http://datasheets. maximintegrated.com/en/ds/DS18B20.pdf
  7. Dallas Semiconductor’s 1 -Wire Protocol. — URL: http://playground.arduino.cc/Learning/OneWire (14.08.15).
  8. Library for Dallas/Maxim 1 -Wire Chips. — https://github.com/PaulStoffregen/OneWire

Программы микроконт­роллера

Автор: А. ПАХОМОВ, г. Владимир
Источник: журнал Радио №12, 2015

Постоянная ссылка на это сообщение: http://meandr.org/archives/29742

Добавить комментарий