Погодная станция. Датчик

Погодная станция, МетеосенсорТребования

  • Измерение наружной температуры и влажности
  • Измерение давления
  • Индикация показаний
  • Передача показаний по радиоканалу

Конструкция

Предыдущий датчик был весь на улице по принципу OREGONовского и питался от трех аккумуляторов AAA. Несмотря на режим сна, плата Arduino Pro Mini 3.3 с демонтированным светодиодом питания «выкушивала» батареи за 2-3 месяца. В морозы ниже -30С, Ni-MH аккумуляторы могли сесть за день. Да и связь с улицы порой оставляла желать лучшего. Также хотелось иметь на лоджии, за стеклом которой установлен датчик, индикацию температуры «на месте». Поэтому погодный датчик был установлен в корпусе с прозрачным стекле на стене лоджии. За стеклом корпуса был установлен светодиодный восьмиразрядный индикатор красного цвета, хорошо видный и в темноте и при свете. Туда же в корпус было заведено питание 220В.

Погодная станция. Датчик

 

 

В сравнении с неисправным OREGONовским

Погодная станция. Датчик

 

Сенсор DHT22 под козырьком

Погодная станция. Датчик

 

Компоненты

Схема

Схема сенсора

Алгоритм работы

Очень примитивный.

  1. Каждый 10 секунд опрашиваем датчик температуры/влажности DHT22 и давления BMP085 с использованием соответствующих библиотек и выдаем значения на дисплей.
  2. Каждые 60 секунд посылаем данные в эфир.
  3. В старой версии еще был контроль напряжения батареи — делитель, подключенный к A0. Сейчас делителя нет, а код остался.

Скачать

Датчик погодной станции

Другие статьи по погодной станции

Обсуждение на форуме arduino.ru

Скетч погодного датчика
2.8 KiB
1044 Downloads
Детали
Вы можете оставить отзыв или трекбек со своего сайта.

42 комментария на «Погодная станция. Датчик»

  1. Александр:

    Здравствуйте.
    В коде сенсора у Вас есть код:
    // Функция перезагрузки контроллера
    void(* resetFunc) (void) = 0;

    Я никак не пойму — как это работает. Можете объяснить?
    И еще вопрос, как собрать делитель для контроля батарейки? Какие номиналы резисторов использовать?

    • Alexey Alexey:

      void(* resetFunc) (void) = 0;

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

      Делитель напряжения 1:1 (два резистора по 10к). Откалибровал вольтметром.
      Есть возможность интереснее — читать значение внутреннего 14-го порта
      http://mk90.blogspot.ru/2009/06/vcc.html

  2. alivan:

    Я Вас приветствую.
    Не думали к уличному датчику ещё счётчик гейгера прикрутить?Мне кажется, что для полного счастья только его и не хватает.

    • Alexey Alexey:

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

  3. Игорь:

    Доброго времени суток, Алексей!
    Может я слишком много хочу, но всё же…
    Можно ли на Arduino организовать погодную станцию с функциями:
    -дата
    -время
    -температура
    -влажность
    -давление
    В качестве индикаторов испольовать цветные 7-сегментные матрицы?
    Просто не могу «догнаться» сколько датчиков можно подключить 🙁

    • Alexey Alexey:

      Да можно

      Дата и время — модуль часов реального времени с батарейкой (лучше что-то типа DS3231) по i2C (ноги A4 и A5)

      http://www.ebay.com/itm/DS3231-AT24C32-IIC-module-precision-Real-time-clock-module-memory-module-Arduino-/400503978923
      Температура/влажность DHT22 (1 дискретный вход) можно два для наружного и внутреннего применения

      http://www.ebay.com/itm/DHT22-AM2302-Digital-Temperature-And-Humidity-Sensor-Replace-SHT11-SHT15-Arduino-/170931111400
      Давление/температура BMP085 по I2C (ноги A4 и A5)

      http://www.ebay.com/itm/Replace-BMP085-5Pin-3-3V-5V-BMP180-Digital-Barometric-Pressure-Sensor-Module-/201125045279

      7-сегментные матрицы лучше подключать через MAX7219 (3 дискретных выхода)
      http://samopal.pro/proto-controller-2/

      Остается еще куча входов/выходов на кнопки или ИК-пультик управления, радиомодуль, Ethernet или еще чего пожелает фантазия

      • Игорь:

        Большое спасибо за наводки!
        Я пока что «полный чайник» в этой теме. Начал с Вашего проекта: заказал комплектующие и скачал все необходимые ПО и библиотеки. Когда придут посылочки (аккурат к Новому Году 🙂 ) начну постигать науку. Опыт радиомонтажника есть, роутер свой перешивал-настраивал (приём-раздача Инета, Samba, Transmission). Теперь вот хочу здесь освоиться: и для семьи для дома что-то сообразить, и детей приобщить может к робототехнике.
        …Да, у меня ещё вопросик с Датчиком из проекта. Начать хочу с него, а потом уже и далее Сервер и Табло.
        Судя по описанию радиомодуль Wi-Fi. Возможно ли организовать приём данных на смартфон (планшет) при наличии соответствующего приложения?

        • Alexey Alexey:

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

  4. Игорь:

    Век живи, век учись… А всё равно дураком умрёшь 🙂

  5. Игорь:

    Доброго времени суток, Алексей!
    Аккурат к праздникам, в декабре, получил большое количество посылок из Китая. Было чем заняться в новогодние каникулы и начал с Вашего проекта.
    Пока ждал посылки тренировался писать скетчи, получилось довольно занимательно. На практике всё оказалось сложнее. Для начала температурный датчик.
    1. Не совсем понял смысл вместе с основным файлом скетча ещё и ClassCoder.h и ClassAVG.h
    2. Опытный образец собрал на ArduinoUno (на какой-то распродаже удачно прикупил оригинальную итальянскую). По очереди подключал датчики DHT22, BMP085 и индикатор MAX7219. После загрузки скетча в мониторе порта отображались все заявленные показатели: температура и влажность на улице, температура в комнате, давление и высота над уровнем моря. С индикатором сложнее. После загрузки скетча индикатор отсвечивает первый замер и гаснет, а DHT22 в мониторе порта перестаёт определять температуру. Есть подозрения на нехватку питания (пробовал БП 5,8В 1А — не помогло). Если включать индикатор отдельно с каким-либо датчиком — всё отлично.
    3. Датчик DHT22 с индикатором хорошо работал ровно до зимы 🙂 В январе выпал снег, «ударили» морозы и индикатор из всей шкалы температуры показывает только «-«. Наблюдал вечером: монитор порта показывает 0,1*С и индикатор показывает 0,0*С. Как только в мониторе порта начало отображаться -0,1*С и ниже — индикатор показывал -0,0*С, но после -1,0*С индикатор показывает только — и никаких цифр.

    • Александр:

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

      • Alexey Alexey:

        DHT показывает NAN (это только для float значений), когда отваливается от контроллера.
        1. Возможные причины — плохой контакт проводков на сенсоре
        2. Нестабильная частота контроллера или нестандартная частота контроллера.
        3. Наводки на шине данных.

        Попробуйте следующее
        1. Понятно — поменять/пошевелить проводки
        2. В конструкторе DHT(< пин>,< тип>,< тм>) проверить правильность 1-го и 2-го параметра. Правильно выставит таймаут. 3 для частоты контроллер 8МГц, 6 — для 16МГц, 15- для 80МГц (ESP8266)
        3. Подтянуть вывод с данными у DHT через резистор 10к к VCC

        • Александр:

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

      • Игорь:

        Доброго времени суток, Александр!
        Прошу прощения за время, много работы. Из того блока сообщений:
        1. Победил.
        Как, не помню, но скетч переписал по своему и всё работает.
        Очень много времени в Инете потратил, кучу литературы и форумов перелопатил.
        2. Победил.
        Как, не помню, но скетч переписал по своему и всё работает.
        Очень много времени в Инете потратил, кучу литературы и форумов перелопатил.
        3. Проблема.
        Всю зиму индикаторы показывали только «-» без цифр, весна-лето-осень пока с плюсом всё кажет.
        Скоро отпуск. Планирую закинуть видео и выложить скетч своей конструкции. внешний датчик у меня за балконом, кабель телефонный 4-е жилы, работает изумительно 🙂

        • Максим:

          По пункту 3 — когда отображается минус при морозной погоде, но нет цифр. Код не работает с отрицательными значениями, чтобы исправить надо сделать так в функции Show7():

          Между строками:

          if( sensor.T < 0 )lc.setChar(0,7,'-',false);
          x1 = (int)(sensor.T*10);

          Добавить:

          if( sensor.T < 0 )lc.setChar(0,7,'-',false);
          sensor.T = abs (sensor.T);
          x1 = (int)(sensor.T*10);

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

          • Максим:

            Т.е. добавляем в коде только одну строку: sensor.T = abs (sensor.T);

  6. Иван:

    Доброго времени суток!
    Подскажите, как далеко можно вывести датчик температуры DHT22 от самого ардуино,влияет ли длина провода на показания датчика, а то до уличной стены тянуть почти 8 метров.
    Спасибо.

    • Alexey Alexey:

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

  7. Сергей:

    Добрый день!
    Хочу собрать на DHT22 гигрометр и термометр для сауны. Сам датчик расположить на уровне полки (датчик DHT22 будет сменный — при выходе из строя при перегреве, индикатор — 2 параллельных 7 сегментных индикатора (один будет установлен снаружи сауны на стеклянной двери индикацией в сауну, второй с наружи сауны на стена).
    Подскажите, какой минимальный набор нужно заказывать для реализации данного проекта. Связь выносного индикатора должна иметь минимальное количество жил в шлейфе и желательно, что бы выносной индикатор состоял из двух четырех 7 сегментных индикаторов расположении один под другим (на одном индикация температуры, на другом влажность – для уменьшения размеров коробки индикаторов).
    С Arduino не имел дело, прошу ткнуть, что необходимо для программирования контроллера и где почитать инфу для начинающих.

  8. Сергей:

    1. Что будет дешевле и проще при программировании? Хочу предусмотреть кнопки для отображения режимов; максимальных и минимальных значений температуры и влажности, уставки срабатывания реле (выход «1» или «0» на pin) на установленное значение температуры и влажности, калибровка датчика (коррекция значений температуры и влажности датчика в заданных точках и пересчет всей шкалы). Для хранения данных наверно нужна внешняя память или в контроллере есть своя?
    2. Тут параметры DHT22 http://tim4dev.com/2015/05/dht11-dht22-sensor/ датчик работает при -40…+80 °С, этого вполне хватит для сауны (хочу закупить несколько DHT22 на замену при необходимости).
    3. Тоже не нашел 4 сегментный с цифровым выходом. Можно переразвести плату на 2 ряда (думаю, так удобнее смотреть), может потом реализую это.
    4. Блок питания на какой ток нужен, 0,5А хватит? От зарядника подойдет? И нужна ли отдельная микросхема для стабилизации напряжения на 3,3В и 5В или это есть контроллере?
    5.С этим понятно.
    Спасибо.

    • Alexey Alexey:

      1. Я бы сделал ESP8266, прошивку от homes-smart, DHT22 + дисплей 1602 или 1604. Вывел бы все это в интернет в народный мониторинг и приложения бы для Андройда/Айфона прикрутил бы по мониторингу и статистики температуры

      3. Без проблем, индикаторы и микросхема раздельно продаются, только я бы не сказал, что это простой путь )))

      4. Да хватит. Если готовый Ардуино применять, у них у всех стабилизаторы уже есть на плате

  9. Сергей:

    1.Статистика нужна для метеостанции и с айфоном как то не удобно парится в бане :)))
    На дисплее 1602 лежа в бане на полке через стеклянную дверь ни чего не разглядишь, нужен (выносной дисплей – будет крепиться на стеклянной двери сауны — бани) яркий светодиодный дисплей типа MAX7219. Можно конечно на самом устройстве использовать как основной дисплей 1602. Вопрос, если запараллелить шины данных двух дисплеев MAX7219 будут работать оба дисплея или нужно их разносить на разные входа контроллера?

    • Alexey Alexey:

      Лучше, мне кажется MАX7219 включить последовательно и выдавать одинаковые цифры на разные разряды
      Вот если индикаторы непосредственно к выводам ардуино подключать, там можно и параллельно два дисплея. Но проводов много получается

  10. Сергей:

    А еhttp://ru.aliexpress.com/item/High-Quality-4-Bits-Digital-Tube-LED-Display-Module-Board-With-Clock-Display-For-Arduino-DIY/2038575854.html сли применить два таких дисплея вместо MАX7219?

    • Alexey Alexey:

      С применением соответствующей библиотеки для 74HC595 должно все работать 😉

  11. Валерий:

    Добрый день!
    Подключил к Arduino IDE все виблиотеки, на которы даны ссылки в скетче.
    При проверке выдается ошибка:
    «…meteo_sensor_v2.ino:23:22: fatal error: ClassAVG.h: No such file or directory»
    Где найти библиотеку ClassAVG.h

  12. Валерий::

    После загрузки скетча в мониторе порта информация отображается, а на индикаторе «—» или гаснет. В чем причина?

    • Alexey Alexey:

      Отображается «—» — ждет сигнала с сенсора

      • Виталий:

        Здравствуйте,
        Прощу Вашей помощи, сам только начинаю знакомится с Arduino и в программировании мягко говоря «чайник», но заинтересовал Ваш проект.
        Могли бы Вы выложить скетч вот для этого «Метеосенсор с передатчиком на 433МГц»?
        Спасибо.

  13. Дмитрий:

    Здравствуйте. Можете подсказать, почему может отключаться дисплей MАX7219 после того как поработает минут 5- 10? Помогает после этого ресет.
    У меня всё аналогично как у вас, разве что не прошит загрузчик на Optiboot.

    • Alexey Alexey:

      Было у меня такое в одном проекте из за помех
      Вылечилось тем, что я в каждом пакете установки цифр стал инициализировать MAX

  14. Дмитрий:

    На Таобао работаете через посредника или на прямую?

    • 1Alexey 1Alexey:

      Работаю через посредника. В последнее время, через MISTERTAO.COM
      Заказываю только то чего на Али не достать

  15. Дмитрий:

    Доставку на мистереТао какую обычно используете? )

    • Alexey Alexey:

      Если до 2 кг, то самую дешевую на конкретный момент:
      China Post Registered Air Mail или
      Почту Малазии.
      Сейчас появился Rusian Express. Не пробовал еще

  16. Andrey:

    У вас на схеме указано питание 3,3V. Ардуина 5-вольтовая, где ошибка?

    • Alexey Alexey:

      Раньше была Ардуино 5В. Сейчас тоже, но запитанная от 3.3В. Стабильно работает на 16МГц. Проверено на нескольких экземплярах.

  17. Andrey:

    А MAX7219 и DHT22 тоже нормально работают от 3,3V?

Ваш отзыв