Меню

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

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 15:25

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

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 14:31

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 14:12

esp 32 cam. Плата ESP с камерой ov2640 Установка ESP32, подключение

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 13:42

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 13:27

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 13:27

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 12:20

Отопление теплицы по-корейски: как сделать печь без сварки
Сделать печь своими руками из газового баллона без сварки? Да, это реально.
Такую самодельную печурку можно использовать для обогрева теплицы. Если немного доработать ее, то можно отапливать также гараж или дачу.
Основные этапы работ
Первым делом вырезаем в верхней части газового баллона два отверстия: одно из них используется для установки дымоходной трубы, второе — для выхода трубы.
К маленькому отверстию с помощью заклепок крепим

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 10:39

часы на ардуино с дисплеем tft и ds3231

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 09:16

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

В гостях у Самоделкина - самоделки своими руками

добавлена сегодня в 07:06

Прижим — ТРОЙНАЯ струбцина своими руками DIY clamp

Для данного действия я взял себе Arduino Uno и Ethernet Shield w5100 для нее. Все это заказывалось из Китая на Aliexpress.

Так же там заказал себе датчики: DHT22, DHT11, DS18B20, BMP280 (в планах еще датчики газа, дыма…)

Покурив форумы, гугл, яндекс, я нашел неплохой вариант скетча — https://student-proger.ru/2014/11/meteostanciya-2-1/

Там же в комментариях человек выкладывал дописанный скетч с датчиками освещенности, газа. Я взял их за основу.

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

Ниже приведу пример итогового скетча, что получился у меня.

В данный момент у меня подключены датчики:

DHT22 — 1шт.

DHT11 — 1шт.

BMP280 — 1шт.

DS18B20 — 2шт.

ВНИМАНИЕ! Перед тем как заливать скетч, не забудьте изменить MAC-адрес устройства, чтобы не пересекаться с другими (например взять Mac-адрес вашего мобильного телефона и изменить в нем последние буквы/цифры, что не «будоражило» вашу локальную сеть!

Примерная схема подключения (картинка взята на просторах интернета от данного скетча):

метеостанция

Скачать скетч (авторство и ссылки в скетче остались без изменений)

По техническим причинам у меня не получается выложить скетч прямо сюда. Поместил его в архив. Ссылка на него строчкой выше.

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

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

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

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

Недавно мой коллега устраивал небольшую научную выставку.
Мой учитель попросил меня представить какой-нибудь проект по электронике студентам в колледже. У меня было два дня, чтобы придумать что-то интересное и достаточно простое.

Так как погодные условия здесь достаточно переменчивы, а температура колеблется в диапазоне 30-40°С, я решил сделать домашнюю метеостанцию.

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

Обычно это следующие датчики:

  • ветра
  • влажности
  • дождя
  • температуры
  • давления
  • высоты

Моя цель – сделать портативную настольную метеостанцию своими руками.

Она должна уметь определять следующие параметры:

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

Шаг 1: Покупаем нужные компоненты

  • DHT22, датчик температуры и влажности.
  • BMP180, датчик давления.
  • Arduino Nano
  • Припой
  • LCD дисплей с модулем I2c
  • Макетная плата
  • Однорядный разъем на 40 выходов

Из оборудования вам понадобятся:

  • Паяльник
  • Плоскогубцы для носоупоров
  • Провода

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

Для измерения температуры используются разные датчики. Популярностью пользуются DHT22, DHT11, SHT1x

Я объясню, чем они отличаются друг от друга, и почему я использовал именно DHT22.

Датчик AM2302 использует цифровой сигнал. Этот датчик работает на уникальной системе кодировки и сенсорной технологии, поэтому его данные надежны. Его сенсорный элемент соединен с 8-битным однокристальным компьютером.

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

Маленький размер, низкое потребление энергии, большое расстояние передачи (100 м) позволяют AM2302 подходить почти ко всем приложениям, а 4 выхода в один ряд делают монтаж очень простым.

Давайте рассмотрим плюсы и минусы трех моделей датчиков.

DHT11

Плюсы: не требует пайки, самый дешевый из трех моделей, быстрый стабильный сигнал, дальность свыше 20 м, сильная интерференция.
Минусы: Библиотека! Нет вариантов разрешения, погрешность измерений температуры +/- 2°С, погрешность измерений уровня относительной влажности +/- 5%, неадекватный диапазон измеряемых температур (0-50°С).
Области применения: садоводство, сельское хозяйство.

DHT22

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

SHT1x

Плюсы: не требует пайки, сглаженные кривые, малые погрешности измерений, быстрое срабатывание, низкое потребление энергии, автоматический режим сна, высокая стабильность и согласованность данных.
Минусы: два цифровых интерфейса, погрешность в измерении уровня влажности, диапазон измеряемых температур 0-50°С, нужна библиотека.
Области применения: эксплуатация в суровых условиях и в долгосрочных установках. Все три датчика относительно недорогие.

Соединение

  • Vcc – 5В или 3,3В
  • Gnd – с Gnd
  • Data – на второй вывод Arduino

Шаг 3: Датчик давления BMP180

BMP180 – барометрический датчик атмосферного давления с I2C-интерфейсом.
Барометрические датчики атмосферного давления измеряют абсолютное значение окружающего воздуха. Этот показатель зависит от конкретных погодных условий и от высоты над уровнем моря.

У модуля BMP180 имелся 3,3В стабилизатор на 662кОм, который я, по собственной глупости, случайно взорвал. Пришлось делать обводку питания напрямую к чипу.

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

Схема соединения датчика и шины I2C с Arduino (nano или uno)

  • SDA — A4
  • SCL — A5
  • VCC — 3.3V
  • GND – GND

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

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

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

Атмосферное давление также изменяется с высотой. Абсолютное давление в базовом лагере на Эвересте (5400 м над уровнем моря) ниже, чем абсолютное давление в Дели (216 м над уровнем моря).

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

Измерение высоты

Среднее давление на уровне моря 1013,25 ГПа (или миллибар). Если подняться над атмосферой, это значение упадет до нуля. Кривая этого падения вполне понятна, поэтому вы можете сами вычислить высоту над уровнем моря, используя следующее уравнение: alti=44330*[1-(p/p0)^(1/5.255)]

Если вы примите давление на уровне моря 1013,25 Гпа как р0, решением уравнения будет ваша текущая высота над уровнем моря.

Меры предосторожности

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

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

Защитите от влаги. Датчик BMP180 чувствителен к уровню влажности, постарайтесь предотвратить возможное попадание воды на датчик.

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

Шаг 4: Собираем прибор

Устанавливаем однорядные разъемы для Arduino Nano. Вообще, мы обрезали их до нужного размера и немного зашкурили, так что они смотрятся, словно такими и были. Потом припаиваем их. После, устанавливаем однорядные разъемы для датчика DHT22.

Устанавливаем 10кОМ резистор от вывода данных к земле (Gnd). Все паяем.
Потом точно также устанавливаем однорядный разъем для датчика BMP180, питание делаем 3,3В. Соединяем все с шиной I2C.

В последнюю очередь подключаем LCD-дисплей, на ту же I2C шину, что и датчик BMP180.
(в четвертый разъем я планирую позже подключить RTC-модуль (часы реального времени), чтобы прибор еще и время показывал).

Шаг 5: Кодирование

Загрузите библиотеки

Для BMP180
для DHT22

Чтобы установить библиотеки на Arduino, перейдите по ссылке

#include
#include #include #include "DHT.h" #include

SFE_BMP180 pressure;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Add your address here. #define Rs_pin 0 #define Rw_pin 1 #define En_pin 2 #define BACKLIGHT_PIN 3 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7

#define DHTPIN 2 // what digital pin we're connected to

// Uncomment whatever type you're using! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); float t1,t2;

void setup() { Serial.begin(9600); lcd.begin (16,2); // <<-- our LCD is a 20x4, change for your LCD if needed // LCD Backlight ON lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home on LCD lcd.print("Weather Station"); delay(5000); dht.begin(); pressure.begin(); } void loop() { char status; double T,P,p0,a; status = pressure.startTemperature(); if (status != 0) { delay(status);

status = pressure.getTemperature(T); if (status != 0) { Serial.print("1"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Baro Temperature: "); lcd.setCursor(0,1); lcd.print(T,2); lcd.print(" deg C "); t1=T; delay(3000);

status = pressure.startPressure(3); if (status != 0) { // Wait for the measurement to complete: delay(status);

status = pressure.getPressure(P,T); if (status != 0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("abslt pressure: "); lcd.setCursor(0,1); lcd.print(P,2); lcd.print(" mb "); delay(3000);

p0 = pressure.sealevel(P,ALTITUDE); // we're at 1655 meters (Boulder, CO)

a = pressure.altitude(P,p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Altitude: "); lcd.setCursor(0,1); lcd.print(a,0); lcd.print(" meters"); delay(3000); } } } } float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); t2=t; lcd.clear(); lcd.setCursor (0,0); // go to start of 2nd line lcd.print("Humidity: "); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); delay(3000); lcd.clear(); lcd.setCursor (0,0); // go to start of 2nd line lcd.print("DHT Tempurature: "); lcd.setCursor(0,1); lcd.print(t); lcd.print(" deg C "); delay(3000); lcd.clear(); lcd.setCursor (0,0); // go to start of 2nd line lcd.print("Mean Tempurature: "); lcd.setCursor(0,1); lcd.print((t1+t2)/2); lcd.print(" deg C "); delay(3000); }

Я использовал версию Arduino 1.6.5, код точно к ней подходит, к более поздним так же может подойти. Если код по каким-либо причинам не подходит, используйте версию 1.6.5 как базовую.

Файлы

  • weather.ino

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

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

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

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

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

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

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

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

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

  • DHT11;
  • DHT22;
  • SHT1x.

Датчик 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 мм.

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

  • DATA;
  • VCC;
  • GND.

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

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

Модуль DHT11

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

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

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

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

Состав отчета:

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

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

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

Скетч можно скачать здесь: https://cloud.mail.ru/public/JDX7/HJ94PKwoe

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

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

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

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

  • тепловой индекс — 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 по следующей схеме:

A4 — SDA;

A5 — SCL;

3.3V — VCC;

GND — GND.

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

Сборка

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

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

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

Резистор

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

Разъемы

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

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

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

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

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

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

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

Скетч1

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

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

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

Компоненты

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

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

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

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

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

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

Скетч можно скачать здесь: https://cloud.mail.ru/public/Uxm6/Uzody85Hz

Заключение

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

Видео по теме

Метеостанция на Arduino от А до Я. Часть 1 / Хабр

Оглавление:

«Так, давайте сразу договоримся: вы не собираетесь снимать кино для Голливуда. Даже в Стране чудес утверждается не более пяти процентов от всех сценариев, и только один процент идет затем в производство… Таким образом, вместо всего этого вы собираетесь создать свой собственный Голливуд.»
Эд Гаскель «Снимаем цифровое кино, или Голливуд на дому»

Что, ещё одна погодная станция на Arduino?! Да, ещё одна и, что-то мне подсказывает, не последняя в интернете вещей.

Точно также, как каждый программист обязан написать программу «Hello World!», так и каждый ардуинщик обязан иметь за плечами опыт построения простой или не очень метеостанции.
Уже созданных проектов метеостанций в интернете описано немалое количество, читатель может выбрать любой из них для реализации. Не скрою, я внимательно изучил около десятка подобных проектов и ещё кучу смежных. Поэтому нельзя сказать, что я создал всё с нуля, конечно же я «стоял на плечах гигантов».

Сразу скажу, что в мои планы не входило использование сторонних сервисов для хранения и отображения данных. Хотелось лично пощупать и понять как всё это работает изнутри от начала до конца, от А до Я.

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

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

Этот проект был реализован в далеком уже 2016 году, но надеюсь еще актуален.

Мы изучим и будем работать с простыми и сложными вещами :

  • датчиками температуры и влажности типа DHT22, DHT11
  • датчиком барометрического давления типа BMP180
  • WiFi модулем ESP8266
  • радиомодулем типа nRF24 2,4 Ггц
  • семейством Arduino Pro Mini, Arduino Mega
  • солнечной батареей и аккумуляторами
  • языком программирования C/C++
  • языком программирования PHP
  • системой управления базами данных MySQL
  • языком программирования Java и фреймворком Android (создание приложения для Adnroid для отображения погодных данных на смартфоне).

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

Но начнем мы с самого начала правильно. А именно с описания и проектирования будущего устройства «на бумаге», чтобы в конце концов каждый кирпичик лёг на своё место.

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

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

Каждый, кто клепает по вечерам свои поделки pet-project для «internet of things», должен отдавать себе отчёт в том, что он создаёт именно прототип, полуфабрикат. До уровня нормального промышленного изделия ему очень далеко. Поэтому
не следует поручать нашим любительским поделкам какие-либо ответственные участки жизнеобеспечения
и надеяться, что они нас не подведут.

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

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

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

Обычно этот этап пропускают. Решая сделать что-нибудь эдакое прямо сейчас, а потом выясняются мелкие детали, которые ставят весь проект в тупик или вовсе делают его неподъемным. Все наши хотелки необходимо записывать, я использую для этого гугл диск, он доступен с ПК и с мобильного устройства.

Итак, наша метеостанция должна:

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

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

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

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

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

Замкнутый круг? Но замкнутые круги для того и существуют, чтобы их разрывать.

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

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

Сразу стало ясно, что в составе метеостанции будет удаленый, заоконный датчик и центральный модуль.

Центральный, основной блок будет расположен внутри помещения. Это важно определить на начальном этапе, от этого «пляшут» такие важные характеристики как температурный режим работы и питание.

Удаленный датчик (или датчики) будет без «мозгов», его задача — периодически проводить измерения и передавать данные на центральный домашний блок. Центральный блок принимает данные от всех датчиков, показывает их на экране и отправляет их же в интернет в базу данных. Ну, а там уже много проще, как только данные оказываются в базе с ними можно делать всё что захочешь, даже графики рисовать.

Для сношений с внешним миром интернет был однозначно выбран WiFi модуль ESP8266 практически без альтернативы (прим. возможно сейчас такие альтернативы появились). К Arduino выпускаются Ethernet платы расширения, но совсем не хотелось привязываться к кабелю.

Интересный вопрос состоял в том, чем обеспечивать связь между заоконным датчиком (или датчиками, про требование расширяемости системы помним?) и центром. Радиомаячки на 433 Мгц однозначно не подходят (они не подходят ни для чего вообще).

Воспользоваться опять ESP8266 ?

Минусы такого решения:

  • необходим устойчивый WiFi за пределами дома

  • дальность связи не будет большой

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

  • большее энергопотребление.

  • Энергопотребление ESP8266 :

  • при передаче 120—170 mA

  • при приеме 50—56 mA

  • в режиме Deep Sleep 10 µA (мкА)

  • в выключенном состоянии 5 µA (мкА).

В конце концов для связи удаленных датчиков с основным домашним блоком был выбран чип nRF24L01+ с 2,4 Ггц передатчиком и приемником в одном флаконе, с дополнительной внешней антенной, чтоб уж наверняка «пробить» стены.

Энергопотребление nRF24L01+ 2,4 GHz :

  • при приеме 11 mA
  • при передаче на скорости 2Mbps — 13 mA
  • в режиме standby-I — 26 μA (мкА)
  • в выключенном состоянии 900 nA (нА).

Что у ESP8266, что у nRF24L01+ диапазон рабочих температур подходящий: от -40℃ до +80℃.

Купить nRF24L01+ можно примерно за $1, или сразу с внешней антенной за $3. Купить ESP8266-01 можно примерно за $4. Читайте внимательно описание товара! Иначе купите одну антенну.

Ядро системы вырисовалось. Переходим к самим датчикам.

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

Характеристики DHT22 / AM2302 :

  • питание от 3,3 В до 5 В, рекомендуется 5 В
  • потребление 2.5mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 0-100% с погрешностью 2-5%
  • диапазон измерения температуры от -40 до +125°C с погрешностью ±0.5°C
  • запрос на измерение не чаще 0,5 Гц — одного раза в 2 секунды.

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

Характеристики DHT11:

  • питание от 3,3 В до 5 В
  • потребление 2,5 mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 20-80% с погрешностью 5%
  • диапазон измерения температуры от 0 до +50°C с погрешностью ±2°C
  • запрос на измерение не чаще 1 Гц — одного раза в секунду.

Купить DHT22 можно примерно за $3. DHT11 стоит дешевле — $1, но он и менее точен.

Теперь возвращаемся опять к Arduino. Какую плату выбрать?

Я тестировал отдельные части системы на Arduino UNO. Т.е. подключал к уно ESP модуль и изучал его, отключал, затем подключал nRF24 и т.д. Для финальной реализации заоконного датчика выбрал Arduino Pro Mini как наиболее близкую к Uno из миниатюрных.

По энергопотреблению Arduino Pro Mini также выглядит неплохо:

  • нет преобразователя USB-TTL, который сам по себе «кушает» много,
  • светодиод подключен через 10к резистор.

Для продвинутого сбережения энергии планировалось:

  • удалить светодиод — индикатор питания на Arduino Pro Mini (я пожалел, не стал портить плату)
  • либо использовать «голую» сборку на микропроцессоре Atmel ATmega328 (не использовал)
  • использовать библиотеку Low Power Library или JeeLib.

Из библиотек выбрал Low Power Library, она проста и содержит только то, что нужно.

Для центрального блока, поскольку к нему планировалось подключить многочисленную периферию, была выбрана плата Arduino Mega. К тому же она полностью совместима с UNO и имеет больше памяти. Забегая наперед скажу, что этот выбор полностью оправдался.

Купить Arduino Mega можно примерно за $8.

Теперь про питание и энергопотребление.

Arduino Pro Mini бывают двух видов:

  • на напряжение питания 5В и частоту 16МГц
  • на напряжение питания 3,3В и частоту 8МГц.

Поскольку радио-модуль nRF24L01+ требует для питания 3,3 В, а быстродействие здесь не важно, то покупайте Arduino Pro Mini на 8MHz и 3,3В.

При этом диапазон питающего напряжения Arduino Pro Mini составляет:

  • 3,35-12 В для модели 3,3 В
  • 5-12 В для модели 5 В.

У меня уже была Arduino Pro Mini на 5В, только поэтому я её и использовал. Купить Arduino Pro Mini можно примерно за $4.

Питание центрального блока будет от сети 220 В через небольшой блок питания, дающий на выходе 12В, 450mA, 5W. Типа такого за $5. Там еще есть отдельный вывод на 5В.

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

Поэтому Arduino Pro Mini и радиомодуль nRF24 будут запитываться от связки 4-х Ni-Mh аккумуляторов.

И помните, максимальная емкость современного аккумулятора примерно 2500—2700mAh, всё что больше это либо маркетинговые уловки (Ansmann 2850) либо обман (UltraFire 3500).

Li-Ion аккумуляторы я не использую по нескольким причинам:

  • очень дорогие
  • при снижении температуры окружающего воздуха ниже 0°C происходит снижение мощности литий-ионного аккумулятора до 40-50%
  • те которые дешёвые производятся без защиты и небезопасны (при КЗ или разряде могут взрываться и гореть, см. кучу роликов на ютюбе)
  • стареют, даже если не используются (впрочем это можно сказать обо всех химических элементах), через 2 года Li-Ion батарея теряет около 20% ёмкости.

Для прототипа вполне можно обойтись качественными Ni-MH AA или AAA аккумуляторами. Тем более, что нам не нужны большие токи. Единственный минус Ni-MH аккумуляторов — это их долгая зарядка.

Подведем итоги. Вот общая схема как всё работает.

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

Домашняя метеостанция на Arduino и отправка данных на «Народный мониторинг» — Arduino

Всем привет, в этой статье поговорим об уже надоевшей всем теме — «Метеостанция». Каждый пытается сделать что-то свое, вот и я не стал исключением и попытался материализовать свои эротические фантазии на контроллере ESP8266. Тема задумывалась уже давно как некое обновление для предыдущего проекта этой тематики, но из-за своей неспешности переросла в нечто самостоятельное.

При всей привлекательности микроконтроллера ESP8266 с его большим объемом памяти, железной поддержкой Wi-Fi и массой разных плюшек, он не лишен недостатков. Самый основной — ограниченное количество поддерживаемых одновременных TCP соединений равное 5. Если превысить этот лимит, то контроллер потеряет связь с окружающим миром, при этом watchdog будет думать, что все в порядке, а следовательно, даже не попытается нам помочь. Будем стараться это помнить!

Стоит начать с концепции

Доступ к данным метеостанции нужно получать без установки внешних приложений и под любой операционной системой. Для этих целей подойдет практически любой современный браузер. Меня всем устраивает Chrome.
Раз уж за основу взят HTTP протокол, стоит озаботиться экономией трафика и ограничением числа TCP соединений. Хорошим тоном будет передача всего необходимого для формирования страницы контента только при первом обращении, а все последующие операции, такие как отображение показаний с датчиков или настройку контроллера, производить через API. В этом нам поможет JQuery.
А вот, чтобы ослабить болевые ощущения от передачи файлов с SPI Flash в браузер, стоит предусмотреть систему кэширования, например, Etag. Это позволит отдавать тяжелый контент единожды, а при последующих загрузках страницы просто подтверждать его актуальность на уровне Web сервера микроконтроллера и кэш браузера вступит в игру, неимоверно уменьшив время загрузки страницы! «Вы были правы в одном, Мастер: переговоры были недолгими.» © Звездные войны. Эпизод 1
Из-за того, что метеостанция с датчиками и контроллером должна располагаться на улице, жизненно необходимо предусмотреть возможность обновлять прошивку ESP через Web интерфейс.
Аналогичным образом должны обновляться файлы Web сервера расположенные на SPI Flash. Этот и предыдущий пункт вкупе позволят обновлять функционал микроконтроллера из домашней сети или из интернета, если конечно в этом возникнет острая необходимость.
Чтобы никто посторонний не могу вмешаться в работу устройства или изменить файлы Web сервера, последний должен хотя бы как-то себя защищать. Пускать в панель управления только после авторизации, блокировать доступ при попытках брутфорса пароля. В конце концов, контроллер обязан самостоятельно генерировать ключи (salt) для авторизации, дабы сделать алгоритм непредсказуемым и исключить потенциальный взлом, в случае если злодей завладеет исходниками проекта. Понятно, что кому она там нужна, эта метеостанция, если её не завязывать с умным домом, если только из-за спортивного интереса, но как говориться “Береженого Бог бережет”.
Датчики стоит расположить по уму — в метеобудке, а вот контроллер в сухом и закрытом боксе. Объединить их между собой, как мне кажется, удобнее по I2C шине — минимум проводов, максимум удобства.
Практически на всех вариантах плат ESP-xx имеется штатный светодиод, можно воспользоваться им как для индикации режимов и состояния микроконтроллера, так и для вывода какой-либо промежуточной информации.
Что касаемо режимов работы ESP8266, как ни странно, но он должен находить домашнюю Wi-Fi сеть и подключаться к ней. Если вдруг звезды не были к нам благосклонны, и домашняя беспроводная сеть приказала долго жить, контроллер обязан перейти в режим точки доступа (AP) дабы к нему можно было подключиться с какого-либо устройства и перенастроить его на другую сеть. А вот пока последнее не произошло, ESP должен периодически сканировать эфир в поисках долгожданной домашней точки доступа и, если боги были к нам милосердны, и домашняя сеть появилась в эфире, незамедлительно переключиться в режим клиента (STA) и в пылу страсти воссоединиться с ней.
Ну и естественно, как же без отправки данных на внешние ресурсы, сейчас без этого не обходится ни одна уважающая себя кофеварка, не говоря уже о метеостанции. Думаю, что основным блюдом станет протокол MQTT, это уже облегчает возможность интеграции с умным домом, стулом или той же кофеваркой. Ну а на закуску добавим поддержку «ThingSpeak» и «Народного мониторинга». При желании можно нарастить функционал, благо памяти у микроконтроллера еще много.
Как я себе это представляю

Учтите, что на видео, данные с датчиков, эмитируются самим микроконтроллером, это нужно для наглядности. В жизни метеорологическая обстановка намного спокойнее слава Богу.

Перейдем к физической сборки устройства

Как по мне, так самый оптимальный вариант, это воспользоваться отладочной платой NodeMCU V3 и базой для неё. Таким образом, мы получим отличный комплект с разведенной на его борту всей необходимой обвязкой и возможностью питать устройство от 5 до 24 Вольт.

Отладочная плата на базе, и смотрится хорошо, и удобства хоть отбавляй.

Заливаем прошивку, образ SPI Flash и подключаем четырьмя проводами датчики. Справится даже ребенок.

Ссылки:

Базовая плата для NodeMCU V3 с преобразователем питания 5-24V в 5V
Отладочная плата ESP8266 от NodeMCU
Естественно никто не запрещает Вам развести свою плату. Если Вы это сделаете, скиньте нам свое творение, возможно мы перейдем на него. В идеале, все должно размещаться в метеобудке.

Датчики взятые за основу

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

В этот раз мы воспользуемся более серьезным вариантом – «Метеорологическая будка Стивенсона». Она способна защитить датчики от прямых воздействий окружающей среды, но при этом имеет открытую структуру со стенками в виде жалюзи. Удобно, красиво и самое главное – правильно!

Будка печатается на 3D принтере по эскизам опубликованным на Thingiverse неким kowomike, спасибо добрый человек! Архив с эскизами можно будет скачать в конце поста.

Фото готовой будки

Шпилька М8 крепится через зажимной хомут к мачте уличной антенны.

Примерка. Шпилька практически не укорачивалась, чтобы не закрывать будку параболической Wi-Fi антенной.

Хотя в моем случае все это сделано не правильно т.к это солнечная сторона дома. Доступа на теневую сторону дома у меня нет, поэтому приходиться довольствоваться тем, что имеем. По прошлой метеостанции мне говорили «на солнечной стороне все эти измерения — сферический конь в вакууме, слепи %описание-многА-букАв% и закрепи на теневой стороне дома».

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

Датчики располагаются на разных уровнях. В основании находится датчик освещенности Bh2750 и смотрит ровно вниз. Мне кажется, так он будет меньше пачкаться и покрываться пылью и при этом смотреть наружу сквозь минимальное количество препятствий для солнечного света. Вообще размещение этого датчика, это целая головная боль. Как не крути, все будет не то. Оставил так, ведь по сути важны не сами показания, а тенденция изменения. Хотя кого я пытаюсь обмануть, точность важна всегда! Предлагайте свои варианты.

Намного проще обстоят дела с датчиком атмосферного давления BMP180 и влажности SI7021, кстати, с последнего мы также будем забирать данные о температуре. Их размещаем в оставшемся свободном пространстве будки, благо его там с избытком, но не в конусе т.к пространство в нем менее проветриваемое.

Все хозяйство подключается между собой следующим образом

NodeMCU | ESP 07/12 | Датчики
——————————
D2 | GPIO 4 | SDA
D1 | GPIO 5 | SCL
3.3V | 3.3V | 3.3V
GND | GND | GND
ВАЖНО: при финальном монтаже устройства на его место службы, обязательно установите перемычку между пинами GPIO 0 (D3) и питанием 3.3 Вольта. Причины её установки описаны в закрепленном сообщении с описание обновления от 12.08.2017.

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

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

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

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

Производим примерку.

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

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

Далее останется все подравнять, проверить качество монтажа, возможность замены платы NodeMCU, если это будет необходимо при эксплуатации и самое главное, дважды проверить, что и куда припаяно. Мои кривые руки и невнимательность уже наказывали меня, а т.к ждать новые запчасти долго, повторять не хочется.

Общий вид получился таким

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

Требования (!!!Читать обязательно!!!)

Arduino IDE с поддержкой контроллера ESP8266, версия 2.6.2 (на версиях выше работоспособность не проверялась)
Установленный модуль в Arduino IDE для загрузки файлов во Flash память микроконтроллера. Как установить описано тут.
Для работы модуля загрузки файлов во Flash может понадобится последняя версия Python https://www.python.org/downloads/
Любой модуль на базе ESP8266 c Flash 4MB (3MB выделяем под SPIFFS)
В параметрах выставляем lwIP версии 2 и максимальную производительность (lwIP v2 Higher Bandwidth)
Сам архив с последней версией проекта. Скачать можно в конце статьи или по этой ссылке.
  

Обязательные библиотеки (!!!Читать обязательно!!!)

ArduinoJson (v5.13.5)
PubSubClient
Ссылки на библиотеки сенсоров указаны в комментариях к коду. Сами библиотеки, как и обслуживаемые ими сенсоры, не являются обязательными. Вы вольны использовать любые датчики, как физические, так и программные.

Порядок установки (!!!Читать обязательно!!!)

Изучите файлы проекта с примерами использования тех или иных сенсоров. Все файлы с примерами начинаются с префикса users_, это users_auto.h, users_bme280_x2.h и т.д. Загрузите необходимые Вам библиотеки или используйте эти файлы как пример для добавления иных датчиков.
Выставите необходимые настройки для контроллера в среде разработки Arduino IDE. Пример настроек указан на скриншоте выше. Обязательно убедитесь, что выбрано правильное распределение места для внутренней файловой системы, это значит, что 3MB должно быть выделено под файловую систему. Также проверяем, чтобы использовался lwIP v2 в режиме максимальной производительности (lwIP v2 Higher Bandwidth).
Произведите загрузку программы с помощью среды разработки (Ctrl + U).
Произведите загрузку содержимого каталога data в файловую систему. Меню/Инструменты/ESP8266 Sketch Data Upload
Перед тем как устанавливать метеостанцию на постоянное место жительства, подтянуть GPIO-0 (пин D3 на плате NodeMCU) к питанию 3.3V. Во время данной процедуры, питание на контроллере должно отсутствовать.
Первый запуск (!!!Читать обязательно!!!)

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

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

Подключитесь к данной сети с любого удобного устройства и перейдите в панель управления (для этого имеется соответствующая иконка, запутаться невозможно), контроллер будет доступен по адресу http://espws.local или http://192.168.4.1 При попытке входа в панель управления будет запрошено имя пользователя и пароль, по умолчанию admin/admin. После входа в панель управления перейдите в раздел «Основные настройки WiFi» и укажите имя и пароль Вашей домашней сети, а также, при необходимости, укажите пароль для подключения к точке доступа поднимаемой контроллером в аварийном режиме. Если все сделано правильно, то контроллер подключится к домашней сети в течении 5-и минут.

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

Хотите помочь проекту или спонсировать новый?

Yandex.Money
PayPal.me
Файлы

 

Метеостанция на Uno и Slot Shield / Амперка

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

На этой странице приведены компоненты, которые помогут собрать пять гаджетов из него:

Arduino Uno

Сердце мира Arduino: компьютер размером с ладонь на базе процессора с частотой 16 МГц и памятью 32 КБ

2 140 ₽

Troyka Slot Shield v2

Плата для удобного и компактного подключения Troyka-модулей без проводов

580 ₽

Метеостанция для записи температуры, атмосферного давления и влажности [Амперка / Вики]

// библиотека для работы I²C
#include <Wire.h>
// библиотека для работы с метеосенсором
#include <TroykaMeteoSensor.h>
// Подключаем библиотеку для работы с дисплеем
#include <QuadDisplay2.h>
// библиотека для работы с модулями IMU
#include <TroykaIMU.h>
// библиотека для работы с протоколом 1-Wire
#include <OneWire.h>
// библиотека для работы с датчиком DS18B20
#include <DallasTemperature.h>
// библиотека для работы с SPI
#include <SPI.h>
// библиотека для работы с SD-картами
#include <SD.h>
 
// сигнальный пин датчика DS18B20
#define ONE_WIRE_BUS 5
// даём разумное имя для CS пина microSD-карты
#define SD_CS_PIN  8
 
// создаём объект для работы с метеосенсором
TroykaMeteoSensor meteoSensor;
// создаём объект класса QuadDisplay, передаём номер пина CS, включаем режим работы с SPI
QuadDisplay qd(10, true);
// создаём объект для работы с барометром
Barometer barometer;
// создаём объект для работы с библиотекой OneWire
OneWire oneWire(ONE_WIRE_BUS);
// создадим объект для работы с библиотекой DallasTemperature
DallasTemperature sensor(&oneWire);
 
// перечисляем имена операций, которые мы будем выводить на дисплей
enum {
  SAVE_SD,    // имя для операции, которая записывает на SD данные
  IN,         // имя для операции, которая выводит на дисплей надпись "In"
  TEMP_IN,    // имя для операции, которая выводит на дисплей температуру с метеосенсора
  CEL,        // имя для операции, которая выводит на дисплей символ °C
  HUM_IN,     // имя для операции, которая выводит на дисплей влажность с метеосенсора
  PPM,        // имя для операции, которая выводит на дисплей символ %
  BAR_IN,     // имя для операции, которая выводит на дисплей давление с барометра в миллиметрах ртутного столба
  MER,        // имя для операции, которая выводит на дисплей надпись "Hg"
  EMPTY,      // имя для операции, которая очищает дисплей
  OUT,        // имя для операции, которая выводит на дисплей надпись "Out"
  TEMP_OUT    // имя для операции, которая выводит на дисплей температуру с датчика DS18B20
};
// создаем массив, в котором будем хранить последовательность операций
int chain[] = {
  IN,
  TEMP_IN,
  CEL,
  HUM_IN,
  PPM,
  BAR_IN,
  MER,
  EMPTY,
  OUT,
  TEMP_OUT,
  CEL,
  EMPTY,
  SAVE_SD
};
 
// создаем объект класса long для хранения счетчика
unsigned long respite_Time = 0;
 
// создаем объект для регулировки времени показа значений на экране
int slowdown_qd = 1000;
// создаем объект для хранения номера выполняемой операции
int number_qd = 0;
 
// создаем объект для записи данных на SD строкой
String  dataString = "";
 
void setup() {
  // инициализация дисплея
  qd.begin();
  // инициализируем метеосенсора
  meteoSensor.begin();
  // инициализация барометра
  barometer.begin();
  // инициализируем работу с датчиком DS18B20
  sensor.begin();
  // устанавливаем разрешение датчика от 9 до 12 бит
  sensor.setResolution(12);
  // инициализируем карту памяти
  SD.begin(SD_CS_PIN);
  // собираем верхнюю строчку с наименованием данных
  dataString = "TEMP_IN (ºC)tHUM_IN (%)tBAR_IN (mmHg)tTEMP_OUT (ºC)";
  // вызываем функцию сохранения данных на SD
  saveSD(dataString);
}
 
void loop() {
  // запускаем бесконечный счетчик. Его содержимое будет обрабатываться с периодом равным slowdown_qd
  if (millis() - respite_Time > slowdown_qd) {
    // запускаем процесс, который будет выполнять операции согласно последовательности в chain
    switch (chain[number_qd]) {
      case IN:
        qd.displayDigits(QD_I, QD_n, QD_NONE, QD_NONE);
        break;
      case TEMP_IN:
        showData(meteoSensor.getTemperatureC());
        break;
      case CEL:
        qd.displayDigits(QD_NONE, QD_NONE, QD_DEGREE, QD_C);
        break;
      case HUM_IN:
        showData(meteoSensor.getHumidity());
        break;
      case PPM:
        qd.displayDigits(QD_NONE, QD_NONE, QD_DEGREE, QD_UNDER_DEGREE);
        break;
      case BAR_IN:
        qd.displayInt(barometer.readPressureMillimetersHg());
        break;
      case MER:
        qd.displayDigits(QD_NONE, QD_NONE, QD_H, QD_9);
        break;
      case EMPTY:
        qd.displayClear();
        break;
      case OUT:
        qd.displayDigits(QD_O, QD_u, QD_t, QD_NONE);
        break;
      case TEMP_OUT:
        // переменная для хранения температуры
        float temperature;
        // отправляем запрос на измерение температуры
        sensor.requestTemperatures();
        // выводим значение с датчика DS18B20 на экран
        qd.displayFloat(sensor.getTempCByIndex(0), 1);
        break;
      case SAVE_SD:
        // собираем в строку сначала температура с метеосенсора
        dataString = String(meteoSensor.getTemperatureC()) + "t";
        // потом влажность
        dataString += String(meteoSensor.getHumidity()) + "t";
        // давление
        dataString += String(barometer.readPressureMillimetersHg()) + "t";
        // и температура с датчика DS18B20
        dataString += String(sensor.getTempCByIndex(0)) + "t";
        // вызываем функцию сохранения данных на SD
        saveSD(dataString);
        break;
    }
    number_qd++;
    // проверяем не превысил ли номер операции количество операций
    if (number_qd > sizeof(chain) / sizeof(int) - 1)
      number_qd = 0;
    respite_Time = millis();
  }
}
 
// функция работы датчика температуры и влажности
void showData(float data) {
  // считываем данные с датчика
  int stateSensor = meteoSensor.read();
  switch (stateSensor) {
    // выводим показания на дисплей
    case SHT_OK:
      qd.displayFloat(data, 1);
      break;
    // выводим сообщение "Errd", если ошибка данных или сенсор не подключён
    case SHT_ERROR_DATA:
      qd.displayDigits(QD_E, QD_r, QD_r, QD_d);
    // выводим сообщение "ErrC", если ошибка контрольной суммы
    case SHT_ERROR_CHECKSUM:
      qd.displayDigits(QD_E, QD_r, QD_r, QD_C);
      break;
  }
}
 
// функция сохранения данных на карту памяти
void saveSD(String data) {
  // создаем файл для записи данных
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  // если файл существует и открылся
  if (dataFile) {
    // сохраняем данные
    dataFile.println(data);
    // закрываем файл
    dataFile.close();
  } else {
    // если файл не доступен выводим ошибку на дисплей
    qd.displayDigits(QD_E, QD_r, QD_r, QD_S);
  }
}

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

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

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

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

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

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

  • Датчик температуры и влажности 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: пример отображения данных на мониторе

AlexGyver/MeteoClock: Домашняя метеостанция на Arduino

Описание проекта

Крутая домашняя метеостанция на Arduino с кучей датчиков, часами и большим дисплеем
Страница проекта на сайте: https://alexgyver.ru/MeteoClock/

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

Папки

ВНИМАНИЕ! Если это твой первый опыт работы с Arduino, читай инструкцию

  • libraries — библиотеки проекта. Заменить имеющиеся версии
  • firmware — прошивки для Arduino
  • schemes — схемы подключения компонентов

Схемы

Материалы и компоненты

Ссылки оставлены на магазины, с которых я закупаюсь уже не один год

Первые ссылки — в основном магазин Great Wall, вторые — WAVGAT. Покупая в одном магазине, вы экономите на доставке!

Дополнительно:

Вам скорее всего пригодится

Как скачать и прошить

  • Первые шаги с Arduino — ультра подробная статья по началу работы с Ардуино, ознакомиться первым делом!
  • Скачать архив с проектом

На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

  • Установить библиотеки в
    C:Program Files (x86)Arduinolibraries (Windows x64)
    C:Program FilesArduinolibraries (Windows x86)
  • Подключить внешнее питание 5 Вольт
  • Подключить Ардуино к компьютеру
  • Запустить файл прошивки (который имеет расширение .ino)
  • Настроить IDE (COM порт, модель Arduino, как в статье выше)
  • Настроить что нужно по проекту
  • Нажать загрузить
  • Пользоваться

Настройки в коде

RESET_CLOCK 0       // сброс часов на время загрузки прошивки (для модуля с несъёмной батарейкой). Не забудь поставить 0 и прошить ещё раз!
SENS_TIME 30000     // время обновления показаний сенсоров на экране, миллисекунд
LED_MODE 0          // тип RGB светодиода: 0 - главный катод, 1 - главный анод

// управление яркостью
BRIGHT_CONTROL 1      // 0/1 - запретить/разрешить управление яркостью (при отключении яркость всегда будет макс.)
BRIGHT_THRESHOLD 350  // величина сигнала, ниже которой яркость переключится на минимум (0-1023)
LED_BRIGHT_MAX 255    // макс яркость светодиода СО2 (0 - 255)
LED_BRIGHT_MIN 10     // мин яркость светодиода СО2 (0 - 255)
LCD_BRIGHT_MAX 255    // макс яркость подсветки дисплея (0 - 255)
LCD_BRIGHT_MIN 10     // мин яркость подсветки дисплея (0 - 255)

BLUE_YELLOW 1       // жёлтый цвет вместо синего (1 да, 0 нет) но из за особенностей подключения жёлтый не такой яркий
DISP_MODE 1         // в правом верхнем углу отображать: 0 - год, 1 - день недели, 2 - секунды
WEEK_LANG 1         // язык дня недели: 0 - английский, 1 - русский (транслит)
DEBUG 0             // вывод на дисплей лог инициализации датчиков при запуске. Для дисплея 1602 не работает! Но дублируется через порт!
PRESSURE 1          // 0 - график давления, 1 - график прогноза дождя (вместо давления). Не забудь поправить пределы гроафика
CO2_SENSOR 1        // включить или выключить поддержку/вывод с датчика СО2 (1 вкл, 0 выкл)
DISPLAY_TYPE 1      // тип дисплея: 1 - 2004 (большой), 0 - 1602 (маленький)
DISPLAY_ADDR 0x27   // адрес платы дисплея: 0x27 или 0x3f. Если дисплей не работает - смени адрес! На самом дисплее адрес не указан

// пределы отображения для графиков
TEMP_MIN 15
TEMP_MAX 35
HUM_MIN 0
HUM_MAX 100
PRESS_MIN -100
PRESS_MAX 100
CO2_MIN 300
CO2_MAX 2000

FAQ

Основные вопросы

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Вылетает ошибка загрузки / компиляции!
О: Читай тут: https://alexgyver.ru/arduino-first/#step-5

В: Сколько стоит?
О: Ничего не продаю.

Вопросы по этому проекту

Полезная информация

Страница не найдена ⋆ Электрик Дома

Электродвигатели

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

Видео электрика

Бывают ситуации, когда мы вынуждены сделать выбор: пойти в магазин и купить новый светильник

Бытовые электроприборы

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

Электродвигатели

Асинхронные двигатели получили широкое применение, потому что они малошумны и легки в эксплуатации. Особенно

Своими руками

Аквариумные рыбки требовательны к условиям содержания. Их здоровье и красота зависят от объема аквариума,

Электродвигатели

Электродвигатели можно разделить на две основные категории – синхронные и асинхронные (индукционные) двигатели. Эти

Как это устроено

Устройство плавного пуска электродвигателя (сокращенно УПП) – это механизм, используемый для сдерживания роста пусковых

Электропроводка и соединения

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

Электропроводка и соединения

Раз в месяц каждая семья оплачивает расходы электроэнергии, и оплата за 1 кВт*час меняется

Как это устроено

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

Как это устроено

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

Бытовые электроприборы

Вихревой индукционный котел (ВИН) предоставляет собой двигатель и кавитатор, в который подается вода. Принцип

Электродвигатели

Перед выбором схемы подключения однофазного асинхронного двигателя важно определить, сделать ли реверс. Если для

Альтернативные источники энергии

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

Электродвигатели

Электрические двигатели встречаются намного чаще, чем кажется. Маленький мотор спрятан в микроволновой печи, стиральной

Электропроводка и соединения

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

Без категории

Тема альтернативной энергетики не теряет актуальности более 30 лет – в числе основных причин:

Бытовые электроприборы

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

Бытовые электроприборы

Экономит ли диммер электричество? Для того чтобы говорить об энергоэффективности, для начала полезно будет

Электропроводка и соединения

Внезапное отключение электроэнергии в современном жилище? Это настоящая катастрофа. Электрические плиты для приготовления еды,

Проект метеостанции

Arduino — Обзор

Обзор

В этом проекте мы собираем метеостанцию ​​с использованием различных датчиков. Используемая платформа является
Плата Arduino (Freetronics EtherTen) со встроенным Ethernet. Это обеспечит связь с датчиком вместе с предоставленным источником питания.
по POE (Power Over Ethernet).

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

Мы также можем использовать соединение Wi-Fi для передачи данных. Однако для этого потребуется альтернативная мощность
источник, такой как солнечная панель и аккумулятор. Мы добавим WIFI на более позднем этапе.

По завершении проекта будут доступны следующие данные:

  • Внешняя температура (DS18B20)
  • Внутренняя температура (BME280)
  • Влажность (BME280)
  • Барометрическое давление (BME280)
  • Дождемер (Hydreon RG-ll)
  • Скорость ветра (анемометр Дэвиса)
  • Направление ветра (анемометр Дэвиса)

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

Плата Arduino и BME280 будут установлены внутри контейнера, сделанного из 100-миллиметровой трубы ПВХ. Фактически контейнер и
Ветрозащитный экран был сделан из обычных материалов для сантехники и садоводства, которые можно купить в местном магазине бытовой техники.В качестве альтернативы некоторые из
материалы можно получить как остатки со стройплощадок.

Данные в реальном времени с метеостанции Arduino

Нажмите кнопку ниже, чтобы просмотреть данные тестовой метеостанции в реальном времени. Станция расположена в Перте, Западная Австралия,

.

Проект

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

Примечание 1: метеостанция питается от 12 В постоянного тока. Затем он подается на понижающий преобразователь постоянного тока в постоянный, который принимает входное напряжение 12 В и выходное напряжение 9 В. Затем 9V подается на
Плата Arduino.

Примечание 2: DS18B20 требует подтягивающего резистора 4 кОм, который здесь не показан.

Примечание 3: Hydreon RG-11 требует 12 В, которое мы получаем от штекера 12 В постоянного тока. Для этого датчика также требуется 2 резистора.

Примечание 4: Анемометр Дэвиса использует интересную цветовую схему проводки. Будь осторожен. Показанные здесь цвета соответствуют поставляемому кабелю.
с анемометром. Для анемометра требуется резистор 4 кОм, который здесь не показан.

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

  • Внешняя температура (DS18B20) — (D9) Цифровой вход 9 (используется протокол связи Далласа)
  • Температура, влажность, барометрическое давление (BME280) — (A4 и A5) Интерфейс I2C с использованием A4 и A5
  • Дождемер (Hydreon RG-ll) — (D3) Цифровой вход 3 — прерывание разрешено
  • Скорость ветра (анемометр Дэвиса) (D2) Цифровой ввод 2 — прерывание разрешено
  • Направление ветра (анемометр Дэвиса) (A3) Аналоговый вход

Требуется оборудование

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

  • Плата EtherTen Freetronics
  • Щит Freetronics
  • Температура (DS18B20) — Adafruit Waterproof DS18B20 PN:
  • Температура, влажность, барометрическое давление (BME280) — Adafruit BME280 PN:
  • Дождемер (Hydreon RG-ll)
  • Анемометр ветра (Дэвис)

Клеммный щиток

Хотя метеостанцию ​​можно подключить и без нее, пользоваться ею намного проще.На клеммном экране имеются винтовые клеммы,
Обеспечьте надежное подключение соединительных проводов к Arduino. Есть много типов клеммных щитков, доступных из нескольких
поставщики. Здесь используется клеммный щиток Freetronics.

Соединительные провода можно вставить и прикрутить к клемме. Мы использовали наконечники и обжали ими провод. Это позволяет
надежный винт в соединении.Они также обеспечивают защиту многожильного провода.

Блок питания

Для питания Arduino и ряда датчиков нам нужно 12 В постоянного тока. Hydreon RG-11 требует 12 В, однако для всего остального оборудования требуется только 5 В. К
Чтобы получить питание на метеостанцию, мы собираемся подключить 12 В через кабель Ethernet. Поскольку Arduino Ethernet работает только на
10 МБ / с нам требуется только 2 пары из 4 пар проводов в кабеле Ethernet.Таким образом, это позволяет нам использовать другие неиспользуемые пары. Бежать
питание через этот кабель мы будем использовать только 1 пару. Для получения дополнительных сведений о передаче питания через Ethernet ознакомьтесь со следующим руководством.

Мы могли бы запитать плату Arduino, используя 12 В постоянного тока, но при этом стабилизатор напряжения будет работать на максимальном входном напряжении. Он должен преобразовать 12 В в 5 В.
Большая часть падения напряжения преобразуется в тепло, из-за чего регулятор сильно нагревается.Чтобы избежать этого, мы использовали понижающий преобразователь напряжения, который принимает
12 В и выводит его на 9 В. Это регулируется с помощью синей подставки на доске. (Изображение не в масштабе)

Следующий шаг

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

Open Weather Station — метеостанция с открытым исходным кодом arduino

Открытая метеостанция (OWS) — это решение для самостоятельной работы с метеостанцией, которое должно быть доступным, стабильным, простым в сборке и тестировании в реальных условиях.Измеряйте, отслеживайте, храните данные за месяцы и отправляйте их на свой сервер, а также в Wunderground, Thingspeak, Windguru или OpenWeatherMap через Wi-Fi или GPRS / GSM / 4G. Он развился на основе других подходов, которые я тестировал и использовал в полевых условиях с конца 2012 года по сегодняшний день

англ. Франсиско Клария

Взгляните на обучающие материалы на Youtube, которые проведут вас через все этапы подготовки станции ?

Получите доступ к последней стабильной версии отсюда (рекомендуется):

Чтобы получить доступ к самой последней (еще не полностью протестированной) версии проекта, перейдите в ветку разработки здесь:

Приложение Open Weather Station (только для Android) готово к использованию бесплатно, просто установите его из Google Play, как любое другое приложение. Подробнее о приложении здесь

OWS каждую минуту генерирует следующую информацию:

  • скорость ветра (м / с)
  • Направление ветра (угол)
  • порыв ветра (м / с)
  • Направление порыва ветра (угол)
  • дождь (мм)
  • температура (Cº)
  • абсолютное атмосферное давление (Паскаль)
  • относительная влажность (%)
  • Окружающий свет (люкс)

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

Модуль Arduino Uno считывает данные с датчиков и каждую минуту отправляет полезную нагрузку данных через Bluetooth на подключенное устройство. «Подключенное устройство» — это Android-смартфон, на котором запущено приложение, которое получает эту информацию, сохраняет ее в памяти, отображает данные на экране и, при необходимости, может отправлять измерения во внешнюю службу, используя готовые предустановки, поддерживающие Wunderground, Thingspeak. , Windguru, OpenWeatherMap или другой пользовательский облачный сервис по вашему выбору через Wi-Fi и / или мобильную сеть — это одно из основных преимуществ использования смартфона.Вы также можете написать программу Raspberry Pi для подключения к Arduino через Bluetooth для получения данных, если приложение Android вам не подходит (на данный момент реализация Pi не входит в объем проекта).

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

До нынешнего подхода я запрограммировал и протестировал другие альтернативы, такие как: raspberry, pic, arduino + wifi shield, arduino + ethernet shield, arduino + GPRs shield, arduino uno + arduino mega, платы Wi-Fi, маршрутизаторы, интегрированный arduino с sd / microsd модули и т. д. и т. д. и, наконец, текущий подход оказался наиболее эффективным для моих целей:

Доступный

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

Компактный и непривлекательный для взлома

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

Простота и повторяемость сборки

Некоторые решения, которые я оценивал раньше, включали в себя много испытаний, предварительную настройку или калибровку, сложную сборку или даже трудности с получением деталей для КАЖДОЙ станции, которую мне пришлось построить, текущий подход OWS значительно снижает эту головную боль

Wi-Fi и сеть сотовой связи

Используя смартфон на базе Android, у меня есть возможность подключаться через Wi-Fi и сотовую сеть по мере необходимости, чтобы постоянно обновлять внешние службы в облаке.И даже больше, если соединение Wi-Fi потеряно, оно автоматически переключится на сотовую сеть без каких-либо проблем, никаких AT-команд и странных рукопожатий для достижения простого HTTP-соединения…

Потери мощности

Электричество уходит много раз, особенно во время штормов: модуль Arduino может работать около дня с блоком питания на 5000 мАч, а в мобильном телефоне уже есть батареи, поэтому, в зависимости от модели, он будет работать, вероятно, в течение дня или около того. тоже, при этом все еще имея возможность отправлять данные, если сотовая сеть работает (Wi-Fi, вероятно, умрет в этом сценарии)

Стабильность программного обеспечения

Программное обеспечение модуля

Arduino действительно надежное, если оно перезагружается, оно будет перезапущено с нуля без каких-либо проблем, я даже добавил сторожевой таймер, чтобы он перезагружался, если по какой-то причине какой-то процесс занимает более 4 секунд.В этом отношении я тестировал в течение длительного времени экраны SD, Ethernet, Wi-Fi и георадары, и ВСЕ они зависают через несколько недель или даже меньше, требуя ручного сброса, а в случае SD / памяти мне даже нужно было извлеките карту и вставьте ее обратно … С другой стороны, после длительных испытаний в условиях дикой природы я обнаружил, что Android — это как скала, а смартфоны (например, мото E / moto G) обладают потрясающей выносливостью, они могут работать при температурах ниже 0Cº и выше 50Cº , возникают повторяющиеся потери питания (до полного разряда батареи), а также потеря связи без зависания.

Визуализация и диагностика данных

Приложение позволяет одновременно работать в качестве экрана автономной визуализации или при выполнении новой установки или обслуживания в полевых условиях, чтобы увидеть, что происходит. Иногда мне нужно убедиться, что OWS работает должным образом, особенно во время новой установки или обслуживания, и большую часть времени я выполняю эту задачу в одиночку, в башне или на крыше, где нецелесообразно брать с собой ноутбук, поэтому я имею Arduino Модуль, подключенный через Bluetooth, упрощает диагностику, а с приложением, запущенным на смартфоне, визуализация очень проста, удобна, и мне не нужно передавать данные во внешнюю службу, чтобы диагностировать, работает ли она… все на экране

Журнал и хранилище данных

Как упоминалось ранее, добавление памяти к модулю Arduino было одной из причин, увеличивающих требования к обслуживанию решения, поскольку SD зависает и EEPROM изнашивается, не говоря уже о том, что хранение и извлечение больших объемов данных (много дней по 1 образцу на каждый минута) — медленный и сложный процесс для правильной обработки Arduino.По этой причине модуль arduino хранит образцы в течение примерно 15 минут (настраивается), что является временем, которое в конечном итоге может потребоваться Android для перезапуска, если он был отключен по какой-либо причине, а затем приложение Android обрабатывает регистрацию данных, визуализацию и загрузку более эффективно. и стабильный способ, в то же время позволяющий хранить большие периоды времени.

Сокращенное обслуживание

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

Почему именно ардуино?

Основные причины, по которым я решил использовать Arduino:

  • широкое распространение
  • огромное сообщество
  • документация
  • примеров везде
  • доступных библиотек для решения общих задач
  • низкая цена
  • доступен во многих странах
  • запитать Arduino легко и удобно (например,грамм. напрямую от USB power bank)
  • Датчики питания

  • очень просты, поскольку они имеют регулируемые выходы 3,3 В и 5 В, которые могут подавать до 150 мА (от 3,3 В) или 400 мА (от 5 В) при подключении через USB
  • Потребляемая мощность

  • на контакт позволяет 20 мА с максимумом 40 мА и 200 мА в сумме
    Итог, я думаю, что это упростит, если вы хотите изменить, расширить или улучшить текущее решение модуля Arduino

Модуль

Arduino подключается к приложению Android через Bluetooth.Приложение можно бесплатно скачать с Google Play

.

Некоторые из основных функций приложения OpenWeatherStation:

  • подключиться к модулю OWS, просмотреть и сохранить данные,
  • хранить образцы до 60 дней,
  • визуализировать графики в реальном времени,
  • доступ к историческим данным по дате и временным интервалам,
  • настроить до 2 серверов для загрузки данных о погоде,
  • настройте все общие пользовательские настройки API или используйте предварительно настроенный сервер
  • предварительно настроенных серверов доступны для WindGuru, Wunderground, Thingspeak и OpenWeatherMap
  • экспорт сохраненных данных в локальный файл (json)
  • отправить экспортированный файл данных по электронной почте
  • автоматическое переключение с Wi-Fi на сотовые данные, если в Wi-Fi нет интернета

Первоначальная настройка приложения

Чтобы начать работу, выполните следующие действия (для этого также есть видеоурок):

  • После загрузки приложения первое, что нужно сделать, это подключить его к OWS bluetooth.Зайдите в «Модуль OWS» в левом меню
  • Если вы не подключили Bluetooth, щелкните значок в правом верхнем углу, чтобы открыть настройки Bluetooth и выполнить сопряжение устройства.
  • После сопряжения вернитесь в приложение и обновите список устройств.
  • Из списка устройств выберите то, к которому вы хотите подключиться, и установите его как устройство OWS.
  • Вы можете проверить пакеты, полученные от модуля OWS, открыв монитор данных
  • При отправке данных в удаленную службу вы можете включить «Предотвратить LieFi» (необходимо включить как Wi-Fi, так и сотовую передачу данных)
    • В ситуации, когда соединение Wi-Fi работает, но нет Интернета, Android не будет автоматически переключаться на сотовые данные, в этом сценарии, если вы включили «Предотвратить LieFi», приложение отключит Wi-Fi и будет использовать пакеты сотовых данных до тех пор, пока Wi-Fi Интернет не станет назад, и приложение снова включит Wi-Fi… да, знаю … пожалуйста: P
  • Все остальные настройки говорят сами за себя.

Если вы используете устройство Android для телеметрии, вы можете выполнить рутинг своего устройства, а также установить приложение удаленной перезагрузки (https://play.google.com/store/apps/details?id=ar.com.axones. удаленная перезагрузка). Это приложение будет действовать как сторожевой таймер, позволяя вам перезагружать Android удаленно с помощью SMS или с помощью конечной точки URL, чтобы все могло снова запуститься.

Подключение других устройств

Поскольку модуль считывания Arduino передает данные каждую минуту, вы можете создать собственное решение, которое подключается к нему через Bluetooth и обрабатывает данные по своему усмотрению вместо использования предлагаемого приложения для Android.Например, реализация Raspberry может быть отличной альтернативой для достижения этой цели, или вы можете написать приложение для Windows 10 и подключиться к модулю со своим компьютером, просто чтобы упомянуть пару примеров. Однако эти альтернативы пока выходят за рамки текущего проекта.

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

Youtube обучающие программы

В следующих видеороликах я подробно расскажу вам о том, как построить станцию ​​от 0 до 100%:

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

Перечень материалов

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

Арт. Кол-во Использовать
Красный или зеленый светодиод 1 индикатор состояния
Резистор 18 кОм 2 анемометр и схема защиты от дождя
Резистор 12 кОм 2 анемометр и схема защиты от дождя
Резистор 10 кОм 1 флюгер
Резистор 220 Ом 1 индикатор состояния
2.Резистор 2 кОм 1 блютуз
Резистор 1 кОм 2 блютуз
двойной разъем RJ11 (пример) 1 анемометр, флюгер и дождевые кабели
диод 2 анемометр и схема защиты от дождя
Конденсатор 1 мкФ 2 анемометр и схема защиты от дождя
NPN транзистор 1 блютуз
Односторонняя медная печатная плата 5 см x 7 см или больше (пример) 1 экран печатной платы для соединения компонентов
Arduino Uno R3 вместе с кабелем USB 1 блок обработки
Bh2750 Датчик освещенности 1 светильник
BME280 Датчик давления, температуры, влажности (входной сигнал 5 В) 1 давление, температура, влажность
HC05 Bluetooth-модуль 1 связь Bluetooth
WS 1080 Запасной датчик анемометра (пример) 1 скорость ветра
WS 1080 Запасной датчик флюгера (пример) 1 угол направления ветра
Запасной датчик дождемера WS 1080 (пример) 1 дождь
Комплект стандартных штифтов с вилкой (пример) 1 соединительные провода датчика
Комплект стандартных штифтов с внутренней резьбой (пример) 1 подключение модуля bluetooth
Комплект перемычек между гнездом и гнездом (пример) 1 проводка датчиков
портативное зарядное устройство Power Bank на 5000 мАч или подобное, которое работает без вмешательства пользователя — для его работы НЕ нужно нажимать кнопку 1 OWS резервное питание для Arduino
15x10x10 см или аналогичный, пластиковый корпус для установки вне помещений 1 защитить модуль OWS от элементов
Модуль зарядного устройства с двумя USB-разъемами 110/220 В (пример) 1 Источник питания USB OWS
Кабель питания 110/220 В (пример) 1 мощность
Анемометр WS 1080 и пластиковая опора флюгера (пример) 1 опора для датчиков ветра
WS 1080 пластиковая опора для дождемера (пример) 1 поддержка датчиков дождя

Пожалуйста, помните, что я включил все компоненты, необходимые для полной сборки модуля OWS Arduino, вы можете приобрести только те, которые связаны с датчиками, которые вы хотите реализовать, или даже создать свои собственные, если вы хотите снизить некоторые затраты (например, пластиковые опоры ветра и дождя).Реализация кода Arduino по-прежнему будет работать, если подключены только некоторые датчики.


Пайка и электромонтаж

У меня есть подробные пошаговые галереи изображений, по которым вы можете использовать ссылку для создания OWS от нуля до 100%:

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

Травление печатной платы

Существует несколько методов создания схемы платы: от рисования схемы вручную с помощью перманентного маркера до метода передачи тона (https: // www.youtube.com/watch?v=QQupRXEqOz4). Поскольку существует множество видео и руководств о том, как это сделать, я позволю вам выбрать метод по своему усмотрению. Если вы выберете метод передачи тона, помните, что очень важно использовать глянцевую бумагу фотографического качества.

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

Сверление печатных плат

Когда доска готова, просверлите отверстия (я использую сверло диаметром 1 мм). На схеме и схеме необходимые отверстия в значительной степени говорят сами за себя.

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

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

  • «Квадраты» на каждой стороне схемы платы с кодами D2, D3, D9, D10, D12, D13, A5, A4, A2, GND и VCC должны подключаться к соответствующим контактам Arduino Uno, поэтому платите особое внимание при пайке штырьков штыревого разъема вниз и прикреплении платы к Arduino.
  • bht, bmp, stat, vane, anem и pluv — это штыревые разъемы, которые должны быть обращены вверх (противоположная сторона, которую вы подключаете к Arduino), чтобы позже подключить датчики. Конечно, вы можете припаять датчики прямо к плате, но таким образом вы можете быстро заменить любой элемент и упростить расположение компонентов в корпусе.

    • синий — это гнездовой разъем для подключения HC05 позже, красные кружки обозначают, что на этих контактах не требуется никакого соединения, поэтому пайка на самом деле не требуется
  • обратите особое внимание на полярность конденсаторов и направление диодов, как показано на схеме.Я припаял их на верхней стороне, чтобы было легче показать, как я это сделал, в пошаговой галерее, но было бы лучше припаять их на противоположной стороне, если вы хотите получить более красивую плату.

  • Штыри для пайки

    • Вы можете закончить печатную плату после того, как все будет на месте и протестировано с небольшим слоем прозрачного лака для ногтей (лака) для защиты открытых контактов и уменьшения окисления.
Арт. код сборки
Резистор 18 кОм R6, R2
Резистор 12 кОм R8, R4
Резистор 10 кОм R9
Резистор 220 Ом R10
2.Резистор 2 кОм R11
Резистор 1 кОм R12, R13
Электролитический конденсатор 1 мкФ C1, C2
диод D1, D2
NPN транзистор НПН
штыревой разъем для подключения к arduino (припой вниз, к arduino uno) D2, D3, D9, D10, D12, D13, A2, A4, A5, GND, VCC
штыревой разъем для подключения к датчикам (припой вверх) anem, pluv, stat, bmp, bht, лопасть
гнездовые штырьки для подключения к bluetooth (припой вверх) синий

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

Скорость ветра, направление ветра и дождь

Эти датчики, являющиеся запасными частями для метеостанции WS1080, используют телефонную линию (штекер RJ11), которую мы будем подключать к модулю Arduino OWS с помощью двойного разъема RJ11.

Анемометр и флюгер используют один разъем RJ11, где 2 центральных контакта (красный и зеленый кабели) соединяют анемометр, а 2 внешних (черный и желтый) относятся к флюгеру. Датчик дождя использует свои центральные контакты RJ11 (красный и зеленый) для подключения к датчику.

Для подключения разъема RJ11 к модулю arduino используйте перемычки с внутренней резьбой (отрежьте один из концов, чтобы оставить кабель открытым), как показано в пошаговых изображениях галереи.

Давление, температура и влажность

Эти три параметра получены с использованием BME280, имейте в виду, что есть много мест, где BMP280 продается так, как если бы это был BME, но BMP НЕ будет измерять влажность, поэтому перед покупкой обратите особое внимание на характеристики чипа. В идеале BME должна быть моделью со стабилизатором напряжения 5 В, хотя я тестировал модели с 3.Входной канал 3 В без проблем, поэтому, если вы не можете найти 5 В, вы можете попробовать с 3,3 В и посмотреть, что произойдет;)

Подключите микросхему BME с помощью перемычек «мама-мама» к штыревому контакту «bme» на плате модуля.

Свет

Количество света, измеренное в люксах, получено с помощью датчика Bh2750. Подключите микросхему с помощью перемычек «мама-мама» к штыревому контакту «bht» на плате модуля.

Bluetooth

Модуль arduino, как объяснялось ранее, отправляет данные с помощью модуля Bluetooth HC05.Чтобы подключить его к плате, просто подключите HC05 к «синим» контактам «мама», как показано в галерее.

Светодиод состояния

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

Для питания модуля подключите USB-кабель Arduino Uno к портативному блоку питания, а блок питания — к одному из 2 доступных USB-выходов на модуле настенного зарядного устройства, оставшийся выход можно использовать позже для подключения USB-кабеля Android. для питания смартфона.Если вы не хотите использовать внешний аккумулятор, чтобы модуль оставался включенным в случае потери питания, вы можете просто подключить usb-кабель Arduino непосредственно к модулю настенной розетки. Внешний аккумулятор должен соответствовать следующим характеристикам:

  • должно иметь энергопотребление, которое может обеспечить зарядное устройство, поэтому, если вы покупаете устройство, которому требуется вход 2 А (2000 мА), используйте зарядное устройство с не менее с выходной мощностью
  • блок питания ДОЛЖЕН работать без вмешательства пользователя, после подключения к сети, если электричество отключится, вы не сможете нажать любую кнопку, чтобы включить его
  • наконец, он должен иметь возможность питать устройство, одновременно заряжая его, некоторые блоки питания не будут выводить мощность во время зарядки

Модуль настенного зарядного устройства подключается к сети 110/220 В для подачи питания на модуль.Я рекомендую подключать его с помощью кабеля питания 110/220 В, чтобы впоследствии было легче подключить его к любой розетке. Вы также можете сделать то же самое с помощью обычного настенного зарядного устройства USB, но не забудьте защитить его внутри корпуса, так как обычно зарядные устройства не будут работать на открытом воздухе в течение длительного периода времени. Я использовал этот подход, когда не смог найти достойного модуля зарядного устройства с двумя розетками с выходом 2A и вместо этого использовал обычное зарядное устройство с двумя USB-портами (с выходом 2A).

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

Некоторые предпочитают использовать для этой цели экран Стивенсона (https://en.wikipedia.org/wiki/Stevenson_screen).

BME280 должен быть открыт (но защищен) для правильного измерения температуры, давления и влажности, поэтому не рекомендуется заключать его в герметичную коробку (аналогично Bh2750 для измерения освещенности).Также помните о тепле, которое прямые солнечные лучи будут выделять на корпус и датчики, так как это может значительно повысить температуру электроники. Я протестировал OWS под прямыми солнечными лучами в течение нескольких дней при внутренней температуре корпуса около 60ºC без каких-либо проблем.

Прежде всего, вам необходимо загрузить программу Arduino. Внутри папки проекта «arduino» вы найдете еще одну папку с названием «open-weather-station», в которой находится файл программы .ino. Кроме того, внутри папки «arduino» я поместил библиотеки, которые вам понадобятся для конкретных датчиков, включите эти библиотеки в ваш проект arduino (https: // www.arduino.cc/en/Guide/Libraries), и он должен быть готов к компиляции.

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

О программных константах Arduino

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

  • ARDUINO_AUTOREBOOT_MINUTES : по истечении заданного в этой константе количества минут, arduino автоматически перезагрузится и сбросит настройки чипа bluetooth (выключится и снова включится). Этот таймер можно перезапустить, отправив команду модулю.

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

    • ANEMOMETER_SPEED_FACTOR , коэффициент чашечного анемометра, если вы не знаете это значение, оставьте его как
    • ANEMOMETER_CIRCUMFERENCE_MTS , длина окружности полного цикла, рассчитанная от центральной точки чашки
    • ANEMOMETER_CYCLES_PER_LOOP , сколько «отсчетов» генерирует анемометр в полном цикле, обычно это 2, но может быть 1 в зависимости от вашего датчика
    • RAIN_BUCKET_MM_PER_CYCLE , сколько мм дождя эквивалентно для каждого отсчета датчика
    • VANE_AD… , флюгер имеет набор резисторов, которые меняются в зависимости от направления ветра, Arduino передает 5 В через датчик и выполняет аналого-цифровое (A / D) преобразование значения в диапазоне от 0 до 1023, в зависимости от при ориентации лопатки значение A / D изменится. Таким образом, значения VANE_AD… являются совпадающими числами для каждого из направлений и откалиброваны для флюгера ws1080. Когда значение A / D получено, самое близкое совпадающее значение VANE_AD… используется для назначения направления ветра.

Остальные константы говорят сами за себя.

Частичные и полные выборки данных

По умолчанию модуль будет отправлять частичные образцы ветра каждые 5 секунд, что полезно, например, для отображения большего количества данных о ветре «в реальном времени», а затем каждую минуту модуль отправляет все данные с усредненными образцами ветра, порывами, температурой и т. Д. Частичные выборки отправляются из функции «sendWindPartialSample», а полные выборки отправляются из функции «sendFullSamples».Данные каждого датчика разделяются разделителем (настроенным в константах), и каждая передача завершается новой строкой. Взгляните на эти функции в коде Arduino, чтобы понять, как образцы помечаются и отправляются. Я настоятельно рекомендую включить константу вывода отладки, чтобы вы могли видеть данные в мониторе последовательного вывода Arduino, в противном случае вам нужно будет подключиться через Bluetooth, чтобы увидеть какие-либо данные.

Подключиться к модулю OWS по bluetooth

Для подключения к модулю есть несколько альтернатив.Я не буду вдаваться в подробности о том, как выполнить сопряжение и подключение к устройству Bluetooth с вашего ПК, Mac, ноутбука, Iphone или устройства Android, поскольку существует множество руководств, которые объясняют это более подробно (тем не менее, в пошаговой галерее вы найдете найти несколько изображений, к которым я подключаюсь с помощью своего ПК и телефона Android).

Просто имейте в виду, что устройство Bluetooth, которое вы используете для модуля Arduino OWS, при обнаружении будет указано как HC05, и если для сопряжения с устройством запрашивается код, HC05 обычно использует 1234 или 0000.Если вы подключены через приложение Bluetooth для Android (например, https://play.google.com/store/apps/details?id=project.bluetoothterminal), например, или даже через Putty к ноутбуку с помощью COM-порта Bluetooth (http: //www.instructables.com/id/Remote-Control-Bluetooth-Arduino-PuTTY/), вы увидите на своем экране ту же полезную нагрузку данных, которую вы видите в последовательном мониторе Arduino IDE (при условии, что флаг вывода отладки установлен на правда).

Отправка команд в модуль OWS

Вы можете отправлять команды (один символ ascii в верхнем регистре), чтобы модуль выполнял некоторые действия.Функция arduino под названием «readCmdFromBluetooth» реализует эту функцию. Например, позволяет:

  • символ R : перезапускает Arduino
  • символ T : сбрасывает таймер, который будет выполнять автоматическую перезагрузку Arduino каждые ARDUINO_AUTOREBOOT_MINUTES
  • символ S : позволяет модулю отправлять частичные образцы
  • символ Q : отключает модуль для отправки частичных выборок и будет отправлять только полные выборки каждую минуту
  • , символ L : отправить все измерения, хранящиеся в энергозависимой памяти модулей за последние WIND_AVG_MINUTE_LOG_SIZE минут (напомним, что этот журнал стирается после перезагрузки модуля и, возможно, был обнулен)

Добавить солнечную энергию ко всему решению на самом деле очень просто.Вам понадобится солнечная панель (панели) 12 В / 20 Вт и понижающий понижающий преобразователь постоянного тока с двойным выходом USB, который имеет входной диапазон от 9 до 30 В и выводит 5 В через разъемы USB.

Чтобы питать станцию ​​энергией солнечной панели, вам нужно только подключить кабель от панели к понижающему входу, а затем просто подключить станцию ​​к USB-портам. Наведите панель на солнце, и все готово. В Кордове, Аргентина (где я живу) панель 12 В / 20 Вт отлично работает, обеспечивая достаточно энергии даже в пасмурный день зимой.Посмотрите видеоурок.

Поскольку Google Play не разрешает другие приложения, требующие доступа по SMS, я загрузил apk прямо в репозиторий, чтобы вы могли вручную установить его при необходимости. ТОЛЬКО УПРАВЛЯЕМЫЕ УСТРОЙСТВАМИ С помощью этого приложения вы можете установить время дня, и приложение будет автоматически перезагружать Android каждый день. Или вы можете настроить текст, который при получении по SMS на устройство будет перезагружать его. В качестве альтернативы вы можете установить удаленный URL-адрес и интервал проверки связи, и если ресурс вернет настроенный текст, устройство перезагрузится.Это можно использовать в качестве сторожевого пса, когда Android используется в качестве устройства телеметрии, например, в проекте https://openweatherstation.com, для которого это приложение было изначально разработано. Используйте его на свой страх и риск.

Загрузить удаленную перезагрузку

https://github.com/panchazo/open-weather-station/blob/master/app/RemoteReboot.apk?raw=true

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

Комплект интеллектуальной метеостанции Arduino

Описание

Полноразмерные метеостанции — это невероятно важные объекты, которые измеряют атмосферные условия и предоставляют нам полезную информацию, такую ​​как прогнозы погоды или предупреждения о стихийных бедствиях. Однако вам не обязательно покупать большое и дорогое оборудование, чтобы построить собственную метеостанцию. Часто интеллектуальной метеостанции Arduino более чем достаточно, чтобы предоставить вам не только доступ к данным об окружающей среде в реальном времени, но и понимание того, что эти данные означают!

Grove DHT20 представляет собой прямую модернизацию датчика DHT11 и обеспечивает точные измерения температуры и влажности в окружающей среде.Датчик идеально работает при температурах от -40 ℃ до 80 ℃ с точностью ± 0,5 ℃. Что касается влажности, то здесь можно достоверно считывать значения влажности с погрешностью менее 3%. Если вам требуются показания давления для вашего проекта, вы можете вместо этого выбрать Grove BME280.

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

Руководства по проекту:

Учебные ресурсы

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

  • Создание полноценной интеллектуальной метеостанции Arduino с интеллектуальными возможностями
  • Highly Accurate Grove DHT20, с ± 0.Точность 5 ℃ для температуры и ± 3% для влажности
  • Простая в использовании модульная экосистема Grove ускоряет процесс создания прототипов оборудования
  • Выберите один из двух высокопроизводительных микроконтроллеров ARM Cortex-M
    • Терминал Wio — интегрированная платформа разработки с ЖК-дисплеем, кнопками, возможностью беспроводного подключения и т. Д.
    • Вы также можете выбрать Seeeduino XIAO в качестве платы микроконтроллера — Ультра крошечный, компактный микроконтроллер, который помещается на кончике вашего пальца
  • Воспользуйтесь существующими проектами сообщества и учебными пособиями, чтобы легко создать свою интеллектуальную метеостанцию ​​Arduino

Приложения

  • Метеостанция
  • Мониторинг окружающей среды
  • Умный дескриптор погоды
  • Интеллектуальное прогнозирование погоды

Документация

Почему TinyML

Машинное обучение может быть простым и крошечным.

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

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

DIY с Raspberry Pi, Arduino | uBeac

Последние несколько статей были посвящены домашним системам безопасности и домашнему мониторингу. Были учебные пособия, показывающие, как сделать дымовые извещатели и системы пожарной сигнализации, чтобы предупредить вас о том, как добраться до безопасного места.Также были учебные пособия о том, как сделать камеры видеонаблюдения для наблюдения за злоумышленниками и другими опасностями вокруг вашего дома. Хотя эта статья не учит вас, как защититься от горящих предметов или злоумышленников, она помогает вам решить, что вы можете сделать в этот день. Используя Raspberry Pi, Arduinos и ESP8266, мы покажем вам несколько самодельных метеостанций, которые вы можете сделать и использовать дома.

Интернет-сообщества — отличное место для поиска хороших руководств.
и вдохновение для проектов, включая метеостанции.Мы собираемся
изучите некоторые из них более подробно.

Конструкции

Сделать своими руками
метеостанция, необходимое оборудование немногочисленное и дешевое. Как показывает этот проект метеостанции, Raspberry
Pi
, датчик атмосферного давления и высоты BMP280 , макет и
некоторые перемычки провода все необходимое оборудование.
Это простой и легкий способ определить погоду в вашем доме. Тем не мение,
в этом проекте оборудование остается открытым, что не идеально для внешнего использования.

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

Все эти датчики
которые могут обнаруживать изменения окружающей среды, небольшие, дешевые и полезные для наших домашних хозяйств
метеостанции.Однако, если поиск каждого датчика занимает слишком много времени, попробуйте
с использованием Raspberry Pi Sense HAT , дополнительной платы для Raspberry Pi .
Он включает в себя следующие датчики: гироскоп , акселерометр , магнитометр , температуры , барометрический давления и влажность . Это
Также имеется светодиодная матрица 8х8 RGB и пятикнопочный джойстик. Raspberry Pi
Sense HAT
— очень полезное и доступное дополнение для всех ваших проектов,
стоимостью около 35 долларов США.Использование этого с Raspberry Pi позволит вам
сделать самую простую метеостанцию, как этот дизайнер сделал со своим Make
Мини-метеостанция с учебником Raspberry Pi. Все, что им было нужно, было
два указанных аппаратных средства и некоторое программирование для завершения их
метеостанция.

Солнечная энергия!

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

Мониторинг всего

Не хуже
солнечный дизайн, вы можете избавиться от модуля приемника и просто использовать свой
компьютер для мониторинга модуля передатчика.Фактически, все вышеперечисленные проекты
можно отслеживать через компьютер, планшет или даже телефон. Ты только
необходимо войти на платформу IoT, которая может отображать ваши данные в удобном для чтения
приборная панель. Здесь на помощь приходит uBeac, упрощающий использование ваших проектов.
Благодаря своей мощной платформе IoT uBeac позволяет визуализировать тенденции на основе данных, которые вы
Собраны метеостанции. Он позволяет настроить панель управления так, чтобы
все, что душе угодно, даже предоставляя виджет Raw , который
позволяет создавать собственные виджеты с помощью HTML.uBeac — это IoT-сервис, который вы можете легко получить
руки, подписавшись с бесплатной учетной записью.

Узнать больше
о том, что uBeac может для вас сделать, и ознакомьтесь с нашей платформой.
Удачного подключения!

Строительство метеостанции Arduino

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

Эмма Чард
Исследования окружающей среды

I. Введение

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

II. Методы

  • Шаг 1. Заказ необходимых запчастей для метеостанции
  • Шаг 2: Закодируйте и подключите Arduino и подключите к компьютеру с программным обеспечением Arduino
  • Шаг 3. После успешного кодирования проверьте, правильно ли считываются данные
  • Шаг 4: Соберите метеостанцию ​​
  • Шаг 5: По завершении начните сбор данных вне помещений в различных климатических условиях и регионах
  • Шаг 6: Повторите шаг 5, чтобы собрать больше данных для более точного считывания

Данные аэропорта Бойсе

III.Результат

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

IV. Вывод

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

Благодарности

Я хотел бы поблагодарить Сару Ванлесс и профессора Пэм Эйшлин за помощь в кодировании Arduino, построение станции и сбор данных.

kjordahl / Arduino-Weather-Station: RF-приемник для метеостанции LaCrosse, с давлением и температурой в помещении

Получите данные датчика погоды La Crosse TX4 с помощью Arduino и отправьте их на
последовательный (USB) порт. Также рассчитывает точку росы по текущему
температуры и относительной влажности, а также записывает температуру в помещении от
цифровой датчик DS1631 и барометрическое давление от бортового BMP085
датчик давления. Arduino не выводит время
измерений, поэтому при регистрации данных следует добавлять метку времени.
с помощью компьютера.5,255

Моя высота 139 м.

Этот проект основан на приемнике метеостанции из книги
Практическая Arduino от Джона Оксера и Хью Блемингса и использует
часть их исходного кода, который можно найти на GitHub. Способствовать
помощь в декодировании пакетов данных поступила со страницы Жан-Поля Рубела на
Датчики Лакросса. Код датчика давления BMP085 основан на коде из
Interactive Matter (используется и перелицензируется под лицензией GPL с
разрешение).

Формула точки росы:

Лоуренс, М., Связь между относительной влажностью и
температура точки росы во влажном воздухе: простое преобразование и
приложения, Бюллетень Американского метеорологического общества ,
86 , 225–233, DOI: 10.1175 / БАМС-86-2-225, 2005

Дополнительная информация на http://kjordahl.net/weather.html.

Эти программы выпущены под лицензией GPLv3. См. Файл КОПИРОВАНИЕ
или http://www.gnu.org/licenses для получения подробной информации.

Келси Джордаль
kjordahl @ alum.mit.edu

Отметка времени:

README.org
Этот информационный файл
README.txt
Версия ASCII, экспортированная из README.org
lacrosse.pde
Код Arduino
logserial.py
Простой скрипт Python для входа через последовательный порт и добавления отметки времени
plotweather.py
скрипт Python для построения и загрузки данных на веб-сайт
template_py.html
пустой файл HTML, используемый в качестве шаблона plotweather.py
seriallogrotate
сценарий оболочки для поворота файлов журнала последовательного порта (запускается
cron демон)
logserial.conf
файл для / etc / init для запуска logserial.py
автоматически (для демона выскочки, используемого Ubuntu
и дистрибутивы Debian Linux)

Требуемое оборудование для этого проекта — платформа, совместимая с Arduino.
с РЧ-приемником 434 МГц, подключенным к цифровому выводу 8, резистор 10 кОм
на аналоговом контакте 1 и датчик давления BMP085, подключенный к аналоговым контактам
4 и 5.Совместимый датчик температуры 434 МГц (например, La Crosse
TX4) также предполагается. Пожалуйста, ознакомьтесь с приведенными выше ссылками для получения подробной информации
подробности подключения этих компонентов.

Скетч Arduino lacrosse.pde при загрузке в Arduino
отправить вывод на последовательный порт USB подключенного компьютера. Для
автоматическое ведение журнала и построение графиков, используйте включенные файлы (которые имеют
был протестирован в системе Ubuntu 10.10). Скопируйте файлы logserial.py и
plotweather.py / usr / local / bin или другой каталог в вашем
дорожка. HTML-шаблон template_py.html следует хранить в
каталог, который будет обновлен статической веб-страницей и графиком
(например, / home / user / html / weather ). Чтобы запускать скрипты автоматически,
скопируйте logserial.conf в / etc / init и seriallog поверните в
/etc/cron.weekly . Чтобы запускать сценарий построения каждые 15 минут, вы
возможно, вы захотите отредактировать ваш файл user crontab следующим образом:

 1,16,31,46 * * * * / usr / local / bin / plotweather.py -u
 

Возможно, вам потребуется отредактировать сценарии на нужные пути для
logging и HTML-файлы в вашей системе.

v1.1.1 (19 февраля 2012 г.)
Сценарий обновления журнала
v1.1 (25 апреля 2011 г.)
Замена датчика температуры в помещении на DS1631
v1.0.6 (19 февраля 2011 г.)
plotweather.py принимает необязательные аргументы;
этот файл README переформатирован в Emacs org-mode
v1.0.5 (7 января 2011)
Добавить файлы и инструкции для автоматического
каротаж и построение
v1.0.4 (15 декабря 2010 г.)
перейти на более надежный скрипт Python для построения графика
v1.0.3 (3 сентября 2010 г.)
улучшить построение графиков, включая давление и
лучший автоматический выбор диапазона
v1.0 (14 августа 2010 г.)
Выпуск полной версии
v0.9.9 (3 августа 2010)
Добавлена ​​поддержка датчика давления BMP085 на борту
v0.9.2 (18 апреля 2010 г.)
Обновление скриптов построения графиков для дневных максимумов и минимумов
температуры (по Фаренгейту).
v0.9.1 (14 марта 2010 г.)
Добавить сценарии построения по Гринвичу и шаблон HTML
v0.9 (9 марта 2010 г.)
Первоначальный выпуск сценария Arduino

Метеостанция Arduino с цветным TFT-дисплеем ST7735

/ *

* Метеостанция Arduino с цветным TFT-дисплеем ST7735 (128×160 пикселей) и датчиком барометрического давления, температуры и влажности

* BME280.

* Это бесплатное программное обеспечение БЕЗ ГАРАНТИЙ.

* https: // простая схема.com /

* /

#include // включить графическую библиотеку Adafruit

#include // включить библиотеку Adafruit ST7735 TFT

#include

#define TFT_RST 8 // Вывод TFT RST подключен к выводу 8 Arduino

#define TFT_CS 9 // Вывод TFT CS подключен к выводу 9 arduino

#define TFT_DC 10 // TFT Вывод постоянного тока подключен к выводу 10 Arduino

// инициализировать библиотеку TFT ST7735

Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);

// определение адреса I2C устройства: 0x76 или 0x77 (0x77 — адрес библиотеки по умолчанию)

#define BME280_I2C_ADDRESS 0x76

Adafruit_BME280 bme280; // инициализировать библиотеку Adafruit BME280

void setup (void)

{

tft.initR (INITR_BLACKTAB); // инициализируем микросхему ST7735S, черная вкладка

tft.fillScreen (ST7735_BLACK); // заливка экрана черным цветом

tft.drawFastHLine (0, 30, tft.width (), ST7735_WHITE); // рисуем горизонтальную белую линию в позиции (0, 30)

tft.setTextColor (ST7735_WHITE, ST7735_BLACK); // установить цвет текста на белый и черный фон

tft.setTextSize (1); // размер текста = 1

tft.setCursor (4, 0); // перемещаем курсор в позицию (4, 0) пиксель

tft.печать («ARDUINO + ST7735 TFT»);

tft.setCursor (19, 15); // перемещаем курсор в позицию (19, 15) пиксель

tft.print («ПОГОДНАЯ СТАНЦИЯ»);

// инициализировать датчик BME280

if (bme280.begin (BME280_I2C_ADDRESS) == 0)

{// ошибка подключения или неправильный адрес устройства!

tft.setTextColor (ST7735_RED, ST7735_BLACK); // установить цвет текста на красный и черный фон

tft.setTextSize (2); // размер текста = 2

tft.setCursor (5, 76); // перемещаем курсор в позицию (5, 76) пиксель

tft.print («Connection»);

tft.setCursor (35, 100); // перемещаем курсор в позицию (35, 100) пиксель

tft.print («Ошибка»);

при этом (1); // оставаться здесь

}

tft.drawFastHLine (0, 76, tft.width (), ST7735_WHITE); // рисуем горизонтальную белую линию в позиции (0, 76)

tft.drawFastHLine (0, 122, tft.width (), ST7735_WHITE); // рисуем горизонтальную белую линию в позиции (0, 122)

tft.setTextColor (ST7735_RED, ST7735_BLACK); // установить цвет текста на красный и черный фон

tft.setCursor (25, 39); // перемещаем курсор в позицию (25, 39) пиксель

tft.print («TEMPERATURE =»);

tft.setTextColor (ST7735_CYAN, ST7735_BLACK); // установить цвет текста на голубой и черный фон

tft.setCursor (34, 85); // перемещаем курсор в позицию (34, 85) пиксель

tft.print («HUMIDITY =»);

tft.setTextColor (ST7735_GREEN, ST7735_BLACK); // установить цвет текста на зеленый и черный фон

tft.setCursor (34, 131); // перемещаем курсор в позицию (34, 131) пиксель

tft.print («PRESSURE =»);

tft.setTextSize (2); // размер текста = 2

}

// основной цикл

void loop ()

{

char _buffer [8];

// считываем температуру, влажность и давление с датчика BME280

float temp = bme280.readTemperature (); // получить температуру в ° C

float humi = bme280.readHumidity (); // получить влажность в%

float pres = bme280.readPressure (); // получить давление в Па

// напечатать температуру (в ° C)

if (temp

sprintf (_buffer, «-% 02u.% 02u», (int ) abs (temp), (int) (abs (temp) * 100)% 100);

else // температура> = 0

sprintf (_buffer, «% 02u.% 02u», (int) temp, (int) (temp * 100)% 100);

tft.setTextColor (ST7735_YELLOW, ST7735_BLACK); // установить цвет текста на желто-черный фон

tft.setCursor (11, 54);

tft.

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

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

Готовое устройство, такое как Weather Meters, напичканное анемометром, флюгером, измерителем количества осадков, которое остается лишь подключить через RJ11 интерфейс к Arduino для работы, в полной мере оценят только метеорологи, диспетчеры или агрономы.

Возможности самодельной метеостанции:

  1. Измерение текущей температуры в доме, на улице.
  2. Показания влажности воздуха.
  3. Отслеживание атмосферного давления.
  4. Вывод всех данных на экран телефона в реальном времени.

Перечень необходимых компонентов:

  1. Плата Arduino Uno, mini, nano с процессором ATmega 168, ATmega 328.
  2. Bluetooth модуль HC-05. Метеостанция на ардуино своими руками
  3. Датчик давления BMP180 — более экономное и точное устройство своей устаревшей версии BMP085. Метеостанция на ардуино своими руками
  4. Датчик влажности DHT22 — отличается от DHT11 большей точностью и расширенным диапазоном измерений. Температуру он меряет также неточно, с чувствительностью 0.5 °С, хотя уже от –40 до + 125 °С, а не от 0 до +50 °С. Метеостанция на ардуино своими руками
  5. Датчик температуры DS18B20, две штуки — один замеряет температуру в комнате, другой на улице. Использовать отдельные датчики температуры понадобилось, поскольку встроенный в модуль DHT22 имеет низкую точность до 0.5 °С. Метеостанция на ардуино своими руками
  6. Резисторы по 0,125 Вт: 4.7 кОм, 10 кОм.
  7. Монтажная плата, паечная или беспаечная.
  8. Сетевой адаптер 220/5 В для питания платы Arduino.

Дополнительно можно приобрести:

  1. Плата коммутационная Sensor Shield для быстрого подключения всех датчиков, сервомоторов, интерфейсов Serial и I2C, незаменима тем, кто ни разу не держал в руках паяльник.  Метеостанция на ардуино своими руками
  2. Импульсный преобразователь DC-DC, вход 7…24 В, выход 5 В, 2.5 А.

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

Подключение датчиков и Bluetooth модуля

Подключать датчики температуры DS18B20 следует с одним резистором 4.7 кОм между их выводами DQ и VDD.

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

Два датчика температуры подсоединены к плате Arduino по одной трехпроводной шине. Каждый датчик DS18B20 имеет свой уникальный 64-битный адрес, и работает с Arduino по однолинейному протоколу 1 Wire передачи данных.

  • Метеостанция на ардуино своими руками
  • Все два датчика будут передавать данные по одной шине на 4 цифровой вход платы Arduino.
  • Подключаем датчик давления BMP180 к плате Arduino четырьмя проводами:
  • VCC — 5V (питание +5В);
  • GND — GND (земля);
  • SDA — A4 аналоговый вход на Arduino;
  • SCL — A5 аналоговый вход на Arduino;

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

Подключаем датчик влажности с pul-up (подтягивающим) резистором 10 кОм между его выводами VCC и DAT. Если расстояние от датчика до контроллера более 20 метров, то рекомендуется ставить подтягивающий резистор на 5.1 кОм. При необходимости улучшить работу датчика, следует добавить конденсатор емкостью 100 нФ между его питанием VCC и землей GND.

  1. Метеостанция на ардуино своими руками
  2. Наш датчик влажности будет передавать данные на 8 цифровой вход платы Arduino.
  3. Остается лишь подключить Bluetooth модуль HC-05 к плате Arduino:
  • VCC — 5V (питание +5 В);
  • GND — GND (земля);
  • RX — TX на Arduino;
  • TX — RX на Arduino;
  • KEY — не используется;
  • STATE — не используется.
  • Программное обеспечение
  • Загружаем в Arduino эскиз программы для домашней миниметеостанции.
  • Скетч WSAB

Проверяем работоспособность собранного устройства. В Монитор порта компьютерной программы Arduino IDE отправляем 1, затем поочередно 2, 3, 4.

  • При отправке 1 — показания температуры на улице.
  • При отправке 2 — показания температуры в доме.
  • При отправке 3 — данные о давлении.
  • При отправке 4 — данные о влажности.
  1. Загружаем на Android телефон приложение Wether station Android Arduino Bluetooth.
  2. Показания температуры на улице в градусах Цельсия
  3. Показания температуры внутри дома в градусах Цельсия

Данные об атмосферном давлении на улице в мм.рт.ст.

  • Данные о влажности на улице в процентах
  • Собрать готовое устройство можно в любом корпусе: футляр от аудиокассеты, распределительная коробка.
  • Напоследок следует упомянуть, что собранная даже на Arduino Uno домашняя метеостанция потребляет совсем мизерный ток, до 30 мА, поэтому её вполне можно сделать переносной, запитав от солнечной панельки и аккумулятора.

Виталий Петрович. Украина Лисичанск.

Источник: https://volt-index.ru/high-tech/minimeteostantsiya-na-arduino-v-telefone.html

Метеостанция из ARDUINO | Мастер Винтик. Всё своими руками!

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

Предлагаемая схема метеостанции строится на Arduino, который является мозгом метеорологической станции. Она собирает данные от различных датчиков, обрабатывает их и отображает на ЖК-дисплее 16 х 2.

  • Вы можете выбрать любой ардуино для этого проекта.
  • Цепь состоит из трех датчиков типа MQ-135, BMP180 и в dht11.
  • Давайте посмотрим работу каждого датчика подробнее.

Датчик MQ-135

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

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

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

Изменения напряжения от датчика поступает к Arduino. Мы устанавливаем пороговые уровни в программе. Когда напряжение превышает порог уровня, микроконтроллер сообщает загрязнён ли воздух или нет.

На рисунке выше показана схема подключения. Этому датчику необходимо внешнее 5V питание, поскольку он имеет нагревательный элемент внутри датчика, который потребляет около 1 ватта.

Питание от Arduino не может обеспечить больший ток.

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

Датчик dht11

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

Датчик dht11 является известный как датчик температуры и влажности.

Это 4-контактный устройство, но используется только 3 из них. Он может показаться очень простой, но внутри он имеет микроконтроллер, который передает данные в цифровом виде для Arduino.

Схема подключения датчика к Arduino очень проста. Выход датчика подключается к контакту А1 ардуино. На vcc питания и GND подключены к выводам питания поставка ардуино.

Примечание: пожалуйста, убедитесь, что ваш датчик имеет встроенный резистор. Если его нет, подключите 4,7 ком резистор с выхода датчика dht11.

Датчик BMP180

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

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

Датчик измеряет высоту установки над уровнем моря. Он использует протокол связи I2C, SDA pin идет на А4 ардуино и SCL идет на А5 ардуино. Vcc и GND подключены к выводам питания питания ардуино.

LCD дисплей

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

ЖК-дисплей показывает все данные от датчиков. Связь между ЖК-дисплеем и ардуино является стандартным. Отрегулируйте потенциометром 10К для оптимальной яркости ЖК-дисплея.

Внешний вид подключений

Вот схема подключения всех датчиков станции к плате Arduino.

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

Программа:

#include
#include
#include
#include
#define DHTxxPIN A1
LiquidCrystal lcd(12,11,5,4,3,2);
dht DHT;
Adafruit_BMP085 bmp;
int ack;
int input = A0;
unsigned long A = 1000L;
unsigned long B = A * 60;
unsigned long C = B * 2;
int low = 300;
int med = 500;
int high = 700;
int x = 4000;
void setup()
{
Serial.begin(9600);
lcd.

begin(16,2);
lcd.setCursor(0,0);
lcd.print(«Sensors are»);
lcd.setCursor(0,1);
lcd.print(«getting ready»);
delay(C);
}
void loop()
{
ack=0;
int chk = DHT.read11(DHTxxPIN);
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1;
break;
}
if(ack==0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«Temp(*C)= «);
lcd.print(DHT.temperature);
lcd.

setCursor(0,1);
lcd.print(«Humidity(%) = «);
lcd.print(DHT.humidity);
delay(x);
}
if(ack==1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«NO DATA»);
lcd.setCursor(0,1);
lcd.print(«Check Sensor»);
delay(x);
}
if (!bmp.begin())
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«BMP180 sensor»);
lcd.setCursor(0,1);
lcd.

print(«not found»);
while (1) {}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«—-Pressure—-  «);
lcd.setCursor(0,1);
lcd.print(bmp.readPressure());
lcd.print(»  Pascal»);
delay(x);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«—-Altitude—-«);
lcd.setCursor(0,1);
lcd.print(bmp.readAltitude(101500));
lcd.

print(»  meter»);
delay(x);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(»  Air Quality:»);
if(analogRead(input)==0)
{
lcd.setCursor(0,1);
lcd.print(»  Sensor Error»);
delay(x);
}
if(analogRead(input)0)
{
lcd.setCursor(0,1);
lcd.

print(»      GOOD»);
delay(x);
}
if(analogRead(input)>low && analogRead(input)=med && analogRead(input)=high)
{
lcd.setCursor(0,1);
lcd.print(»     WORST»);
delay(x);
}

  1. }
  2. Здесь можно бесплатно скачать библиотеку с кодами для работы датчиков
  3. By Girish Radhakrishnan

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

  • Световой меч своими руками
  • Метеостанция на ардуино своими рукамиСветово́й меч (англ. Lightsaber) — это фантастическое оружие многим известно по фантастической саге «Звёздные войны». Его можно встретить в научно-фантастических фильмах и рассказах.
    В интернете много статей о том, как собрать световой меч. Они в основном на одном принципе: размещение в длинной трубе разноцветных светодиодов. Тем самым имитируют лазерный луч. Но нигде не встречается имитация звука этого луча.
    Подробнее…

  • Необычные Двоичные Часы
  • Четырехточечные бинарные часы с ультра-простым дисплеем

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

  • Компактный генератор сигналов на CS2000
  • Метеостанция на ардуино своими руками

    Простой ВЧ генератор от 1,5 до 165 МГц

    • Генераторы (осцилляторы) составляют ключевую роль во многих радиолюбительских и других конструкциях.
    • В любительском радио генератор переменной частоты (VFO) часто используется для генерации рабочей частоты приемника, передатчика или приемопередатчика.
    • При поиске микросхемы для генератора я наткнулся на Cirrus Logic CS2000 и после дальнейшего детального изучения он выглядел довольно многообещающим компонентом…
    • Подробнее…

Популярность: 5 153 просм.

Источник: http://www.MasterVintik.ru/meteostantsiya-iz-arduino/

Домашняя метеостанция на базе Ардуино

Метеостанция на ардуино своими руками Давненько хотелось сделать мини метеостанцию-надоело выглядывать в окно чтобы посмотреть на градусник за стеклом. Этот приборчик заменит гигрометр, барометр и термометр а также покажет текущее время. В данном посту я расскажу как быстро и просто собрать небольшую метеостанцию на базе Ардуино. Основой будет плата Arduino Nano можно применить другие платы- Arduino Uno, Arduino Pro mini). Данные атмосферного давления и температуры в помещении будем получать с датчика BMP180, а влажность и температуру на улице с датчика DHT11. Часы реального времени DS1302 будут указывать текущее время. Всю информацию выводим на двухстрочный дисплей LCD1602.

Датчик DHT11 передает информацию по одному проводу на ардуино. Питается напряжением 5 В. Он измеряет влажность в пределах от 20 до 80%. Температура измеряет в диапазоне от 0 до 50оС.

Метеостанция на ардуино своими рукамиДатчик BMP180 измеряет атмосферное давление диапазоне 300-1100 hPa, температуру в диапазоне -40 +85оС. Напряжение питания составляет 3.3 В. Подключается по протоколу связи I2C. Метеостанция на ардуино своими рукамиЧасы реального времени DS1302 питаются напряжением 5 В и подключается по протоколу связи I2C. При установке в соответствующее гнездо батарейки CR2032 поддерживают ход часов при отключении основного питания. Метеостанция на ардуино своими рукамиДисплей LCD1602 питается напряжением 5 Вольт и также подключается по протоколу связи I2C. Метеостанция на ардуино своими рукамиЭта самоделка сделана на базе готовых плат и датчиков, поэтому ее можно повторить любому начинающему любителю поработать с паяльником. Заодно можно получить азы программирования Ардуино. Я программировал эту метеостанцию в программе визуального программирования FLPROG за 15 минут. Не нужно вручную часами писать скетчи, данная программа помогает начинающим (и не только) быстро освоить азы программирования устройств на основании платформы Ардуино. Кому лень повозиться с программой — скетч ( только выставлять текущее время часов надо будет):#include
#include «DHT_NEW.h»
#include
#include
#include
BMP085 _bmp085 = BMP085();
long _bmp085P = 0;
long _bmp085T = 0;
long _bmp085A = 0;

LiquidCrystal_I2C _lcd1(0x3f, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

DHT _dht1;

iarduino_RTC _RTC1(RTC_DS1302, 7, 5, 6);

unsigned long _dht1LRT = 0UL;
unsigned long _dht1Tti = 0UL;
int _disp1oldLength = 0;
unsigned long _bmp0852Tti = 0UL;
String _RTC1_GetTime2_StrOut;
int _disp2oldLength = 0;
void setup()
{
Wire.begin();
delay(10);
_bmp085.init(MODE_ULTRA_HIGHRES,116, true);
_RTC1.begin();
_RTC1.period(1);
_lcd1.init();
_lcd1.backlight();
_dht1.setup(4);
_dht1LRT = millis();
_dht1Tti = millis();
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
if(_isTimer(_bmp0852Tti, 1000)) {
_bmp0852Tti = millis();
_bmp085.getAltitude(&_bmp085A);
_bmp085.getPressure(&_bmp085P);
_bmp085.getTemperature(&_bmp085T);
}

//Плата:1
if (1) {
_dispTempLength1 = ((((((String(«T:»)) + (( _floatToStringWitRaz((_bmp085T)/(10.00),1))) + (String(«*»)))) + (((String(«P:»)) + (( _floatToStringWitRaz((_bmp085P)/(133.3),0))) + (String(«*»)))) + (((String(«»)) + (( _floatToStringWitRaz(_dht1.humidity,0))) + (String(«%»))))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 — _dispTempLength1)/2), 0);
_lcd1.print((((((String(«T:»)) + (( _floatToStringWitRaz((_bmp085T)/(10.00),1))) + (String(«*»)))) + (((String(«P:»)) + (( _floatToStringWitRaz((_bmp085P)/(133.3),0))) + (String(«*»)))) + (((String(«»)) + (( _floatToStringWitRaz(_dht1.humidity,0))) + (String(«%»)))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if(_isTimer(_dht1Tti, 2000)) {
if(_isTimer(_dht1LRT, ( _dht1.getMinimumSamplingPeriod()))) {
_dht1.readSensor();
_dht1LRT = millis();
_dht1Tti = millis();
}
}
if (1) {
_dispTempLength1 = ((((((String(«t:»)) + (( _floatToStringWitRaz(_dht1.temperature,0))) + (String(«*»)))) + (_RTC1_GetTime2_StrOut)))).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 — _dispTempLength1)/2), 1);
_lcd1.print((((((String(«t:»)) + (( _floatToStringWitRaz(_dht1.temperature,0))) + (String(«*»)))) + (_RTC1_GetTime2_StrOut))));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime(«H:i:sD»);

}
String _floatToStringWitRaz(float value, int raz)
{

return String(value, raz);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}Применять такой прибор можно где угодно или дома, на природе или поместить в автомобиль. Есть возможность запитать схему от аккумуляторов, применив плату заряда, в итоге будет переносная модель метеостанции. Всю информацию можно получить посмотрев в видео:

Перечень материалов и инструментов -плата Arduino Nano -двухстрочный дисплей LCD1602; -часы реального времени DS1302; -датчик атмосферное давления и температуры BMP180; -датчик температуры и влажности DHT11; -блок зарядки от телефона; -любой подходящий корпус -пинцет; ножницы; -паяльник; -кембрик; -тестер; -соединительные провода;-провод четырехжильный для выносного датчика.

Шаг первый. Делаем корпус для метеостанции

Подобрал пластмассовую коробочку из магазина Fix Price (всего то 17р). Предварительно вырезал в крышке окно для дисплея.

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

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

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

Шаг второй. Сборка схемы прибора.

Фото схемы

Метеостанция на ардуино своими рукамиДалее надо скоммутировать по схеме все платы и датчики метеостанции. Делаем это с помощью монтажных проводов с соответствующими разъемами. Я не делал соединения на пайке ,так в перспективе при выходе какого то модуля из строя (или по другим причинам) можно легко его заменить. На винтовом разъеме подключается кабель датчика DHT11 идущий на улицу. Питание можно осуществить с разъема USB платы Ардуино на компьютер, или подав напряжение 7-12В на контакт VIN и GND. Сначала я собрал схему вне корпуса и запрограммировал и отладил ее в программе FLPROG. Фото блок схемы в программе FLPROG.Метеостанция на ардуино своими руками Когда первый раз запрограммировал и включил схема метеостанции заработала. Сейчас стало возможным иметь данные о погоде за бортом и в комнате. В общем получилась интересная домашняя метеостанция с множеством различных функций. Фото в сбореМетеостанция на ардуино своими рукамиНеплохая получилась самодельная конструкция собранная в выходные. Было увлекательно самому сделать интересный и полезный приборчик. Сделать самостоятельно такой девайс, я думаю по плечу даже начинающему.Это не требует больших затрат времени и денег. Применить можно его где хочешь в доме на загородной даче. На всю работу пошло два выходных вечера всю электронику брал на Алиэкспресс. Остальные материалы нашлись у меня по сусекам. На базе платформы Ардуино можно собирать множество разнообразных полезных устройств.

Всем спасибо за внимание, вам успехов и удачи и в вашей жизни и в творчестве!

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

Источник: https://USamodelkina.ru/9703-domashnyaya-meteostanciya-na-baze-arduino.html

Метеостанция на Arduino – Радиодед

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

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

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

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

  • контроллер Arduino;
  • плата прототипирования (без пайки)
  • модуль датчика BMP085 или BMP180
  • модуль с датчиком влажности DHT11
  • датчик температуры DS18B20
  • резистор 4,7 кОм;
  • дисплей Nokia 5110
  • провода и корпус

В качестве платы Arduino в принципе можно использовать любую из модельного ряда Arduino, но я рекомендую Arduino Uno или Arduino Duemilanove, так как в будущем собираюсь установить на нее Ethernet shield, чтобы сделать домашнюю метеостанцию устройством IoT (“Интернета вещей”). Я буду использовать плату Arduino Duemilanove (рисунок 1).

Метеостанция на ардуино своими рукамиРис. 1. Плата Arduino Duemilanove

Теперь рассмотрим датчики, которые будем использовать в проекте.
Датчик давления BMP085 (рисунок 2) – высокоточный датчик атмосферного давления с низким энергопотреблением. используется для измерения атмосферного давления. Точность достигает минимального значения измерения давления 0.03hPa.

Также выводит и данные о температуре. Напряжение питания 1.62V – 3.6V. Интерфейс подключения I2C. В продаже встречаются готовые платы  как с стабилизатором, так и без него.

Датчик давления BMP085 мы будем использовать только для измерения атмосферного давления, для измерения температуры будем использовать более точный датчик DS18B20.

Метеостанция на ардуино своими рукамиРис.2. Модуль датчика BMP085

Датчик температуры DS18B20 (рисунок 3) –  это цифровой измеритель температуры  с  разрешением преобразования 9 – 12 разрядов и функцией тревожного сигнала контроля за температурой.

Обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire. Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.

У каждой микросхемы DS18B20 есть уникальный серийный код длиной 64 разряда, который позволяет нескольким датчикам подключаться на одну общую линию связи.

Метеостанция на ардуино своими рукамиРис. 3. Датчик температуры DS18B20

Датчик DHT11 (рисунок 4) не обладают высоким быстродействием и точностью, но зато имеет низкую стоимость. Датчик состоит из емкостного датчика влажности и термистора.

Содержит аналого-цифровой преобразователь для преобразования аналоговых значений влажности и температуры в цифровые. Диапазон измерения влажности – 20-80%, частота опроса 1 раз в секунду.

Мы будем использовать в проекте датчик DHT11 в виде готового модуля.

Метеостанция на ардуино своими рукамиРис.4. Модуль DHT11

Для отображения информации с датчиков будем использовать ЖК-дисплей Nokia 5110 (рисунок 5). Это графический монохромный дисплей с разрешением 84×48 точек. Дисплей Nokia 5110 поставляется на плате в паре с контроллером PCD8544 и штыревым разъемом. Электропотребление дисплея позволяет питать его от выхода +3.3 В платы Arduino.

Метеостанция на ардуино своими рукамиРис. 5. Дисплей Nokia 5110

Собираем схему согласно рисунка 6.

Метеостанция на ардуино своими рукамиРис. 6. Схема подключения к Arduino

Для удобства я спаял датчики на плате прототипирования, сделал контакты для подключения проводов от дисплея и оформил это в виде шилда – припаял штырьки для подключения к контактам платы Arduino (рисунок 7).

Метеостанция на ардуино своими рукамиРис. 7. Как получилось у меня. Проект метеостанции на Arduino

Теперь приступим к написанию скетча. При написании скетча нам понадоьятся следующие Arduino-библиотеки:
•    OneWire – для работы с устройствами 1-Wire (датчик DS18B20);
•    BMP085 и Wire – для работы с датчиком BMP085 (или BMP180);
•    DHT – для работы с датчиком DHT11;

•    Adafruit_GFX и Adafruit_PCD8544 – для работы с дисплеем Nokia 5110.

С периодичностью 5 секунд получаем данные с датчиков DS18B20, DHT11, BMP085 и выводим в монитор последовательного порта и на дисплей Nokia 5110.

Процедура получения данных с датчика DS18B20 – get_temp()  выполняет поиск устройств 1-Wire, подключенных к выводу Adruino  D7 (у нас один датчик), и выдает его данные.
Запустим Arduino IDE.

Создадим новый скетч и внесем в него содержимое листинга 1.

// подключение библиотек
#include
#include
#include
#include “DHT.

h”
#include
#include
// тип DHT сенсора
#define DHTTYPE DHT11   // DHT 11
// создание экземпляров объектов
BMP085 dps = BMP085();
DHT dht(8, DHTTYPE);  // dht11 на pin 8
OneWire  ds(9);       // ds18b20 на pin 9
// Nokia 5110
// pin 3 – Serial clock out (SCLK)
// pin 4 – Serial data out (DIN)
// pin 5 – Data/Command select (D/C)
// pin 6 – LCD chip select (CS)
// pin 7 – LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);
// переменные
int Temp1;

long Temperature085 = 0, Pressure085 = 0, Altitude085 = 0;

void setup() {
// запуск последовательного порта
Serial.begin(9600);
Serial.println(“start”);
// запуск I2C
Wire.begin();
// запуск bmp
dps.init();
// инициализация дисплея
display.begin();
// установить контраст фона экрана
display.

setContrast(60);
display.clearDisplay();       // очистить экран
display.setTextSize(1);    // размер шрифта
display.setTextColor(BLACK);   // цвет
// заставка
display.setCursor(15,15);
display.print(“Home Meteo”);
display.

display();
delay(2000);

}

void loop () {
display.clearDisplay();
display.setCursor(15,5);
display.print(“Home Meteo”);
// ds18b20
int Temp=get_temp();
if(Temp==999) {
display.setCursor(15,15);
display.print(“t=”);
display.print(Temp1/16);
display.print(“.”);
display.print(((Temp1%16)*100)/16);
display.print(” C”);
}
else if(Temp==998) {
Serial.println(“Temp=ERROR”);
display.setCursor(15,15);
display.

print(“t=ERROR”);
}
else {
Serial.print(“Temp=”);
Serial.print(Temp/16);
Serial.print(“.”);
Serial.print(((Temp%16)*100)/16);
Serial.println(” *C”);
display.setCursor(15,15);
display.print(“t=”);
display.print(Temp/16);
display.print(“.”);
display.print(((Temp%16)*100)/16);
display.print(” C”);
Temp1=Temp;
}
// dht11
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.

print(“humidity=”);
Serial.print(h);
Serial.println(” %”);
Serial.print(“temperatura=”);
Serial.print(t);
Serial.println(” *C”);
display.setCursor(15,25);
display.print(“h=”);
display.print(h);
display.print(” %”);
// bmp085
dps.getTemperature(&Temperature085);
dps.getPressure(&Pressure085);
dps.getAltitude(&Altitude085);
Serial.print(“pressure5=”);
Serial.print(Pressure085/133.

3);
Serial.println(” mm Hg”);
Serial.print(“temp5=”);
Serial.print(Temperature085*0.1);
Serial.println(” *C”);
Serial.println();
display.setCursor(5,35);
display.print(“p=”);
display.print(Pressure085/133.3);
display.print(“mmHg”);
// обновить
display.

display();
// пауза
delay(5000);
}
// получение температуры датчика ds18b20
int get_temp() {
byte i;
byte present = 0;
byte data[12];
byte addr[8];

int Temp;

if ( !ds.search(addr)) {
Serial.print(“No more addresses.n”);
ds.reset_search();
return 999;
}
Serial.print(“R=”);  // печать уникального 1-wire идентификатора
for( i = 0; i

print(addr[i], HEX);
Serial.print(” “);
}
Serial.println();
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print(“CRC is not valid!n”);
return 999;
}
if ( addr[0] != 0x28) {
Serial.

print(“Device is not a DS18S20 family device.n”);
return 999;

}

ds.reset();
ds.select(addr);
// начинаем преобразование, используя ds.write(0x44,1)
ds.write(0x44,1);
// пауза с запасом (750 мс)
delay(1000);

ds.reset();

ds.select(addr);
ds.write(0xBE);
for ( i = 0; i

Источник: https://radioded.ru/meteostantsiya-na-arduino/

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

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

Передатчик имеет следующие характеристики:1. Модель: MX -FS — 03V2. Радиус действия (зависит от наличия преграждающих предметов): 20-200 метров3. Рабочее напряжение: 3.5 -12В4.

Размеры модуля : 19 * 19 мм 5. Модуляция сигнала : AM6. Мощность передатчика: 10 мВт7. Частота: 433 МГц8. Необходимая длина внешней антенны : 25см9.

Простота подключения (всего три провода): DATA ; VCC ; земля.

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

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

  1. Аппаратная часть домашней метеостанции
  2. После нескольких экспериментов решил подключить к Arduino Nano датчик температуры, влажности и передатчик.
  3. Метеостанция на ардуино своими рукамиПодключение датчика температуры, влажности и передатчика
  4. Датчик температуры 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.

DHT11:

  • Очень низкая стоимость
  • Питание и I/O 3-5 В
  • Определение влажности 20-80% с 5% точностью
  • Определение температуры 0-50 град. с 2% точностью
  • Частота опроса не более 1 Гц (не более раза в 1 сек.)
  • Размеры 15.5мм x 12мм x 5.5мм
  • 4 вывода с расстоянием между ножками 0.1″

DHT имеет 4 вывода:

  1. Vcc (3-5V питание)
  2. Data out — Вывод данных
  3. Не используется
  4. Общий

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

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

  1. Программная часть домашней метеостанции
  2. Передающий модуль измеряет и передает температуру раз в 10 минут.
  3. Ниже привожу программу:

/*
Версия скетча 1.0
Отсылаем температуру каждые 10мин.

*/
#include
#include
#include

#define ONE_WIRE_BUS 2 //Пин подключения датчика Даллас

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer;

void setup(void)
{

//Serial.begin(9600);
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Устанавливаем скорость передачи (бит/с)

sensors.begin();

if (!sensors.getAddress(insideThermometer, 0));

printAddress(insideThermometer);
sensors.setResolution(insideThermometer, 9);

}

void printTemperature(DeviceAddress deviceAddress)
{

float tempC = sensors.getTempC(deviceAddress);
//Serial.print(«Temp C: «);

//Serial.println(tempC);
//Формирование данных для для отправки
int number = tempC;

char symbol = ‘c’; //Служебный символ определения что это датчик

String strMsg = «z «;
strMsg += symbol;
strMsg += » «;
strMsg += number;
strMsg += » «;
char msg[255];
strMsg.toCharArray(msg, 255);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Ждем пока передача будет окончена
delay(200);

}

void loop(void)
{

for (int j=0; j

Источник: https://cxem.net/arduino/arduino115.php

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

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

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

Инструкция по созданию домашней метеостанции на Arduino

1Подбор корпусадля будущей метеостанции

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

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

Метеостанция на ардуино своими рукамиКорпус для самодельной домашней метеостанции

2Используемые компоненты

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

Метеостанция на ардуино своими рукамиКомпоненты домашней метеостанции

  • В принципе, для оценки метеообстановки достаточно иметь данные о температуре, влажности и атмосферном давлении, а датчик углекислого газа необязателен.
  • Используя же все 3 датчика, у нас будут задействованы 7 цифровых и 3 аналоговых пина Ардуино, не считая питания, естественно.
  • 3Схема соединениякомпонентов метеостанции

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

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

4Скетч метеостанции

Напишем скетч для Ардуино. Код по возможности снабжён подробными ми.

Скетч для метеостанции на Arduino (разворачивается) /* СОЕДИНЕНИЯ Подключение датчика температуры-влажности DHT11 — — OUT > цифровой пин 9 — «+» > +3V (+5V) — «-» > GND Подключение датчика давления-температуры BMP085 — — VCC > 3.3V; (поддерживается 1.8 — 3.6 В) — GND > GND — SDA > аналоговый пин A4 — SCL > аналоговый пин A5 Детектор газа ————————————— — A0 — VCC — GND ЖКИ ———————————————— — LCD RS > к цифровым выводам 12 — 8 — LCD Enable > к выводам 11 — 9 — LCD D4 > к выводам 5 — 4 — LCD D5 > к выводам 4 — 5 — LCD D6 > к выводам 3 — 6 — LCD D7 > к выводам 2 — 7 — LCD R/W > GND — 10K резистор между +5V и землёй — сброс > к LCD VO (пин 3) */ // Подключение библиотек: #include // датчика температуры-влажности #include // LCD #include // датчика BMP085 #include // газовый детектор MQ135 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /* соединение LCD-шилда x## — для вывода кириллических символов, где ## — номера символов в таблице */ dht11 sensorTempHumid; // датчик температуры и влажности MQ135 gasSensor = MQ135(A0); // датчик газа #define RZERO 76.63 float rzero; // показания с датчика газа float ppm; int del = 5000; // задержка, мс /* Oversampling Setting (OSS) — настройки разрешения для датчика давления BMP085, см. https://www.sparkfun.com/tutorials/253 OSS может быть 0, 1, 2 или 3: 0 — ультранизкое потребление, низкое разрешение; 1 — стандартное потребление; 2 — высокое разрешение; 3 — ультравысокое разрешение и максимальное потребление. */ const unsigned char OSS = 0; // Калибровочные переменные для BMP085: int ac1; int ac2; int ac3; unsigned int ac4; unsigned int ac5; unsigned int ac6; int b1; int b2; int mb; int mc; int md; long b5; float temperature; // температура long pressure; // давление // Для прогноза: const float p0 = 101325; // давление на уровне моря, Па. const float currentAltitude = 179.5; // высота погодной станции над уровнем моря, м; const float ePressure = p0 * pow((1 — currentAltitude/44330), 5.255); // нормальное давление на данной высоте, Па. float weatherDiff; #define DHT11PIN 9 // пин 9 датчика DHT11. #define BMP085_ADDRESS 0x77 /* I2C адрес датчика BMP085; см. https://www.sparkfun.com/tutorials/253 */ void setup() { lcd.begin(16, 2); // инициализация ЖК Wire.begin(); // инициализация I2C bmp085Calibration(); // калибровка датчика BMP085 } void loop() { // Проверка датчика давления-влажности: int chk = sensorTempHumid.read(DHT11PIN); switch (chk) { case DHTLIB_OK: lcd.clear(); break; case DHTLIB_ERROR_CHECKSUM: lcd.clear(); lcd.print(«Checksum error»); delay(del); return; case DHTLIB_ERROR_TIMEOUT: lcd.clear(); lcd.print(«Time out error»); delay(del); return; default: lcd.clear(); lcd.print(«Unknown error»); delay(del); return; } // Считываем с датчика BMP085: temperature = bmp085GetTemperature(bmp085ReadUT()); temperature *= 0.1; pressure = bmp085GetPressure(bmp085ReadUP()); pressure *= 0.01; // Разница давлений для вычисления простого прогноза weatherDiff = pressure — ePressure; rzero = gasSensor.getRZero(); ppm = gasSensor.getPPM(); // ЖК: lcd.setCursor(0, 0); // курсор на строку 1, поз. 1; //lcd.print(«p = «); lcd.print(pressure*3/4); // Па -> мм рт.ст. lcd.print(«mmHg «); // мм рт.ст. // «Прогноз»: if(weatherDiff > 250) lcd.print(«Sun»); else if ((weatherDiff = -250)) lcd.print(«Cloudy»); else if (weatherDiff > -250) lcd.print(«Rain»); lcd.setCursor(0, 1); // переход на строку 2 //lcd.print(«t=»); lcd.print(temperature, 1); lcd.print(«C «); //lcd.print(«f=»); lcd.print(sensorTempHumid.humidity); lcd.print(«% «); lcd.print(ppm); //lcd.print(«t=»); //lcd.print(sensorTempHumid.temperature); //lcd.print(«C «); delay(del); lcd.clear(); } // ВЫЧИСЛЕНИЕ ДАВЛЕНИЯ // Функция получает калибровочные значения для BMP085 // и должна быть запущена в начале. void bmp085Calibration() { ac1 = bmp085ReadInt(0xAA); ac2 = bmp085ReadInt(0xAC); ac3 = bmp085ReadInt(0xAE); ac4 = bmp085ReadInt(0xB0); ac5 = bmp085ReadInt(0xB2); ac6 = bmp085ReadInt(0xB4); b1 = bmp085ReadInt(0xB6); b2 = bmp085ReadInt(0xB8); mb = bmp085ReadInt(0xBA); mc = bmp085ReadInt(0xBC); md = bmp085ReadInt(0xBE); } // Вычисление нескомпенсированной температуры. // Возврашает значение в десятых долях градуса Цельсия. short bmp085GetTemperature(unsigned int ut) { long x1, x2; x1 = (((long)ut — (long)ac6)*(long)ac5) >> 15; x2 = ((long)mc >4); } /* Вычисление нескомпенсированного давления. Калибровочные значения должны быть уже известны. b5 также необходимо, поэтому сначала нужно вызвать bmp085GetTemperature(). Возвращает значение в Паскалях. */ long bmp085GetPressure(unsigned long up) { long x1, x2, x3, b3, b6, p; unsigned long b4, b7; b6 = b5 — 4000; // вычисление b3: x1 = (b2 * (b6 * b6)>>12)>>11; x2 = (ac2 * b6)>>11; x3 = x1 + x2; b3 = (((((long)ac1)*4 + x3)2; // вычисление b4: x1 = (ac3 * b6)>>13; x2 = (b1 * ((b6 * b6)>>12))>>16; x3 = ((x1 + x2) + 2)>>2; b4 = (ac4 * (unsigned long)(x3 + 32768))>>15; b7 = ((unsigned long)(up — b3) * (50000>>OSS)); if (b7 >16; x2 = (-7357 * p)>>16; p += (x1 + x2 + 3791)>>4; return p; } // Чтение нескомпенсированного значения температуры. unsigned int bmp085ReadUT() { unsigned int ut; // Записывает 0x2E в регистр 0xF4 // для запроса показаний температуры: Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x2E); Wire.endTransmission(); delay(5); // Читает 2 байта из регистров 0xF6 и 0xF7 ut = bmp085ReadInt(0xF6); return ut; } // Чтение давления (нескомпенсированного). unsigned long bmp085ReadUP() { unsigned char msb, lsb, xlsb; unsigned long up = 0; // Записывает 0x34+(OSS

Источник: https://soltau.ru/index.php/themes/diy/item/436-kak-sdelat-pogodnuyu-stantsiyu-na-arduino

AlexGyver/MeteoClock

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

Описание проекта

Крутая домашняя метеостанция на Arduino с кучей датчиков, часами и большим дисплеем
Страница проекта на сайте: https://alexgyver.ru/MeteoClock/

Особенности:

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

Папки

ВНИМАНИЕ! Если это твой первый опыт работы с Arduino, читай инструкцию

  • libraries — библиотеки проекта. Заменить имеющиеся версии
  • firmware — прошивки для Arduino
  • schemes — схемы подключения компонентов

Схемы

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

Материалы и компоненты

Ссылки оставлены на магазины, с которых я закупаюсь уже не один год

Первые ссылки — в основном магазин Great Wall, вторые — WAVGAT. Покупая в одном магазине, вы экономите на доставке!

Дополнительно:

Вам скорее всего пригодится

Как скачать и прошить

  • Первые шаги с Arduino — ультра подробная статья по началу работы с Ардуино, ознакомиться первым делом!
  • Скачать архив с проектом

На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

  • Установить библиотеки в
    C:Program Files (x86)Arduinolibraries (Windows x64)
    C:Program FilesArduinolibraries (Windows x86)
  • Подключить внешнее питание 5 Вольт
  • Подключить Ардуино к компьютеру
  • Запустить файл прошивки (который имеет расширение .ino)
  • Настроить IDE (COM порт, модель Arduino, как в статье выше)
  • Настроить что нужно по проекту
  • Нажать загрузить
  • Пользоваться

Настройки в коде

RESET_CLOCK 0 // сброс часов на время загрузки прошивки (для модуля с несъёмной батарейкой).

Не забудь поставить 0 и прошить ещё раз!
SENS_TIME 30000 // время обновления показаний сенсоров на экране, миллисекунд
LED_MODE 0 // тип RGB светодиода: 0 — главный катод, 1 — главный анод

// управление яркостью
BRIGHT_CONTROL 1 // 0/1 — запретить/разрешить управление яркостью (при отключении яркость всегда будет макс.

)
BRIGHT_THRESHOLD 350 // величина сигнала, ниже которой яркость переключится на минимум (0-1023)
LED_BRIGHT_MAX 255 // макс яркость светодиода СО2 (0 — 255)
LED_BRIGHT_MIN 10 // мин яркость светодиода СО2 (0 — 255)
LCD_BRIGHT_MAX 255 // макс яркость подсветки дисплея (0 — 255)
LCD_BRIGHT_MIN 10 // мин яркость подсветки дисплея (0 — 255)

BLUE_YELLOW 1 // жёлтый цвет вместо синего (1 да, 0 нет) но из за особенностей подключения жёлтый не такой яркий
DISP_MODE 1 // в правом верхнем углу отображать: 0 — год, 1 — день недели, 2 — секунды
WEEK_LANG 1 // язык дня недели: 0 — английский, 1 — русский (транслит)
DEBUG 0 // вывод на дисплей лог инициализации датчиков при запуске. Для дисплея 1602 не работает! Но дублируется через порт!
PRESSURE 1 // 0 — график давления, 1 — график прогноза дождя (вместо давления). Не забудь поправить пределы гроафика
CO2_SENSOR 1 // включить или выключить поддержку/вывод с датчика СО2 (1 вкл, 0 выкл)
DISPLAY_TYPE 1 // тип дисплея: 1 — 2004 (большой), 0 — 1602 (маленький)
DISPLAY_ADDR 0x27 // адрес платы дисплея: 0x27 или 0x3f. Если дисплей не работает — смени адрес! На самом дисплее адрес не указан

// пределы отображения для графиков
TEMP_MIN 15
TEMP_MAX 35
HUM_MIN 0
HUM_MAX 100
PRESS_MIN -100
PRESS_MAX 100
CO2_MIN 300
CO2_MAX 2000

FAQ

Основные вопросы

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Вылетает ошибка загрузки / компиляции!
О: Читай тут: https://alexgyver.ru/arduino-first/#step-5

В: Сколько стоит?
О: Ничего не продаю.

Вопросы по этому проекту

Полезная информация

Источник: https://github.com/AlexGyver/MeteoClock

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *