Требования
- Измерение наружной температуры и влажности
- Измерение давления
- Индикация показаний
- Передача показаний по радиоканалу
Конструкция
Предыдущий датчик был весь на улице по принципу OREGONовского и питался от трех аккумуляторов AAA. Несмотря на режим сна, плата Arduino Pro Mini 3.3 с демонтированным светодиодом питания «выкушивала» батареи за 2-3 месяца. В морозы ниже -30С, Ni-MH аккумуляторы могли сесть за день. Да и связь с улицы порой оставляла желать лучшего. Также хотелось иметь на лоджии, за стеклом которой установлен датчик, индикацию температуры «на месте». Поэтому погодный датчик был установлен в корпусе с прозрачным стекле на стене лоджии. За стеклом корпуса был установлен светодиодный восьмиразрядный индикатор красного цвета, хорошо видный и в темноте и при свете. Туда же в корпус было заведено питание 220В.
В сравнении с неисправным OREGONовским
Сенсор DHT22 под козырьком
Компоненты
- Arduino Pro Mini 5v — $1,75 (перешит загрузчик на OPTOBOOT, чтобы работал сторожевой таймер и отключена проверка напряжения питания в фьюзах)
- Радиомодуль NRF24L01 — $0.75
- Дисплей светодиодный 8-разрядный с последовательным интерфейсом на MAX7219 — $3.5
- Датчик температуры и влажности DHT22 — $4
- Датчик давления (а также температуры и высоты) BMP085 -$5.6
- Блок питания 220В/3.3В600мА — $2.2
- Корпус 120x80x55 с прозрачной крышкой покупал для другого. Сейчас бы взял такой на ТАОБАО
Схема
Алгоритм работы
Очень примитивный.
- Каждый 10 секунд опрашиваем датчик температуры/влажности DHT22 и давления BMP085 с использованием соответствующих библиотек и выдаем значения на дисплей.
- Каждые 60 секунд посылаем данные в эфир.
- В старой версии еще был контроль напряжения батареи — делитель, подключенный к A0. Сейчас делителя нет, а код остался.
Скачать
- Скачать скетч погодного датчика
- Библиотека работы с датчиками DHT11/DHT22
- Библиотека работы с датчиком BOSCH BMP085
- Библиотеки работы с NRF24L01: RF24 и RF24Network
- Библиотека работы с LED индикаторами на MAX7219/7221 LedControl
Здравствуйте.
В коде сенсора у Вас есть код:
// Функция перезагрузки контроллера
void(* resetFunc) (void) = 0;
Я никак не пойму — как это работает. Можете объяснить?
И еще вопрос, как собрать делитель для контроля батарейки? Какие номиналы резисторов использовать?
void(* resetFunc) (void) = 0;
Это недокументированная функция перезагрузки Ардуино. Использовал раньше для перезагрузки раз в сутки. Сейчас сенсор не виснет, убрал вызов.
Делитель напряжения 1:1 (два резистора по 10к). Откалибровал вольтметром.
Есть возможность интереснее — читать значение внутреннего 14-го порта
http://mk90.blogspot.ru/2009/06/vcc.html
Я Вас приветствую.
Не думали к уличному датчику ещё счётчик гейгера прикрутить?Мне кажется, что для полного счастья только его и не хватает.
Счетчик гейгера не думал.
Думал про датчик дождя, а также датчик направления и скорости ветра. Только их на крыше нужно ставить.
Доброго времени суток, Алексей!
Может я слишком много хочу, но всё же…
Можно ли на Arduino организовать погодную станцию с функциями:
-дата
-время
-температура
-влажность
-давление
В качестве индикаторов испольовать цветные 7-сегментные матрицы?
Просто не могу «догнаться» сколько датчиков можно подключить 🙁
Да можно
Дата и время — модуль часов реального времени с батарейкой (лучше что-то типа 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. Возможно ли организовать приём данных на смартфон (планшет) при наличии соответствующего приложения?
NRF24L01 это не WiFi, хоть и работает на тех же частотах
Там реализован свой протокол зашитый в микросхему
Для работы Arduino с WiFi есть модули ESP8266 с очень привлекательной ценой.
Век живи, век учись… А всё равно дураком умрёшь 🙂
Доброго времени суток, Алексей!
Аккурат к праздникам, в декабре, получил большое количество посылок из Китая. Было чем заняться в новогодние каникулы и начал с Вашего проекта.
Пока ждал посылки тренировался писать скетчи, получилось довольно занимательно. На практике всё оказалось сложнее. Для начала температурный датчик.
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
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);
Доброго времени суток!
Подскажите, как далеко можно вывести датчик температуры DHT22 от самого ардуино,влияет ли длина провода на показания датчика, а то до уличной стены тянуть почти 8 метров.
Спасибо.
У DHT22 цифровой интерфейс, поэтому длина провода на показания прибора не влияет.
Может либо работать, либо не работать. Я удлинял четерыхжильным телефонным проводом на 5 м
Добрый день!
Хочу собрать на DHT22 гигрометр и термометр для сауны. Сам датчик расположить на уровне полки (датчик DHT22 будет сменный — при выходе из строя при перегреве, индикатор — 2 параллельных 7 сегментных индикатора (один будет установлен снаружи сауны на стеклянной двери индикацией в сауну, второй с наружи сауны на стена).
Подскажите, какой минимальный набор нужно заказывать для реализации данного проекта. Связь выносного индикатора должна иметь минимальное количество жил в шлейфе и желательно, что бы выносной индикатор состоял из двух четырех 7 сегментных индикаторов расположении один под другим (на одном индикация температуры, на другом влажность – для уменьшения размеров коробки индикаторов).
С Arduino не имел дело, прошу ткнуть, что необходимо для программирования контроллера и где почитать инфу для начинающих.
1. Контроллер Uno, Nano, Pro Mini — любой по вкусу
2. DHT22
3. Индикаторы на MAX7219 в нужном количестве. Я правда один под другим не встречал, в основном 8 сегментов
http://www.ebay.com/itm/New-MAX7219-8-Digit-Red-LED-Digital-Tube-Display-Module-Board-For-Arduino-/381241863100
4. Блок питания 5-9В
5. Провода, разъемы, корпуса
Как все это будет работать при высокой температуре/влажности не пробовал
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.С этим понятно.
Спасибо.
1. Я бы сделал ESP8266, прошивку от homes-smart, DHT22 + дисплей 1602 или 1604. Вывел бы все это в интернет в народный мониторинг и приложения бы для Андройда/Айфона прикрутил бы по мониторингу и статистики температуры
3. Без проблем, индикаторы и микросхема раздельно продаются, только я бы не сказал, что это простой путь )))
4. Да хватит. Если готовый Ардуино применять, у них у всех стабилизаторы уже есть на плате
1.Статистика нужна для метеостанции и с айфоном как то не удобно парится в бане :)))
На дисплее 1602 лежа в бане на полке через стеклянную дверь ни чего не разглядишь, нужен (выносной дисплей – будет крепиться на стеклянной двери сауны — бани) яркий светодиодный дисплей типа MAX7219. Можно конечно на самом устройстве использовать как основной дисплей 1602. Вопрос, если запараллелить шины данных двух дисплеев MAX7219 будут работать оба дисплея или нужно их разносить на разные входа контроллера?
Лучше, мне кажется MАX7219 включить последовательно и выдавать одинаковые цифры на разные разряды
Вот если индикаторы непосредственно к выводам ардуино подключать, там можно и параллельно два дисплея. Но проводов много получается
А е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?
С применением соответствующей библиотеки для 74HC595 должно все работать 😉
http://ru.aliexpress.com/item/High-Quality-4-Bits-Digital-Tube-LED-Display-Module-Board-With-Clock-Display-For-Arduino-DIY/2038575854.html
Добрый день!
Подключил к Arduino IDE все виблиотеки, на которы даны ссылки в скетче.
При проверке выдается ошибка:
«…meteo_sensor_v2.ino:23:22: fatal error: ClassAVG.h: No such file or directory»
Где найти библиотеку ClassAVG.h
Закомментарьте строчку
//#include «ClassAVG.h»
В этом скетче она не нужна
После загрузки скетча в мониторе порта информация отображается, а на индикаторе «—» или гаснет. В чем причина?
Отображается «—» — ждет сигнала с сенсора
Здравствуйте,
Прощу Вашей помощи, сам только начинаю знакомится с Arduino и в программировании мягко говоря «чайник», но заинтересовал Ваш проект.
Могли бы Вы выложить скетч вот для этого «Метеосенсор с передатчиком на 433МГц»?
Спасибо.
Здравствуйте. Можете подсказать, почему может отключаться дисплей MАX7219 после того как поработает минут 5- 10? Помогает после этого ресет.
У меня всё аналогично как у вас, разве что не прошит загрузчик на Optiboot.
Было у меня такое в одном проекте из за помех
Вылечилось тем, что я в каждом пакете установки цифр стал инициализировать MAX
На Таобао работаете через посредника или на прямую?
Работаю через посредника. В последнее время, через MISTERTAO.COM
Заказываю только то чего на Али не достать
Доставку на мистереТао какую обычно используете? )
Если до 2 кг, то самую дешевую на конкретный момент:
China Post Registered Air Mail или
Почту Малазии.
Сейчас появился Rusian Express. Не пробовал еще
У вас на схеме указано питание 3,3V. Ардуина 5-вольтовая, где ошибка?
Раньше была Ардуино 5В. Сейчас тоже, но запитанная от 3.3В. Стабильно работает на 16МГц. Проверено на нескольких экземплярах.
А MAX7219 и DHT22 тоже нормально работают от 3,3V?
MAX7219: 4 — 5.5В
DHT22: 3.3 — 6В
Доброго времени суток, Алексей!
Прошло ни много ни мало три года. После успешных экспериментов тема как забылась и вот на днях решил модернизировать свою погодную станцию и довести до конечного, так сказать, продукта. Собрал всё на макетке, подключил Arduino Uno R3, питание и…
В мониторе порта всё замечательно, а вот индикатор горит всеми сегментами и реагирует только на кнопку перезагрузки.
Если не затруднит, проверьте мой скетч из архива по ссылке. Может что где не так, где-то ошибка закралась?
https://yadi.sk/d/4cfeaX1a3Qz6Ph