Встала задача собрать устройство, которое бы выполняло функции комнатной метеостанции и будильника. Основные функции, которое может выполнять устройство:
- Измерение температуры в помещении с помощью датчика BMP180 c дискретностью 0.1 градус – только положительные значения;
- Измерение температуры на улице помощью датчика DS18B20 c дискретностью 0.1 градус в диапазоне от -55 до 125 градусов;
- Отображение максимальной и минимальной температура в течение суток;
- Измерение относительной влажности;
- Измерение давления в мм ртутного столба (с предсказанием погоды по изменению давления);
- Часы (простые и с большими цифрамиJ);
- Автоматическая корректировка времени до +/- 20 сек в сутки;
- Автоматический переход на летнее и зимнее время ;
- Два будильника :
- Возможностью выставить будильник на определенный день/дни недели;
- Возможность при срабатывании включать звуковой сигнал либо сигнализировать подсветкой;
- Вычисление дня недели по дате (с учетом високосного года);
- Лунный календарь;
- Обратный таймер от 1й до 99 минут;
- Ночник;
- Связь с ПК по интерфейсу RS-485 для дальнейшей интеграции в систему “Умный дом”;
- Напоминалка событий на 3 события с выводом текстового сообщения длиной до 40 символов (настраивается только с ПК);
- Автоматическое управление подсветкой экрана с возможностью:
- Включать или отключать подсветку по расписанию;
- Включать или отключать подсветку в зависимости от освещенности.
Устройство построено на микроконтроллере Atmega328р U1 в корпусе TQFP-32 т.к. в устройстве задействованы вывода ADC6 и ADC7 которые отсутствуют в DIP корпусе.
В качестве обвеса контроллера идут конденсаторы С2-С4, фильтры L1 и L2 (если вы уверенны в вашем источнике питания) можно исключить. Резистор R4 подтягивает RESET к +5В. Кварцевый резонатор ХТ1 на 16МГц. В качестве датчика влажности Р3 применен Ардуиновский модуль датчика влажности и температуры DHT11, из-за чего в схеме не используется подтягивающий резистор, т.к. он уже установлен в модуле. В качестве датчика давления Р1 применен модуль BMP180 со встроенным преобразователем напряжения 5<->3.3 вольта, поэтому данный модуль был запитан напряжением в 5В. В модуле уже установлены подтягивающие резисторы номиналом 4.7кОм на шине I2C к +3.3В.
Часы RTC, реализованные на микросхемы реального времени DS1307, подключены к шине I2C без подтягивающих резисторов. Если вместо микросхемы DS1307 применяется готовый модуль, на подобии Tiny RTC I2C, я бы порекомендовал, перед подключением модуля, выпаять из модуля подтягивающие резисторы. Иначе возможен выход из строя микросхемы BMP180. Батарейка на 3 вольта, для поддержания хода часов в момент отсутствия напряжения питания. Часовой резонатор ХТ2 на 32768 Гц, согласно мануалу, необходимо выбрать емкостью 12,5pF, от его качества зависит точность хода часов. В случае, если часы идут и погрешностью более 5 сек в сутки, можно на кварц ХТ2 навесить дополнительные конденсаторы емкостью 5-22pF.
Фоторезистор подключен к разъёму P2.
Выносной датчик температуры DS18B20 подключается к разъёму Р3, где первая клемма это +5В, клемма 2 – GDN, а к 3й клемме подключена шина данных 1-wire датчика. Резистор R13 номиналом 0 Ом выполняет роль предохранителя- можно заменить перемычкой.
Для вывод информации можно применить дисплей WH2004 (я использую WH2004L - люблю все большое или аналог – 4х строковый по 20 символов. Наличие кириллицы обязательно, ибо вместо русских надписей вы увидите китайские иероглифы. Яркость подсветки LCD дисплея подбирается резистором R17 согласно мануалу на Ваш дисплей.
Ночник реализован на резисторах R11, R12, R15, транзисторе Q2 , и светодиодах D1-D2.
Так как ночник может включаться в зависимости от освещенности либо по расписанию, то его можно заменить узлом управления нагрузкой.
Связь с ПК построена на микросхеме ST485 интерфейса RS 485
Этот модуль свободно может быть заменен на любой другой интерфейс, например RS232 (COM- порт) на микросхеме МАХ232
При использовании данного варианта порт РС1 (вывод 24) на микроконтроллере остается свободным, тк. он отвечает за управление приемо/передатчиком микросхемы ST485.
Управление «девайсом» происходит с помощью 4х кнопок S1-S4, где S1 подключена на прерывание INT0 (порт PD2) контроллера, а кнопки S2-S4 через резистивный делитель R23,R27,R30,R31 на вход АЦП ADC7. По назначению кнопок – немного ниже.
Питание осуществляется от стабилизированного источника питания +5В, мощность которого зависит от используемого LCD дисплея и ночника.
Диод D4 в цепи питания выполняет роль защиты от переплюсовки. Если источник питания выдает ровно 5-5.2 В то лучше ставить диод Шоттки . Если, как у меня, «качественный» китаец выдает 5.6В то я применил обычный диод с падением напряжения 0.7 Вольта.
Возможно упрощения устройства:
Если не требуется общение с ПК, можно не устанавливать элементы DD1, R20-R22, R24-R26, R28,R29, C12, P8. L1 и L2 можно заменить перемычками. Исключить автоматическую подсветку не устанавливая фоторезистор Р2, резисторы R2 и R7. Если не нужен ночник, то исключаются из схемы резисторы R11, R12, R15, диоды D1, D2, и транзистор Q2.
Сборка:
Устройство собрано на односторонней печатной плате из фольгированного стеклотекстолита
Печатная плата разрабатывалась под LCD дисплей WH2004L (146х63 мм). На плате также предусмотрены крепёжные отверстия и под дисплей габаритами 96х60 мм, например, как на рисунке
Плата изготовлена с помощью ЛУТ технологии
Запаиваем все элементы на плату.
Не устанавливая LCD дисплей, подключаем фоторезистор, и подаем питание на схему. Резистором R2, при ярком освещении, выставляем напряжение на ножке 1 разъёма P2 равным ~ 2.5 Вольта. Далее производим программирование контроллера через разъём Р6.
Установка FUSE-битов в программе CodeVisionAVR:
- Ставим тактирование от высокочастотного кварцевого резонатора, Start-up time: 16K CK + 4.1 ms [CKSEL3...0 = 1111 SUT1...0 =10];
- отключаем внутренний делитель на 8 [CKDIV8=1] (в 328 меге он включен по умолчанию);
- CKOUT = 1 — Output Clock on CKOUT запрещаем;
Можно запретить стирание EEPROM при программировании кристалла (полезно при обновлении микропрограммы контроллера- чтобы после обновления заново не выставлять настройки) EESAVE = 0.
После программирования- отключаем питание, подключаем дисплей, включаем питание.
Работа прибора.
Прибор имеет основное «окно»:
На котором отображается вся информация с датчиков: температура, барометрическое давление, влажность. На 3й строке экрана выводятся лунный календарь и прогноз погоды. Информационные надписи меняются циклически. Прогноз погоды выводится только через час после включения прибора. Два последних символа в строке отображают состояние будильников: прочерк- будильник отключен , колокольчик – будильник включен. На 4я строке отображаются время, дата и день недели.
Дополнительное «окно»:
Окно на котором отображаются часы большими цифрами. На 4й строке циклически выводятся информация с датчиков и дата. Переключение между окнами происходит по нажатию кнопки S1 «Смена экрана»
«Окно» состояния будильников: вызывается по нажатию кнопки S2 «будильник». И отображается в течении 20 секунд. Если в этот момент нажать на кнопку S1 произойдет переход в меню настроек.
«Oкно» температуры:
Данное окно отображается по нажатию кнопки S4 «температура», и отображает максимальную и минимальную температуры зарегистрированные в течении суток на улице и в доме. Окно отображается в течении 30 секунд. Можно в любое время вернутся к главному окну по нажатию кнопки S1.
Обратный таймер:
Вызывается нажатием кнопки S3 «таймер»
Таймер производит обратный отчет времени. Диапазон устанавливаемого времени от 1й до 99 минут. По окончанию счета - таймер подает звуковой сигнал в течении 1 минуты, с отсчетом времени сколько минут назад произошло событие. Если в течении 10 минут не была нажата ни одна кнопка происходит возврат в главное окно. Звуковой сигнал можно прервать по нажатию любой из кнопок.
В данном режиме управление происходит с помощью кнопок:
- S2- запуск/ пауза, и при удержании кнопки более 3х секунд происходит сброс к установленному времени
- S3 – плюс 1 минута
- S4 – минус 1 минута
- S1 - возврат в главное окно
Меню:
Для того чтобы зайти в меню настроек необходимо одновременно нажать клавиши будильник + смена экрана (S2+S1) или в окне состояния будильников нажать на кнопку S1.
Навигация по меню происходит с помощью кнопок
- S3 – вверх/плюс
- S4 – вниз / минус
- S2 – выбор / сдвинуть курсор в право
- S1 - возврат
В меню есть интересный пункт: калибровка датчиков, где можно выставить чувствительность фото датчика от 0 до 255. Чем выше устанавливаемое значение, тем чувствительней к свету датчик. Там же калибруем температуру датчиков так чтобы датчик DS18B20 и BMP180 отображали одинаковую температуру находясь рядом друг с другом. За более точный датчик лучше принимать DS18B20
Тестовую программу для конфигурирования часов можно найти в архиве.
После подключения устройства к ПК, запускаем файл «Тест.exe» из архива.
- Выбираем нужный порт. Все остальные параметры на вкладке оставляем по умолчанию. И жмем кнопку «применить».
- Переходим на вкладку «часы», и нажимаем кнопку обновить. Пру правильных настройках и монтаже, устройство вернет дату, время, давление, температуру и влажность. Контролировать состояние связи можно по журналу связи.
На вкладке настройки можно сконфигурировать устройство.
На следующей вкладке можно «залить» сообщение длинной 40 символов (2 строки по 20), и дату/ время когда данное событие будет отображено. Событие отображается только 10 минут в начале установленного часа, и сопровождается звуковым сигналом.
Результат:
Программа "тест.ехе" и прошивка будет обновляться по мере нахождения ошибок и , возможного, внесения дополнительного функционала.
P.S. Устройство можно собрать и на Arduino Pro Mini 328.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATmega328P | 1 | Поиск в магазине Отрон | ||
U2 | Часы реального времени (RTC) | DS1307 | 1 | Поиск в магазине Отрон | ||
DD1 | ИС RS-422/RS-485 интерфейсов | ST485 | 1 | Поиск в магазине Отрон | ||
R3 | Резистор | 100 кОм | 1 | Поиск в магазине Отрон | ||
R4, R5, R8, R23, R31 | Резистор | 10 кОм | 5 | Поиск в магазине Отрон | ||
R2 R10 R16 | Подстроечный резистор | 10K | 3 | Поиск в магазине Отрон | ||
R1, R14, R27 R28 R30 | Резистор | 4.7 кОм | 3 | Поиск в магазине Отрон | ||
R22, R29 | Резистор | 1.5 кОм | 2 | Поиск в магазине Отрон | ||
R7, R11, R12 R15 R19-R21 | Резистор | 1 кОм | 3 | Поиск в магазине Отрон | ||
R9 | Резистор | 200 | 1 | Поиск в магазине Отрон | ||
R25 | Резистор | 110 | 1 | Поиск в магазине Отрон | ||
R17 | Резистор | 100 | 1 | Поиск в магазине Отрон | ||
R24, R26 | Резистор | 27 | 2 | Поиск в магазине Отрон | ||
R13 | Резистор | 0 | 1 | Поиск в магазине Отрон | ||
P2 | Резистор | Фоторезистор GL5537 | 1 | Поиск в магазине Отрон | ||
C11 | Конденсатор | 16x470uF | 1 | Поиск в магазине Отрон | ||
C6 | Конденсатор | 16x10uF | 1 | Поиск в магазине Отрон | ||
C2, C5 | Конденсатор | 4.7 мкФ | 2 | Поиск в магазине Отрон | ||
C3, C4, C12, C14 | Конденсатор | 0.1 мкФ | 4 | Поиск в магазине Отрон | ||
C9, C10 | Конденсатор | 22 пФ | 2 | Поиск в магазине Отрон | ||
D1, D2, D5 | Светодиод | 3 | Поиск в магазине Отрон | |||
Q1, Q2 | Транзистор | N-P-N | 2 | любой маломощный | Поиск в магазине Отрон | |
L1, L2 | Катушка индуктивности | Ферритовый фильтр BLM21BD222SN1L | 2 | Поиск в магазине Отрон | ||
P5 | LCD-дисплей | WH2004L | 1 | или аналог с кирилицей | Поиск в магазине Отрон | |
D4 | Выпрямительный диод | 1N4007 | 1 | Поиск в магазине Отрон | ||
P4 | Датчик температуры | DS18B20 | 1 | Поиск в магазине Отрон | ||
P1 | Модуль BMP180 | 1 | Поиск в магазине Отрон | |||
P3 | Модуль DHT11 | 1 | Поиск в магазине Отрон | |||
ХТ1 | Кварцевий резонатор | 16 мГц | 1 | Поиск в магазине Отрон | ||
XT2 | Кварцевий резонатор | 32768 Гц | 1 | емкость 12.5pF | Поиск в магазине Отрон | |
Скачать список элементов (PDF)
Прикрепленные файлы:
- прошивка.zip (40 Кб)
- схема+плата.zip (294 Кб)
- тест.zip (63 Кб)
- час6.pdf (3697 Кб)
- Cloc_~(26).zip (6264 Кб)
Комментарии (40) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
Прошивка на латинице
[Автор]
[Автор]
[Автор]
Присоединяюсь к просьбе от Ivan. С ПК связь совсем не нужна, а вот хотя-бы 2-х уровневая подсветка нужна. Ночью нужна большая, а днем слабая. Нет необходимости и в бегущей строке с пожеланиями. Я использую индикатор Китайский с черными буквами на синем фоне. Днем при отключенной подсветке совсем ничего не видно, надо чтобы небольшой фон присутствовал.
[Автор]
[Автор]
[Автор]
[Автор]
вот расчет
И какие значения прибор должен писать? Пока я увидел 2 варианта: стабильная погода и стабильная хорошая погода.
По корректировке температур значения моего датчика DHT11 отличается от показаний DS18B20 на 3 град. Регулировать возможно только до 1,0. Можно увеличить это значение корректировки до 5,0 в обе стороны?
[Автор]
[Автор]
[Автор]
Вопрос по лунному календарю: (+/-2 дня) Эта "поправка" останется или будет доработка? И по поводу "прокрутки, " также происходит сброс при пропадании питания,или это так задумано?
https://aliexpress.ru/item/632542662.html