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

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

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

Конструкция

Предыдущий датчик был весь на улице по принципу 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
1821 Downloads
Детали
Вы можете оставить отзыв или трекбек со своего сайта.

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

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

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

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

    • Alexey:

      void(* resetFunc) (void) = 0;

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

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

  2. alivan:

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

  3. Игорь:

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

  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:

        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:

      У 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:

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

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

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

  9. Сергей:

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

    • 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?

  11. Валерий:

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

  12. Валерий::

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

    • Alexey:

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

      • Виталий:

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

  13. Дмитрий:

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

  14. Дмитрий:

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

  15. Дмитрий:

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

  16. Andrey:

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

  17. Andrey:

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

  18. Игорь:

    Доброго времени суток, Алексей!
    Прошло ни много ни мало три года. После успешных экспериментов тема как забылась и вот на днях решил модернизировать свою погодную станцию и довести до конечного, так сказать, продукта. Собрал всё на макетке, подключил Arduino Uno R3, питание и…
    В мониторе порта всё замечательно, а вот индикатор горит всеми сегментами и реагирует только на кнопку перезагрузки.
    Если не затруднит, проверьте мой скетч из архива по ссылке. Может что где не так, где-то ошибка закралась?
    https://yadi.sk/d/4cfeaX1a3Qz6Ph

Ваш отзыв

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