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

Содержание

Шаг 6: Построение приемника

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

Для сборки приемника нам понадобятся следующие детали:

  • Ардуино Дуэ или Мега
  • Модуль часов реального времени DS3231
  • Датчик температуры и влажности DHT22
  • NRF24L01 + Беспроводной модуль
  • 3,2 «цветной TFT-дисплей
  • Макет
  • 7 контактов заголовка
  • Некоторые провода

Сначала мы сгибаем 7 контактов заголовка и размещаем их на некоторых выводах Arduino Due. Нам нужно один на землю и один на 3,3 В. Нам нужно два на контактах I2C. Нам нужны оставшиеся 3 к цифровым выводам от 6 до 8. Мы также должны припаять три провода к аппаратным SPI-выводам Arduino Due. Нам нужны MOSI, MISO и SCK. Внимательно проверьте схему. Мы подключаем провода к контактам заголовка, и мы готовы прикрепить дисплей.

Подключение DS3231вывод VCC на выходе 3,3 В Arduino

контакт GND к GNU Arduino и

вывод SDA (последовательная линия передачи данных) на вывод SDA Arduino и

контакт SCL (Serial Clock Line) к контакту Arduino SCL

Подключение датчика DHT22

вывод VCC на выходе 3,3 В Arduino

контакт GND к GNU Arduino и

выходной вывод на цифровой вывод Arduino 8

Подключение модуля NRF24L01

контакт GND для заземления Arduino

контакт VCC для Arduino 3.3V

3-й контакт к цифровому выводу Arduino 6

4-й контакт к цифровому выводу Arduino 7

5-й штифт к пину SCK, который мы припаяли

6-ой контакт для MOSI, который мы припаяли

7-ой контакт к контакту MISO, который мы спаяли

Внешний модуль

Ну а теперь кое-что поинтереснее. Это внешний модуль метеостанции. Просто повесить датчик на какую-то поверхность или оставить болтаться на проводе – это плохая идея.

А знаете ли вы как располагаются метеорологические датчики температуры и влажности? Используют специальные вентилируемые корпуса на подобие вантузов. Белого цвета. Вот мне и захотелось, сделать все по красоте. На thingiverse я нашел интересный проект “DHT22 TEMPERATURE HUMIDITY SHELTER” от автора NEO BUILDER.

Как видно по рендеру, это тот самый метеорологический вантуз. Проект разрабатывался как раз для датчика DHT22. Так что это оказалось то что мне нужно. Порадовало, что кроме STL файлов в архиве с проектом оказалась подробная инструкция по сборке данного корпуса. В итоге именно этот проект я и решил реализовать так сказать в пластике. Для печати использовался пластик PETG от компании ABSmaker, если интересно, вот статья про него  “PETG пластик от компании ABSMaker. Краткий обзор и отзыв“. Естественно, печаталась модель из белого пластика.

И вот что у меня получилось:

Корпус печатается из большого количества элементов, а потом собирается на 3 шпильки М4. Для сборки я специально приобрел шпильку из нержавейки и гайки тоже из нержавейки. Делал это чтобы в будущем на корпусе не появились ржавые пятна.

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

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

Ну а после этого, с помощь маленького самореза и и изоленты, датчик был закреплен внутри корпуса.

Создание метеостанции на базе Arduino и датчика температуры и влажности DHT22

Для создания метеостанции нам необходимо:

  • Arduino
  • Датчик температуры и влажности DHT22 (существуют модификации DHT11 или DHT21, но они имеют меньшую точность измерений)

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

Двухстрочный дисплей  LCD 1602А

Его подключение вы можете найти в предыдущей статье.
Начнем, пожалуй, с подключения нашего датчика температуры и влажности к Arduino. Метеостанция на ардуино своими рукамиДве крайние ножки датчика это питание: крайняя левая +5V, крайняя правая — GND (земля). Ножка, отмеченная на схеме голубым проводом – сигнал (S), ее мы подключаем к порту на плате и обязательно подтягиваем резистором к питанию (10 кОм). Именно его в дальнейшем и пропишем в программе как пин, с которого мы будем считывать данные.  Отлично, теперь датчик подключен, перейдем к программированию.
Так как DHT22 является конденсационным, да и в своем устройстве он не так уж прост, для работы будем использовать готовую библиотеку, с помощью которой работа с датчиками сводится к использованию готовых функций.Итак, подключаем библиотеку DHT-master.

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

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

В основном блоке программы (void loop()) ставим задержку между двумя последовательными измерениями и описываем считывание данных с датчика с помощью библиотечных функций

Проверяем, получаем ли мы данные и, если все идет по плану, то выводим эти показания в монитор порта.

Загружаем программу в плату и, чтобы увидеть показания, которые нам присылает DHT22, открываем монитор порта (Ctrl+Shift+M или Инструменты — Монитор порта) следим за изменениями температуры и влажности в комнате.Метеостанция на ардуино своими рукамиИтак, LevelUP: теперь давайте освоим вывод показаний на двухстрочный дисплей.Для того, чтобы компьютер (ноутбук) не использовался исключительно как монитор для вывода показаний с датчика, мы будем использовать двухстрочный дисплей LCD 1602А, как устройство внешнего вывода.Для этого обратимся к статье подключение двухстрочного дисплея.Добавим пару элементов в программе, которые позволят нам использовать для вывода именно дисплей: подключим библиотеку для работы с дисплеем, и также, как и DHT22, создадим класс LiquidCrystal, в котором в качестве параметров указаны пины, используемые, как сигнальные для дисплея.

Далее в теле функции void setup() инициализируем дисплей: lcd.begin(16, 2) т.е. определяем максимальное количество символов в строке и количество строк и выводим название нашего мини-проекта.

А теперь приступим к основному блоку программы. В функции void loop() опишем считывание показания с датчика температуры и влажности и опишем его вывод на дисплей.

Собираем наше устройство, загружаем программу и наша портативная метеостанция готова к работе. Чтобы она работала постоянно, можно использовать питание не от USB, а от батарейки, разъем для которой есть на плате.Метеостанция на ардуино своими руками

Arduino

  • 80

Что это такое?

Наша метеостанция будет состоять из двух устройств: компактного автономного
устройства, измеряющего погодные показатели, и устройства-ретранслятора,
получающего эти показатели и отправляющего их на «народный мониторинг».
Устройства будут связываться по беспроводному каналу связи на частоте 433 МГц.
Автономная часть будет питаться от трёх пальчиковых батареек и сможет
просуществовать на одном комплекте батарей до года при периоде опроса датчиков
в 20 мин.

Популярные статьи  Обозначение переменного тока

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

Шаг 5: Построение Trasmitter

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

Давайте сначала построим передатчик. Это очень просто.

Для передатчика мы используем:

  • Ардуино Нано
  • Датчик DHT22
  • Беспроводной модуль NRF24L01 +
  • Макет
  • Некоторые провода

Мы подключаем выходной контакт датчика к цифровому контакту 4 Arduino Nano. Мы соединяем Землю и Vcc, и мы готовы. Все, что нам нужно сделать сейчас, это подключить беспроводной модуль NRF24L01.

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

Вот и все, ваш передатчик готов. Давайте теперь перейдем к получателю.

Что вам нужно для создания метеостанции с Arduino? Основные комплекты и пластины

Материалы, которые вам понадобятся для постройки метеостанции с Arduino, следующие:

Плата Arduino UNO

Вам понадобится микроконтроллер типа ATmega328P, с входным напряжением От 7 до 12 вольт, работающие от 5 вольт от постоянного тока 20 мА. Кроме того, вы должны помнить 32 КБ.

Датчик для определения относительной влажности окружающей среды

В этом случае запас между 2,7 и 3,3 вольт. Он также должен иметь диапазон температур между От -10ºC до 60ºC с точностью + -3%. При этом диапазон измерения должен составлять от 1% до 99%.

Датчик атмосферного давления и датчик температуры

Должен иметь рабочий диапазон От -40ºC до 60ºC и способность обнаружения От 300 до 1100 гПа с погрешностью 0,03. Источник питания, который должен иметь эта плата, должен быть около 1,8 и 3,6 В постоянного тока.

Модуль Bluetooth

Эта плата потребуется для связи с телефоном с операционной системой. Android. Рабочий ток должно быть, в то время как напряжение питания должно быть между 3,3 и 6 В постоянного тока.

Среда программирования Arduino

Для программирования вам понадобится программное обеспечение Arduino.. Для этого вам нужно будет перейти в доверенном браузере по URL-адресу скачать программу, совместимую с Окна, Linux и MacOS.

Текстовый редактор Notepad ++

Разработчик App Inventor 2

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

Метеостанция на Arduino с беспроводным датчиком температуры

Как-то прогуливаясь по городу увидел новый открывшийся магазин радиоэлектроники. Зайдя в него обнаружил большое количество шилдов для Ардуины т.к. у меня дома была Arduino Uno и Arduino Nano сразу пришла мысль поиграться с передатчиками сигнала на расстоянии. Решил купить самый дешевый передатчик и приемник на 433 МГц:

Записав простейший скетч передачи данных (пример взят от сюда), выяснилось, что передающие устройства могут вполне подойти для передачи простейших данных, таких как температура, влажность.

Передатчик имеет следующие характеристики: 1. Модель: MX -FS — 03V 2. Радиус действия (зависит от наличия преграждающих предметов): 20-200 метров 3. Рабочее напряжение: 3.5 -12В 4. Размеры модуля : 19 * 19 мм 5. Модуляция сигнала : AM 6. Мощность передатчика: 10 мВт 7. Частота: 433 МГц 8. Необходимая длина внешней антенны : 25см 9. Простота подключения (всего три провода): DATA ; VCC ; земля.

Характеристики приемного модуля: 1. Рабочее напряжение: DC 5В 2. Ток: 4мA 3. Рабочая частота: 433,92 МГц 4. Чувствительность : — 105дБ 5. Размеры модуля : 30 * 14 * 7 мм 6. Небходима внешняя антенна: 32 см.

В просторах интернета сказано, что дальность передачи информации на 2Кб/сек может доходить до 150м. Сам не проверял, но в двухкомнатной квартире принимает везде.

Аппаратная часть домашней метеостанции

После нескольких экспериментов решил подключить к Arduino Nano датчик температуры, влажности и передатчик.

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

Датчик температуры DS18D20 подключается к ардуино следующим образом:

1) GND к минусу микроконтроллера. 2) DQ через подтягивающий резистор к земле и к выводу D2 Ардуины 3) Vdd к +5В.

Более детально почитать о работе датчика можно здесь.

Модуль передатчика MX -FS — 03V питается от 5 Вольт, вывод данных (ADATA) подключен к выводу D13.

К Ардуино Уно подключил LCD дисплей и барометр BMP085.

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

Приемник сигнала подключен к выводу D10.

Модуль BMP085 — цифровой датчик атмосферного давления. Датчик позволяет измерять температуру,давление и высоту над уровнем моря. Интерфейс подключения: I2C. Напряжение питания датчика 1.8-3.6 В

Подключается модуль к Arduino также, как и другие I2C устройства:

  • VCC — VCC (3,3 В);
  • GND — GND;
  • SCL — к аналоговому выводу 5;
  • SDA — к аналоговому выводу 4.
  • Очень низкая стоимость
  • Питание и I/O 3-5 В
  • Определение влажности 20-80% с 5% точностью
  • Определение температуры 0-50 град. с 2% точностью
  • Частота опроса не более 1 Гц (не более раза в 1 сек.)
  • Размеры 15.5мм x 12мм x 5.5мм
  • 4 вывода с расстоянием между ножками 0.1″
  1. Vcc (3-5V питание)
  2. Data out — Вывод данных
  3. Не используется
  4. Общий

Подключается к D8 Ардуины.

Программная часть домашней метеостанции

Передающий модуль измеряет и передает температуру раз в 10 минут.

Приемное устройство принимает данные, измеряет давление и температуру в помещении и передает на дисплей.

Источник

Настройка навыка «Домовёнок Кузя»

Перейдите на сайт навыка и авторизуйтесь там через Яндекс. Далее жмите на Добавить правило HTTP (GET). Перед вами откроется форма настройки правила.

Активационная фраза — название запроса, которое будет отображаться в списке (например «свет на кухне, включение»). Если вы не планируете контролировать умный дом конкретно изнутри навыка, то больше фраза нигде не понадобится. Поле Ответ Кузи тоже оставляйте пустым. В поле URL вставляете соответствующий веб-хук на включение света (виртуального порта). Остальные параметры можно не изменять. После этого нужно сделать идентичное правило на выключение света.

Пример настройки правила на включение света

Дальше нужно перейти во вкладку виртуальных устройств и добавить устройство «Лампа». Тут нужно дать название устройству, по которому его будет идентифицировать Алиса. Например: свет, бра, подсветка, лампа или торшер. Место расположения — комната, в которой будет установлено устройство. Это нужно на тот случай, если в нескольких комнатах будут одинаковые по названию элементы. К тому же, одной голосовой командой можно включать и выключать все устройства в определённой комнате.

В Правило на включение/выключение из списка выбираете соответствующие запросы. В лампе имеется возможность управления яркостью. Для этого нужно создать ещё одно правило, но значение параметра установить как . Тогда в запрос будет подставляться число от 0 до 100, которое будет обозначать требуемую яркость. Вам лишь остаётся обработать это значение в скетче.

Пример настройки виртуального устройства

Примечание Если вы планируете изменять яркость, то параметр value в веб-хуке на включение нужно изменить с 1 на 100.

Что такое Умный Дом

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

В более широком смысле, умный дом (Smart Home) или домашняя автоматизация (Home Automation) – это система связанных между собой устройств, которая помогает выполнять повседневные задачи в доме/квартире. Эта система позволяет контролировать и управлять освещением, температурой, влажностью, безопасностью и даже бытовой техникой, такой как холодильник, стиральная машина, микроволновая печь, и многими другими электроприборами.

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

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

  1. Датчики (сенсоры) – получают информацию из окружающей среды и передают ее другим устройствам. К ним относятся датчик движения, датчик протечки воды, датчики температуры и др. Также к сенсорам можно отнести и устройства с голосовыми помощниками, которые способны распознавать вашу речь и передавать сигнал на выполнение команды. Но об этом позже.
  2. Исполнительные устройства (акторы) – это все те умные электроприборы, которые выполняют команды: лампочки, выключатели, розетки, кондиционеры, увлажнители воздуха, камеры, замки, двери гаража и многие другие.

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

  1. Беспроводная связь между устройствами.
  2. Возможность объединять в единую систему устройства разных производителей.
  3. Возможность управлять умным домом со смартфона.
  4. Поддержка голосового управления.
  5. Возможность создавать сценарии автоматизации.

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

Скетч

p160_meteostation.ino
#include <math.h>
int minute = 1;
 
// Параметр конкретного типа термистора (из datasheet):
#define TERMIST_B 4300 
 
#define VIN 5.0
 
void setup()
{
  // мы хотим передавать информацию на компьютер через USB, а
  // точнее через последовательный (англ. serial) порт.
  // Для этого необходимо начать (англ. begin) передачу, указав
  // скорость. 9600 бит в секунду — традиционная скорость.
  // Функция «begin» не является глобальной, она принадлежит
  // объекту с именем «Serial». Объекты — это «продвинутые»
  // переменные, которые обладают собственными функциями,
  // к которым обращаются через символ точки.
  Serial.begin(9600);
  // передаём заголовок нашей таблицы в текстовом виде, иначе
  // говоря печатаем строку (англ. print line). Символы «\t» —
  // это специальная последовательность, которая заменяется на
  // знак табуляции (англ. tab): 8-кратный выровненный пробел
  Serial.println("Minute\tTemperature");
}
 
void loop()
{
  // вычисляем температуру в °С с помощью магической формулы.
  // Используем при этом не целые числа, а вещественные. Их ещё
  // называют числами с плавающей (англ. float) точкой. В
  // выражениях с вещественными числами обязательно нужно явно
  // указывать дробную часть у всех констант. Иначе дробная
  // часть результата будет отброшена
 
   float voltage = analogRead(A0) * VIN  1024.0;
   float r1 = voltage  (VIN - voltage);
 
 
   float temperature = 1.( 1.(TERMIST_B)*log(r1)+1.(25. + 273.) ) - 273;
  // печатаем текущую минуту и температуру, разделяя их табом.
  // println переводит курсор на новую строку, а print — нет
  Serial.print(minute);
  Serial.print("\t");
  Serial.println(temperature);
 
  delay(60000); // засыпаем на минуту
  ++minute;     // увеличиваем значение минуты на 1
 
  // откройте окно Serial Monitor в среде Arduino, оставьте на
  // сутки, скопируйте данные в Excel, чтобы построить графики
}

Версия №1. RF433МГц сервер Arduino Uno + Zyxel Keenetic

Метеосенсор с передатчиком на 433МГц

Компоненты:

  • Arduino Pro Mini 3.3 — $4
  • Датчик температуры и влажности DHT22 — $4
  • Датчик давления (а также температуры и высоты) BMP085 -$5.6
  • Датчик освещенности BH1750 (довольно бесполезный из за фонаря под окнами) — $2.2
  • Делитель между +, землей и аналоговым входом для измерения напряжения батареи
  • Передатчик RF 433МГц (продается в комплекте с приемником) — $1.22/2
  • Коробочка водонепроницаемая  купленной в ближайшем радиомагазине — 300 руб

Сервер с приемо-/передатчиком 433МГц, подключенный к Zyxel Keenetic через USB

Компоненты:

  • Arduino Uno с USB кабелем — 9$
  • Приемник и передатчик RF 433МГц  — $1.22
  • Блок питания — 5В зарядник от старого телефона
  • Коробочка бытовая в качестве корпуса

Табло со светодиодным дисплеем, приемником 433МГц  и модулем DS1307

Компоненты:

  • Дисплей матричный светодиодный трехцветный 16×32 ~ $35 с доставкой
  • Arduino Uno с USB кабелем — 9$
  • Приемник  RF 433МГц  — $1.22/2
  • Модуль с часами реального времени DS1307 — $1.1
  • Блок питания 5В 5А ~ $8

Часы отображающие точное время и погоду с дисплеем 1602

Слеплены за вечер для контроля работы погодной станции и тестирования переходника I2C для дисплея 1602

Компоненты:

  • Arduino Pro Mini — $2.6
  • Приемник  RF 433МГц  — $1.22/2
  • Дисплей 1602 с голубой подсветкой — $2.25
  • Плата интерфейса I2C/TWI/SPI для дисплея 1602 — $1.74
  • Коробочка — $2.5

Станция в таком виде прожила дома около года. За это время накопились проблемы:

  • Дешевые 433МГц приемо-передатчики имеют низкую помехозащищенность, сильно зависят от положения антенн, открытых/закрытых дверей и т.д. что сказывается на общем качестве системы. При добавлении новых устройств 433МГц проблем добавлялось.
  • Уличный датчик на аккумуляторах  на Arduino Pro Mini 3.3 с демонтированным светодиодом питания в летнее время работает 2-3 месяца (с использованием режима сна). Нынешней зимой при температуре ниже -30С батареи просто садились до нуля. Следующую версию метеосенсора запитал от сети, благо недалеко было тянуть.
  • Часы на DS1307 китайского производства убегали безбожно и применение их без подстройки от интернета или GPS весьма сомнительно. Применение с синхронизацией тоже сомнительно, так как на внутренних часах Arduino все неплохо.
  • Сервер Arduino Uno, подключенный к Zyxel Keenetic по USB работал неплохо, но программы, написанные на SH периодически подвисали, думаю, в связи с нехваткой памяти. Поддержка кода одновременно со стороны роутера и микроконтроллера напрягала. Решил отказаться в пользу Ethernet на Arduino.
  • Внешний вид информации, отображаемый на табло приелся и был не очень эргономичен. Например, показатель влажности в зимнее время очень условно и весьма неинформативно.

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

ЧАСЫ-МЕТЕОСТАНЦИЯ НА ARDUINO

• 28.01.19 meteoClock_v1.3: исправлено предсказание погоды (работало “наоборот”) • 19.04.19 meteoClock_v1.5: добавлено управление яркостью подсветки и светодиода по датчику света. Смотрите последнюю схему!

Рекомендую ознакомиться с модифицированной прошивкой от Norovl, в ней полностью переработан интерфейс, русифицированы дни недели и добавлено меню на русском языке. Почитать и скачать можно на GitHub автора .

Решил таки сделать свою версию метеостанции-часов-календаря на Arduino с кучей датчиков и различными крутыми штуками! Проект уместился в корпусе G909G из магазина Чип и Дип, питается от micro-USB и выглядит весьма неколхозно! =)

  • Большой дешёвый LCD дисплей
  • Вывод на дисплей:
    • Большие часы
    • Дата
    • Температура воздуха
    • Влажность воздуха
    • Атмосферное давление (в мм.рт.ст.)
    • Углекислый газ (в ppm)
    • Прогноз осадков на основе изменения давления
  • Построение графиков показаний с датчиков за час и сутки
  • Индикация уровня CO2 трёхцветным светодиодом (общий анод/общий катод, настраивается в прошивке)
  • Переключение режимов сенсорной кнопкой

Версия 1.5 – Добавлено управление яркостью – Яркость дисплея и светодиода СО2 меняется на максимальную и минимальную в зависимости от сигнала с фоторезистора Подключите датчик (фоторезистор) по схеме. Теперь на экране отладки справа на второй строчке появится величина сигнала с фоторезистора. Пределы яркости устанавливаются в настройках прошивки.

Отображение температуры, влажности, давления и высоты на веб-сервере ESP8266

Теперь мы собираемся настроить ESP8266 в режим станции (STA) и создать веб-сервер для выдачи веб-страниц любому подключенному клиенту в существующей сети.

Если вы хотите узнать о создании веб-сервера с ESP8266 в режимах AP/STA, ознакомьтесь с этим руководством:

Создание простого веб-сервера на ESP8266 NodeMCU в Arduino IDE

Прежде чем вы отправитесь загружать скетч, вам нужно внести одно изменение, чтобы он у вас заработал. Чтобы ESP8266 мог установить соединение с существующей сетью, вам необходимо изменить следующие две переменные в соответствии с учетными данными вашей сети.

Как только вы это сделаете, попробуйте скетч в работе.

Датчик на 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 подключается картридер.

Монтаж

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

Внутренний блок был закреплен по классике, на черные саморезы внутри сарая на стене, рядом с электро щитком, в котором уже стоит 3 модуля Sonoff Basic, которые управляют частью освещения во дворе.

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

Подготовка IDE Arduino

Существует дополнение для Arduino IDE, которое позволяет вам программировать ESP8266 NodeMCU с помощью Arduino IDE. Чтобы подготовить вашу Arduino IDE к работе с ESP8266, если вы еще этого не сделали, следуйте инструкциям из следующей статьи:

Обзор платы NodeMCU ESP8266 и ее использование в Arduino IDE

Установка библиотеки для BME280

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

Чтобы установить библиотеку, перейдите в раздел Скетч → Подключить библиотеку → Управлять библиотеками…. Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте результаты поиска, набрав «bme280». Там должно быть пара записей. Ищите библиотеку Adafruit BME280 by Adafruit. Нажмите на эту запись, а затем выберите «Установка».

Метеостанция на ардуино своими рукамиРисунок 4 – Установка библиотеки BME280 в Arduino IDE

Библиотека датчиков BME280 использует Adafruit Sensor support backend. Поэтому найдите в менеджере библиотек Adafruit Unified Sensor и установите ее тоже (возможно, вам придется немного прокрутить)

Метеостанция на ардуино своими рукамиРисунок 5 – Установка библиотеки Adafruit Unified Sensor

Шаг 2: Датчик температуры и влажности — DHT22

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

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

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

Характеристики DHT22

  • Бюджетный
  • От 3 до 5 В и I / O
  • 2,5 мА максимальное использование тока во время преобразования
  • Показатели влажности 0-100% с точностью 2-5%
  • Показания температуры от -40 до 125 ° C ± 0,5 ° C
  • Медленный

Связь с Arduino чрезвычайно проста. Мы подключаем контакт датчика со знаком + к выходу 5 В или 3,3 В Arduino. Мы соединяем контакт датчика со знаком — в ЗЕМЛЕ. Наконец, мы подключаем вывод OUT к любому цифровому выводу Arduino.

Чтобы использовать датчик DHT22 с Arduino, мы должны использовать библиотеку DHT.

http://github.com/adafruit/DHT-sensor-library

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

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

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

Компоненты

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

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

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

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

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

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

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

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

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

A4 — SDA;

A5 — SCL;

3.3V — VCC;

GND — GND.

Сборка

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

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

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

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

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

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

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

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

Текст скетча можно скачать здесь: https://cloud.mail.ru/public/piwT/gew8pPv7M

Характеристики датчика 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

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

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

Итоги и выводы

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

Причем не только через Web интерфейс самого модуля, но и в любой момент видеть эту информацию на экране своего телефона (iphone, через встроенное приложение “дом”).

Прошла зима. По крайней мере календарная зима. И что вы думаете? Живет и работает! без всяких проблем. Мои опасения оказались напрасны.

Понимаю, найдутся критики, которые скажут что можно было сделать как-то иначе, но на это я скажу лишь одно:

Данная статья писалась с целью поделиться приобретенным опытом, а так же своим вариантом реализации проекта уличной метеостанции :). Так что, кому интересно, берите на заметку подобное устройство.

А еще не забывайте подписываться на инстаграмм сайта https://www.instagram.com/ionline.by/

И обязательно подписывайтесь на катал: https://www.youtube.com/channel/UCwdjiKLXZDJYdUFAx6fZCZA

Рейтинг
( Пока оценок нет )
Денис Серебряков/ автор статьи
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: