Метеостанция на микроконтроллере своими руками – Цифровая комнатная метеостанция — Автоматика для дома — Умный дом

Цифровая комнатная метеостанция - Автоматика для дома - Умный дом

Владимир Макаров.

(хроно-термо-гигро-барометр)

Как поется в известной песне «Главней всего погода в доме…». Конечно автор под погодой имел ввиду душевное состояние супругов живущих под одной крышей. Но если подходить к этой фразе буквально, то она о том, что под крышей кроме душевного должен быть и климатический комфорт. Предлагаемое устройство обеспечивает измерение и отображение на светодиодном индикаторе температуры и относительной влажности воздуха в помещении, значения атмосферного давления и текущего времени.

Станция снабжена датчиком движения, который включает ее при появлении человека в зоне действия датчика. Этот режим позволяет экономить потребляемую энергию и использовать в качестве источника питания гальванические батареи. Кроме того, этот режим удобно использовать в спальне - выключенный дисплей станции не будет раздражать своим свечением. В этом случае для включения станции будет достаточно выполнить движение рукой или ногой.

Внешний вид станции показан на рисунках (Рисунок 1 и Рисунок 2).

Рисунок 1.
Внешний вид станции

Рисунок 2.
Внешний вид станции (обратная сторона)

Видео с демонстрацией работы станции представлено ниже:


 

Электрическая схема.

Схема электрическая принципиальная представлена на рисунке 3.

Рисунок 3.
Схема электрическая принципиальная.

Станция собрана на микроконтроллере ATmega8. Цепочка R1С1 обеспечивает начальный сброс (Reset) микроконтроллера при включении. Предусмотрено внутрисхемное программирование МК через разъем XP3 «SPI программатор».
Фьюзы МК ATmega8: HIGH=0xD9, LOW=0xE4.

В качестве дисплея используется четырех-разрядный 7-сегментный индикатор типа CL5642BN c общим анодом и двухточечным («:») разделителем часов и минут. Катоды сегментов индикатора подключены к МК через ограничительные резисторы. МК обеспечивает динамическую индикацию поочередно включая транзисторные ключи VT3…VT6.

Хронометр собран на микросхеме DS1307 по штатной схеме включения. Точность хода часов обеспечивается кварцевым резонатором Y1 с частотой 32768Гц. При отсутствии основного питания (5 Вольт) непрерывность хода часов обеспечивается резервным источником питания на гальваническом элементе CR2032 (3 Вольта). Взаимодействие МК с микросхемой DS1307 осуществляется по шине TWI (I2C). Линии шины TWI «подтянуты» к питанию VCC2 резисторами R20, R21. Установка часов и минут обеспечивается кнопками SA1 («Часы+»), SA2 («Минуты+»), SA3 («Установка»). При этом необходимо в момент начала цикла отображения данных на дисплее нажать и удерживать кнопку «Установка». Нажатием или нажатием с удержанием кнопок «Часы+» или «Минуты+» устанавливается время хронометра. При отпускании кнопки «Установка» в микросхему DS1307 в соответствующие ячейки запишутся значения часов и минут, отображенные на дисплее, а в ячейку секунд запишется значение 0. Таким образом можно точно синхронизировать время с внешними эталонными источниками точного времени (например, от вещательных радиостанций или телевидения).

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

Измерение температуры осуществляется датчиком DHT11. МК управляет датчиком по последовательному однопроводному двунаправленному интерфейсу. Линия интерфейса «подтянута» к питанию VCC2 резистором R19.

Для экономного расходования энергии батарей микроконтроллер большую часть своего времени пребывает в состоянии глубокого сна («power-down»). При этом МК перед засыпанием обесточивает все измерительные датчики, подключенные к VCC2 (хронометр, датчик атмосферного давления, датчик влажности и температуры). Обесточивание датчиков обеспечивается ключами на транзисторах VT1 и VT2.

Для пробуждения МК в схему станции включен датчик движения HC-SR501. Его задача – вывести МК из состояния сна. При срабатывании датчик посылает сигнал МК, который пробуждается сам и подает питание VCC2 на периферийные датчики (хронометр, датчик атмосферного давления, датчик влажности и температуры). Ключ на транзисторе VT7 обеспечивает инверсию сигнала датчика движения для согласования с МК. Переключатель «Движение» позволяет отключить датчик движения, для еще большей экономии энергии батарей. В этом случае альтернативную команду на пробуждение МК можно подать нажатием кнопки «Установка».

Питание станции осуществляется от двух альтернативных типов источников: от трех батарей типа АА или от сетевого источника питания 5 Вольт по шине USB. Для переключения между источниками питания необходимо установить переключатель «Питание» в одно из положений: «USB» или «Батарея». При питании от батарей ток потребления станции в режиме сна составляет не более 200мкА, что при емкости батареи 2000мАч соответствует 10000 часам (более одного года) непрерывной работы.

При выборе сетевого источника питания следует учитывать, что пиковый ток потребления станции (во время измерения и при включенном дисплее) не превышает 100мА. Поэтому можно использовать практически любое зарядное устройство.

При питании от шины USB иногда целесообразно обеспечить постоянное измерение значений датчиками и отображение данных на дисплее. Для этого необходимо установить переключатель «Дисплей» в положение «Вкл». В этом случае МК не будет переводится в состояние сна.

 

Печатные платы.

Печатные платы разработаны в программе Dip Trace. Они выполнены на одностороннем фольгированном стеклотекстолите. Расположение деталей на основной печатной плате показано на рисунке (Рисунок 4). На рисунке перемычки со стороны монтажа выделены цветными ломаными линиями. Печатная плата со стороны дорожек показана на рисунке (Рисунок 5).

Рисунок 4.
Печатная плата (вид со стороны радиодеталей).

Рисунок 5.
Печатная плата (вид снизу, зеркальное отображение).

 

Кнопки и переключатели пульта управления станцией установлены на отдельной печатной плате (Рисунок 6 и Рисунок 7).

Рисунок 6.
Печатная плата Пульта управления (вид сверху).

Рисунок 7.
Печатная плата Пульта управления (вид со стороны дорожек).

 

Гнездо для подключения USB кабеля установлено на отдельной плате, купленной на AliExpress (Рисунок 8).

Рисунок 8.
Плата с гнездом USB.

 

Монтаж.

Станция смонтирована в корпусе универсальной коробки для кабельных каналов «Промрукав» - IP42; 400V; полистирол ГОСТ Р 50827.1-2009 ТУ 3464-001-97341529-2012 Артикул 40-0460.

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

Батарея питания – три элемента AA 1.5 Вольт каждый размещены в специализированном держателе – «кроватке» .

Размещение радиодеталей на печатной плате показан на рисунке (Рисунок 9).

Рисунок 9.
Внешний вид размещения деталей на плате.

 

Архив к статье «CTBH.rar» содержит:

     1.   Папку CTBH – файлы проекта на Си в среде Atmel Studio 7.

     2.   CTBH.dch – схема электрическая принципиальная в формате Dip Trace.
     3.   CTBH.dip – печатная плата устройства в формате Dip Trace.
     4.   CTBH_Buttons.dip – печатная плата Пульта управления в формате Dip Trace.
     5.   CTBH.hex – загрузочный файл для МК.

Удачи Вам в творчестве и всего наилучшего!

Скачать архив.

 

vprl.ru

Очередной умный дом, в нескольких частях. Метеостанция из подручных материалов

Просматривая разные проекты метеостанций, заметил одну тенденцию. Это или датчик температуры и влажности, чаще всего всеми любимый китайский DHT-11 или DHT-22, к которым добавляют либо датчик освещенности (Метеостанция на Arduino с визуализацией данных) либо давления (Ethernet метеостанция), или покупное-навороченное за много сотен долларов (Автоматическая метеостанция на даче)

Так как лично для меня — метеостанция без измерения направления и скорости ветра не метеостанция, а потратить порядка 700USD на по большому счету игрушку я не готов, то решено было сделать похожее на «дорогое-навороченное» но занедорого.


Электроника


  1. Датчик температуры — LM35. Включен с возможностью измерения отрицательных температур
  2. Куда уж без него — датчик влажности и температуры DHT11
  3. Датчик давления — HP03SA
  4. Датчик освещенности — фоторезистор LXD5516
  5. Датчик скорости ветра — обычный датчик Холла

Теперь о измерении направления ветра. Было много вариантов, от оптических энкодеров — заводских (дорого) или самодельных в виде нескольких пар светодиодов и фотодиодов, и диска с кодом Грея (сложно и много компонентов), до магнита и 4-8 герконов (слишком просто и неточно). В итоге выбор пал на AS5040 – магнитный энкодер. Так как особая точность не нужна, то аналоговый выход энкодера подключен к ADC микроконтроллера.

Микроконтроллер — PIC16F88. Выход — RS485 в внутреннюю сеть умного дома, о котором этот цикл статей. Вся электронная часть собрана на трех платах.

На этом с электроникой все, никаких нюансов, ничего интересного, все по даташитам. Переходим к механике.

Механика


К сожалению, напечатать корпус на 3D принтере возможности нет, а у заводских корпусов с водонепроницаемостью беда практически у всех. К тому же подшипники и все остальное — тела вращения, значит круглый корпус будет самым логичным выбором. Пришлось обратить взор на другие сферы — на водоснабжение. В качестве корпуса взята соединительная муфта «на 32» для канализации, и два патрубка для размещения в них подшипниковых узлов. Из латуни были выточены две заглушки, в которых запрессованы по два подшипника 626.

Магниты… Магнит для датчика скорости подойдет практически любой, а вот с датчиком направления было сложнее. Ему нужен круглый магнит с намагниченностью от края до края

В то время как у основной массы продающихся — разные полюса на разных сторонах.

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

В собранном виде подшипниковые узлы выглядят так

После изготовления и сборки плат — датчики скорости и направления ветра принимают окончательный вид

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

В качестве датчика дождя так же используем половинку теннисного шарика, в котором между двумя слоями геотекстиля расположены два контакта

Собираем, подключаем и прикручиваем повыше

Интерфейс


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

Температура текущая, минимум, максимум, направление изменения. Давление, аналогично. Влажность. Ветер — направление и роза ветров. Цифры нужны скорее для отладки, показывают сколько времени в каком секторе был флюгер. Скорость ветра, время, показания датчика освещенности (без калибровки, то что измерил ADC) и датчик дождя. Все данные и обработка — ведутся в микроконтроллере метеостанции.

Второй тип интерфейса — на основе виджетов. Тут данных меньше, температура, влажность, давление, скорость и направление ветра

И куда уж без Android Wear — на часах

В связи с тем, что раз в минуту происходит опрос всех контроллеров с записью в БД— то любые метеоданные доступны для анализа или отображения в виде графиков

habr.com

Говорящая метеостанция своими руками

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

Нам понадобится:

  1. Arduino - я использую Arduino Pro mini, но можно и другую, например с USB портом что бы не использовать внешний программатор. В свое время я закупил кучу Arduino Pro mini по хорошей цене, у нее компактные размеры и выводов хватает.
  2. LCD1602 I2C - это простой LCD 1602 дисплей с дополнительным модулем с подключением по шине I2C. Так мы сократим количество проводов + сможем управлять яркостью подсветки.
  3. BMP180 - датчик давления и температуры. Он дешевый и имеет малое энергопотребление. Сегодня существует более продвинутая версия этого датчика: BMP280 - это влажность, температура и давление.
  4. TTP223 - сенсорный выключатель. По умолчанию он не дает сигнал при нажатии, нет нажатия нет сигнала. Поэтому замыкать перемычки на модуле не нужно.
  5. ISD1820 - модуль записи, используется как независимый модуль, но мы управляем им с помощью Arduino. Изменением сигнала на выводе"P-E"
  6. Плата с гнездом microUSB - вообще можно не использовать и припаять USB кабель напрямую к - и + Arduino, и дальше развести по другим модулям.
  7. Корпус для нашего устройства, я покупал на Aliexpress, но можно использовать любой другой!

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

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

Все модули и компоненты покупал на Aliexpress:

✔ Arduino Pro mini: http://ali.ski/B6bKD
✔ LCD1602 I2C: http://ali.ski/d137R
✔ BMP180: http://ali.ski/_4EdsM
✔ TTP223: http://ali.ski/SiACd
✔ ISD1820: http://ali.ski/HrpZyR
✔ 10 шт. Micro USB к DIP-адаптер 5pin: http://ali.ski/mFtDbL

Никогда не понимал почему "это" называют схемой, но специально потратил время на рисование такой инструкции для чайника.

Так же предлагаю посмотреть мое видео по сборке данного девайса:

После включения по схеме мы можем записать нашу фразу на "диктофон". Для этого:

  1. Подаем питание
  2. Нажимаем на красную кнопку на ISD1820
  3. Диктуем фразу
  4. В конце записи отпускаем красную кнопку
  5. Для проверки записи нажимаем PLAYE

Для прошивки Arduino Pro mini, нам понадобится среда программирования Arduino 1.6.5 (версия имеет значение). Лучше всего качать на оф.сайте проекта Arduino.

Так же нам понадобится библиотека для работы с BMP180 от Adafruit написанная под BMP085 датчик, но полностью подходит для нас. Вроде это Adafruit_BMP085_Unified-master. Мне пришлось перебрать много библиотек, поэтому приложу 3 шт. Одна из них точно работает! Так же добавил библиотеку для работы с LCD1602

Ну и конечно мой "бадлокорский" исходник:

#include <Adafruit_BMP085.h> //#include <Adafruit_BME280.h> #include <Wire.h> // библиотека для управления устройствами по I2C #include <LiquidCrystal_I2C.h> // подключаем би

kirill1985.ru

Народная метеостанция: vladikoms — LiveJournal

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



Начнем с грабель.

Грабли №1. Наверное кто-нить помнит что в начале прошлого года я испытывал радиомодули на базе чипа nRF24L01+ c усилителем RFX2401C и в дальнейшем собирал радиодатчик

Увы, данная конструкция работать не захотела. Не смотря на все попытки, мне так и не удалось обеспечить надёжную двухстороннюю связь радиомодулей на значительных расстояниях. Конструкция отняла довольно много сил и времени, но, в силу объективных причин, пришлось отказаться от этого варианта.

И тогда решил достать из закромов опытно-экспериментальный маршрутизатор TP Link MR3220 c системой OpenWRT на борту.

Принципиальная схема метеостанции несколько отличается от той, которую разрабатывал ранее. Первое отличие - применение вместо Arduino Pro Mini платы Arduino Nano. Это позволило выполнять удалённую перепрошивку микроконтроллера, что очень удобно когда физический доступ на объект затруднён

Грабли №2 Я применил китайский клон Arduino Nano v.3.0, о котором подробнее рассказывал здесь. Но возникла неожиданная проблема - при открытии маршрутизатором USB-порта, ардуинка стала перезагружаться. Все возможные варианты конфигурирования USB порта командой stty результата не принесли. С FT232RL такой проблемы не наблюдалось. Пришлось подключить RC-цепочку R1C1 на свободный порт GPIO7 маршрутизатора, это схемное решение позволило блокировать перезагрузку в нормальном режиме работы микроконтроллера. При необходимости перепрошивки нужно вручную включать GPIO7.

[Терминальные команды управления GPIO]
Конфигурирование порта

echo "7" > /sys/class/gpio/export

Конфигурируем GPIO7 как выход

echo out > /sys/class/gpio/gpio7/direction

Включить GPIO7

echo 1 > /sys/class/gpio/gpio7/value

Выключить GPIO7:

echo 0 > /sys/class/gpio/gpio7/value

Проверить состояние порта:

cat /sys/class/gpio/gpio7/value

Так как точность термодатчиков семейства DS1820 при отрицательных температурах оставалась под вопросом, для точного измерения температуры решил дополнительно использовать медный термометр сопротивления ТСМ-50М совместно с измерительным преобразователем Ш79. Разумеется, предварительно откалибровал систему с использованием поверенных образцовых приборов и добился погрешности измерения не более 0.2 градуса в диапазоне температур -50...+50 градусов Цельсия.

Ш79 это уже достаточно древний, весьма надёжный советский преобразователь, построенный по классической МДМ-схеме с унифицированным токовым выходом 0...5 мА или напряжением 0...10 В. В данном случае использовал токовый сигнал.

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

Печатная плата метеоконтроллера

Контроллер поместил в гермобокс

Маршрутизатор и метеоконтроллер закрепил на боковой стенке Ш79.

Вид сбоку

И вся эта система помещается в металлический ящик

Внутренности ящика

Так как ещё не знал в каком помещении будет установлен данный шкаф, решил сделать ему обогрев. Температура внутри ящика поддерживается обыкновенным биметаллическим термостатом, на фото выше виден его круглый корпус.

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

Конструкция в собранном виде

Выносные датчики температуры и влажности расположены на отдельной печатной плате

Для защиты от атмосферных воздействий плата покрыта лаком ХСЛ

Далее изготовил пластмассовый кожух, который обернул пищевой фольгой и хорошенько замотал скотчем.

Сверху кожух закрывает крышка

Внутрь кожуха поместил плату с датчиками и растянул её при помощи толстой рыболовной лески. Это сделано для того чтобы снизить теплопередачу между кожухом и платой датчиков. Данную конструкцию почему-то решил назвать измерительной ячейкой.

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

О конструкции анемометра более подробно рассказывал тут.

UPD: В настоящее время используется новая конструкция анемометра, подробнее можно почитать здесь. Программа для работы с данным анемометром приведена в конце статьи.

Все выносные датчики соединяются с контроллером посредством 5 парного магистрального телефонного кабеля ТППэп длиной 100 метров. На конце кабеля распаял слегка модернизированную соединительную коробку КРТН-10.

Грабли №3 Для защиты контроллера от атмосферной статики и возможных грозовых перенапряжений хотел поставить защитные диоды 1.5КЕ7.5 на порты D2, D3, D4. Увы, собственная ёмкость данных диодов не позволила пропускать цифровые данные. Поэтому пришлось ограничиться установкой диода D1 по питанию +5V и заземлением экранной оболочки магистрального кабеля.

К данной коробочке подключаются сами датчики

Измерительная ячейка установлена на относительно открытом участке местности на высоте 3-х метров от поверхности земли, это на метр выше положенного по правилам, но сделал это намеренно, т.к. в нашей местности есть вероятность появления высоких сугробов.

Анемометр укреплён на высоте 5 метров, по хорошему нужно ставить выше, но с этим есть конструктивные сложности. Пусть пока поработает так.

Программная часть особо не изменилась: на маршрутизаторе работает php-скрипт отсылки данных на сервер narodmon

который каждые 5 минут запускается планировщиком cron

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

P.S. А вообще использование Wi-Fi для передачи метеоданных не оптимально, было бы лучше использовать УКВ-диапазон, собственно, так и сделано на автоматических метеостанциях. Это повысит дальность связи и снизит требования к месту установки, точнее к наличию прямой радиовидимости.

Принципиальную схему и печатные платы можно скачать здесь.

Программное обеспечение

История версий:

V1. Реализована поддержка базового функционала
V2. Увеличено разрешение датчика атмосферного давления. Изменен алгоритм расчёта значений скорости ветра.
V3. Переход на новый тип анемометра. Изменение алгоритма подсчета количества импульсов с анемометра.
V4. Увеличено разрешение датчика скорости ветра.

vladikoms.livejournal.com

Как сделать погодную станцию своими руками

Вам понадобится

  • - Плата Ардуино или аналог;
  • - датчик температуры и влажности DHT11;
  • - датчик давления BMP085;
  • - датчик углекислого газа MQ135;
  • - LCD дисплей 1602;
  • - потенциометр 10 кОм;
  • - корпус для погодной станции;
  • - кусок фольгированного стеклотекстолита;
  • - винты для крепления компонентов;
  • - компьютер;
  • - соединительные провода;
  • - разъём для подачи питания;
  • - паяльник.

Инструкция

Для начала нужно подобрать подходящий корпус. Туда должны вместиться все комплектующие будущей комнатной метеостанции. Такие корпуса продаются во многих магазинах радиоэлектроники. Или воспользуйтесь любым другим корпусом, который сможете найти.
Прикиньте, как все компоненты будут размещаться внутри. Прорежьте окно для закрепления LCD дисплея, если его нет. Если будете размещать внутри датчик углекислого газа, который достаточно сильно греется, то разместите его в противоположной от других датчиков стороне или сделайте его выносным. Предусмотрите отверстие для разъёма питания.

Несколько слов об используемых компонентах.
LCD-дисплей 1602 использует 6 пинов Arduino + 4 на питание (подсветка и знакосинтезатор).
Датчик температуры и влажности DHT11 подключается к любому цифровому пину. Для чтения значений будем использовать библиотеку DHT11.rar, которую можно скачать, например, тут: https://yadi.sk/d/1LiFmQWITGPAY
Датчик давления BMP085 подключается по интерфейсу I2C к двум пинам Arduino: SDA - к аналоговому пину A4 и SCL - к аналоговому пину A5. Обратите внимание, что для питания на датчик подаётся напряжение +3,3 В.
Датчик углекислого газа MQ135 подключается к одному аналоговому пину.
В принципе, для оценки метеообстановки достаточно иметь данные о температуре, влажности и атмосферном давлении, а датчик углекислого газа необязателен.
Но используя все 3 датчика, у нас будут задействованы 7 цифровых и 3 аналоговых пина Ардуино. Ну и питание, естественно.

Схема метеостанции показана на рисунке. Тут всё ясно.

Напишем скетч для Ардуино. Текст программы, ввиду значительного размера, приводится в виде ссылки в приложении к статье в разделе "Источники". Весь код снабжён подробными и понятными комментариями.
Загрузим скетч в память контроллера платы Ардуино.

Сделаем печатную плату для размещения компонентов внутри корпуса - это самое удобное решение для компоновки и подключения сенсоров. Для изготовления печатной платы в домашних условиях я использую "лазерно-утюжную" технологию (мы её подробно описывали в прошлых статьях) и травление с помощью лимонной кислоты. Предусмотрим на плате места для перемычек ("джамперов"), чтобы иметь возможность отключать датчики. Это будет полезно, если будет нужно перепрограммировать микроконтроллер, когда возникнет желание модифицировать программу.
С помощью пайки установим датчики давления и газов.
Для установки платы Arduino Nano удобно использовать специальные адаптеры или гнёзда с шагом 2,54. Но за неимением этих деталей и из-за экономии пространства внутри корпуса, я установлю Ардуино также пайкой.
Термодатчик будет располагаться на некотором отдалении от платы и будет теплоизолирован от внутренностей метеостанции с помощью специальной изоляционной прокладки.
Предусмотрим места для подводки внешнего питания к нашей самодельной плате. Я буду использовать обычное зарядное устройство на 5 В от старого сломанного роутера. Плюс 5 вольт от зарядного устройства будут подаваться на пин Vin платы Arduino.
ЖК-экран будет крепиться винтами прямо к корпусу, к передней части. Подключаться будет проводами с разъёмами быстрого подключения типа "Dupont".

Установим печатную плату внутри корпуса и закрепим винтами. Подключим LCD-экран к ножкам Arduino согласно схеме.
Аккуратно закрываем корпус метеостанции.

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

www.kakprosto.ru

Метеостанция на ардуино своими руками

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

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

Что потребуется для изготовления портативной метеостанции?

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

Для этого вам понадобиться такой набор элементов:

  • Датчик температуры и влажности DHT11 – используется как основное приспособление для регистрации параметров окружающей среды;
  • Плата Arduino UNO – необходима для обработки получаемых с датчика данных и вывода их на цифровой дисплей;
  • Электронный дисплей – устройство для отображения измеряемых данных и перевода их в понятную для обывателей форму;
  • Макетная плата – предназначена для фиксации всех элементов и размещения на жестком основании, упрощает электрическое соединение всех деталей;
  • Соединительные провода со штекером или под пайку.

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

Характеристики датчика DHT11

Рис. 1: общий вид датчика DHT11

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

  • Напряжение питания от 3 до 5 В;
  • Потребляет от источника питания ток в 2,5 мА;
  • Способен измерять влажность окружающего пространства в пределах от 20 до 80%;
  • Температурные колебания измеряет в пределах от 0 до 50°С;
  • Погрешность при измерении влажности составляет 5%, а при измерении температуры в пределах 2%;
  • Частота измерений составляет одно измерение в секунду;
  • Габариты датчика составляют 12×15,5*5,5 мм.

Датчик DHT11 имеет пластиковый корпус и оснащается четырьмя контактами, такое количество выводов обеспечивает удобство подсоединения к устройствам обработки данных. В работе самодельной метеостанции все четыре вывода не используются, из них вам понадобится только три VCC, GND, DATA. Запитать датчик вы можете от любого источника с уровнем напряжения на выходе от 3 до 5 В.

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

Рис. 2: модуль датчика DHT11

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

Подключение датчика к микроконтроллеру Arduino

От измерительного устройства к Arduino поступает цифровой сигнал, передающий сразу обе величины (температуру и влажность).

Передача данных от датчика к микроконтроллеру имеет такую последовательность:

  • От микроконтроллера Arduino к датчику поступает запрос путем смены сигнала с 0 на 1;
  • Получив запрос, DHT11 выдает Arduino информацию посредством изменения битовой кодировки;
  • При согласовании запроса и ответа от DHT11 на Arduino поступает отчет в размере 5 байт о состоянии температуры и влажности.

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

Метеостанция на Arduino

Ниже представлена принципиальная схема самодельной метеостанции на основе датчика DHT11 и микроконтроллера Arduino.

Рисунок 3: Принципиальная схема метеостанции на Ардуино

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

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

Почему важно знать индекс тепла?

Как вы могли заметить, погода на улице в разные  дни ощущается совершенно по-разному. Несмотря на то, что термометр показывает одну и ту же отметку, ощущаться одна и та же температура будет иначе. Это обусловлено значительным влиянием влажности на ваш организм.

Так, при повышении температуры воздуха в летний период организму требуется выделить куда больше влаги для компенсации перегрева от окружающей среды. При выделении влаги из организма (потообразовании) тело человека отдает тепловую энергию молекулам жидкости, которые испаряются, значительно облегчая процесс охлаждения. Но, при наличии в окружающей среде большого процентного содержания влаги, выделение молекул пота будет затруднено, из-за чего организм не сможет так просто охладиться.

Поэтому так важно контролировать соотношение температуры и влажности окружающей среды для маленьких детей и людей преклонного возраста. Их соотношение, в предложенном варианте домашней метеостанции, отображается тепловым индексом, который рассчитывается на основании величины температуры и влажности. Угроза получения теплового удара или перегрева особенно остро возникает при достижении отметки теплового индекса в 91 °F (32 °C) и выше. Благодаря предложенному варианту домашней метеостанции вы можете измерять и тепловой индекс, что поможет вам обезопасить себя и близких от случайного перегрева.

В приведенной схеме домашней метеостанции на мониторе данные распределяются следующим образом:

  • HiX (heat index) – тепловой индекс;
  • T – величина температуры окружающей среды;
  • H – процент влажности.

Рисунок 4: пример отображения данных на мониторе

www.asutpp.ru

Карманная метеостанция — высотомер — радиометр часть 1

Разное

Главная  Радиолюбителю  Разное



Прототипы этого прибора - измеритель атмосферного давления, описанный в [1], и измерители уровня радиации [2] и [3]. Автору удалось исправить некоторые ошибки в программе первого и дополнить прибор и программу некоторыми новыми функциями, в том числе радиометром и отображением результатов его работы.

Рис. 1. Внешний вид прибора

Прибор измеряет атмосферное давление в пределах 300...1100 гПа, высоту места измерения давления относительно места, принятого за исходное, в пределах от -500 до +9000 м, температуру воздуха от -40 до +85 оС и мощность экспозиционной дозы радиоактивного излучения от 0 до 99 мкР/ч. Размеры прибора - 74x53x17 мм. Питается он от встроенного литий-ионного аккумулятора напряжением 3,7 В и ёмкостью 650 мА·ч. Для аккумулятора предусмотрено встроенное зарядное устройство, питающееся напряжением 5 В от порта USB любого электронного прибора. Имеется светодиодная индикация хода зарядки и степени заряженности аккумулятора.

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

Схема метеостанции-высотомера-радиометра представлена на рис. 2. Подключение ЖКИ от сотового телефона Nokia 510 (HG1) и модуля датчика давления и температуры BMP180 (B1) к микроконтроллеру DD1 в основном соответствует схеме, приведённой в [1]. Добавлен стабилизатор напряжения 3 В. Такое напряжение питания допустимо как для микроконтроллера (2...5,5 В), таки для датчика(1,8...3,6 В) и ЖКИ (2,7...3,3 В).

Рис. 2. Схема метеостанции-высотомера-радиометра

Добавлены также приобретённые в интернет-магазинах готовые платы зарядки аккумулятора от разъёма USB и контроля заряженности аккумулятора. Имеющиеся на этих платах светодиодные индикаторы хода зарядки и уровня заряженности на схеме не показаны. Индикаторы заряженности работают только при нажатой кнопке SB5. Если питать прибор от трёхвольтного источника (например, от двух гальванических элементов), стабилизатор напряжения DA1 и упомянутые выше платы не нужны.

Узлы на транзисторах VT1, VT3 и VT4, диодах VD1-VD5 и счётчик Гейгера BD1 относятся к измерителю радиоактивного излучения. При отказе от его измерения они вместе с обеспечивающими их работу другими элементами могут быть исключены из схемы. При этом выводы 6, 11 и 16 микроконтроллера DD1 остаются свободными.

Из предлагавшихся в [1] вариантов я взял за основу своего прибора измеритель атмосферного давления с выводом информации на индикатор крупным шрифтом. В предложенной там программе микроконтроллера устранил две неточности. Первая - для преобразования измеренного в паскалях значения атмосферного давления в миллиметры ртутного столба использован целочисленный коэффициент 133. Поскольку его точное значение немного больше (133,32233684.), результат преобразования в интервале 700...800 мм Hg получается заниженным на 1,7...1,9 мм Hg. Эта погрешность в значительной мере устранена простым вычитанием 2 мм Hg из результата умножения. Кроме того, устранена ошибка, приводившая к тому, что показания прибора в гектопаскалях завышались в 10 раз.

Дальнейшему совершенствованию прибора препятствовали возможности микроконтроллера PIC16F628A, имеющиеся в котором 2048 14-разрядных слов программной памяти были заполнены практически полностью. Поэтому вместо него был применён микроконтроллер PIC16F648A с вдвое большим объёмом памяти. Однако программная память этого микроконтроллера состоит из двух страниц (нулевой и первой), в отличие от одностраничной программной памяти микроконтроллера PIC16F628A. Это создаёт некоторые сложности. Например, перед выполнением инструкций CALL, GOTO, RETURN теперь необходимо указывать в третьем разряде регистра PCLATH номер текущей страницы программной памяти.

Ситуация осложняется использованием уже имеющихся подпрограмм математических вычислений, вывода информации на ЖКИ и некоторых других. Теперь требуется обеспечивать их корректный вызов с любой страницы программной памяти. Кроме того, некоторые подпрограммы приходится вызывать не только из главной программы, но также из других подпрограмм. Следствие этого - невозможность однозначно указать подпрограмме страницу памяти, на которую из неё следует вернуться.

Открыв в процессе разработки программы окно "View→Program Memory" среды MPLAB IDE, границу между страницами программной памяти легко обнаружить по адресу в столбце Address этого окна. Всё, что имеет адрес 800 H и более, находится на первой странице, а всё с адресом меньше указанного - на нулевой.

Для корректного обращения к страницам программной памяти я организовал регистр STOR_POVERN (Примечание: от укр. "страница возврата"). В его нулевой разряд перед вызовом подпрограммы, используемой обеими страницами памяти, следует заносить номер страницы, с которой произойдёт вызов. В начале своей работы подпрограмма сдвигает содержимое этого регистра на один разряд влево, в результате чего номер страницы возврата оказывается в его первом разряде. В освободившийся нулевой разряд регистра STOR_POVERN вызванная подпрограмма заносит номер страницы, на которой находится.

Перед инструкцией RETURN в подпрограмме должен быть выполнен сдвиг содержимого регистра STOR_ POVERN на один разряд вправо, а после этого содержимое его нулевого разряда должно быть записано в третий разряд регистра PCLATH. Это обеспечит возврат из подпрограммы на ту страницу памяти, с которой она была вызвана.

Такая логика соблюдается и при вызове из одной подпрограммы другой. Благодаря ей вложенность подпрограмм, находящихся на разных страницах и вызываемых с разных страниц, может достигать семи. Для "дальних" вызовов подпрограмм и безусловных переходов между страницами использованы предусмотренные в ассемблере MPASM инструкции LCALLи LGOTO.

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

errorlevel -302, -307, -202

При желании увидеть эти предупреждения указанную директиву следует удалить или закомментировать.

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

Известно, что атмосферное давление изменяется на один гектопаскаль при подъёме или опускании точки измерения на 8,43 м. Поскольку имеющиеся в программе вычислительные подпрограммы оперируют только целыми числами, для вычисления приращения высоты Δh в метрах использована формула

Δh = 8,43·(P1 - P2) = 2158·(P1 - P2)/256,

где P, и P2 - атмосферное давление соответственно в первой и второй точках, гПа. Операция деления на 256 легко реализуется в программе сдвигом целочисленного результата умножения на восемь двоичных разрядов (один байт) вправо.

Согласно своим техническим данным, датчик BM180 способен измерять давление от 300 до 1100 гПа, так что максимально возможная разность его показаний - 800 гПа. Результат умножения этого числа на 2158 (1726400) займёт 18 двоичных разрядов (менее трёх байтов). Поскольку имеющиеся в программе математические подпрограммы оперируют с четырёхбайтными числами, переполнения разрядной сетки и вызванного этим искажения результатов вычислений можно не опасаться.

Рис. 3. Информация на экране ЖКИ

В программу добавлена процедура обслуживания кнопки SB1. При первом нажатии на неё программа запоминает текущее значение атмосферного давления, а вместо него выводит на ЖКИ строку "h = 0000м", как показано на рис. 3. Для вывода символов "h", "=", "м" в программе модифицирована таблица знакогенератора. В дальнейшем в соответствии с изменениями измеренного давления программа вычисляет относительную высоту, которую со знаком плюс или минус отображает на индикаторе вместо последовательно-
сти нулей. Следующее нажатие на кнопку SB 1 возвращает на ЖКИ текущее значение давления.

После опроса датчика давления и всех вычислений, которые происходят один раз в минуту, программа переводит микроконтроллер в "спящий" режим. Минутный интервал выдерживается подсчётом периодов переполнения сторожевого таймера (WDT) длительностью приблизительно 2,3 с. Почти всё это время микроконтроллер "спит", за счёт чего средний ток, потребляемый прибором от аккумулятора, снижается до 0,3 мА.

Поскольку прибор карманный, когда он находится в темноте, логично выключать ЖКИ. Датчиком освещённости служит фототранзистор VT2. При его затемнении на минуту и более программа выключит ЖКИ и будет держать его выключенным, пока при очередном "пробуждении" микроконтроллера, происходящем каждые 2,3 с, она не определит, что фототранзистор освещён. Ток, потребляемый от аккумулятора G1, в темноте снижается приблизительно до 60 мкА. Их потребляет в основном интегральный стабилизатор DA1. С аккумулятором ёмкостью 650 мА·ч прибор способен проработать около 450 суток, если, конечно, редко доставать его из кармана.

Важно учесть, что для появления на ЖКИ изображения простой подачи на него напряжения питания недостаточно. Необходимо ещё выполнить так называемую инициализацию ЖКИ, что и делает программа, прежде чем приступить к опросу датчика давления, необходимым вычислениям и выводу их результатов на экран индикатора.

Чтобы можно было прочитать показания прибора и при плохом внешнем освещении, в него добавлена кнопка SB2. Когда она нажата, включены подсветка экрана ЖКИ и осветительный светодиод ("фонарик") EL1. В изготовленном мной приборе - даже два "фонарика". Один (EL1) - белого свечения, а второй, не показанный на схеме, но подключённый к кнопке SB3 аналогичным образом, - ультрафиолетового. Номиналы включённых последовательно с ними резисторов (например R10) следует подобрать в зависимости от характеристик применённых светодиодов и необходимой яркости их свечения. При питании осветительных светодиодов от стабилизированного источника напряжением 3 В эти резисторы могут совсем не потребоваться.

Продолжение следует

Литература

1.BMP180 - подключение датчика атмосферного давления. - URL: http:// radiolaba.ru/microcotrollers/ bmp180-podklyuchenie-datchika-atmos-fernogo-davleniya.html (15.11.17).

2. Макарец С. Два варианта статистического измерителя уровня радиации с ЖКИ от Nokia 5110. - Радио, 2017, № 3, с. 42-46.

3. Макарец С. Измеритель-индикатор уровня радиации. - Радио, 2015, № 5, с. 42-45.

Автор: С. Макарец, г. Киев, Украина

Дата публикации: 26.01.2018

Рекомендуем к данному материалу ...


Мнения читателей

Нет комментариев. Ваш комментарий будет первый.

Вы можете оставить свой комментарий, мнение или вопрос по приведенному вышематериалу:


www.radioradar.net

Оставить комментарий

avatar
  Подписаться  
Уведомление о