Встала задача собрать устройство, которое бы выполняло функции комнатной метеостанции и будильника. Основные функции, которое может выполнять устройство:
- Измерение температуры в помещении с помощью датчика 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-битATmega328P1
U2
Часы реального времени (RTC)DS13071
DD1
ИС RS-422/RS-485 интерфейсовST4851
R3
Резистор100 кОм1
R4, R5, R8, R23, R31
Резистор10 кОм5
R2 R10 R16
Подстроечный резистор10K3
R1, R14, R27 R28 R30
Резистор4.7 кОм3
R22, R29
Резистор1.5 кОм2
R7, R11, R12 R15 R19-R21
Резистор1 кОм3
R9
Резистор2001
R25
Резистор1101
R17
Резистор1001
R24, R26
Резистор272
R13
Резистор01
P2
РезисторФоторезистор GL55371
C11
Конденсатор16x470uF1
C6
Конденсатор16x10uF1
C2, C5
Конденсатор4.7 мкФ2
C3, C4, C12, C14
Конденсатор0.1 мкФ4
C9, C10
Конденсатор22 пФ2
D1, D2, D5
Светодиод3
Q1, Q2
ТранзисторN-P-N2
любой маломощныйL1, L2
Катушка индуктивностиФерритовый фильтр BLM21BD222SN1L2
P5
LCD-дисплейWH2004L1
или аналог с кирилицейD4
Выпрямительный диод1N40071
P4
Датчик температурыDS18B201
P1
Модуль BMP1801
P3
Модуль DHT111
ХТ1
Кварцевий резонатор16 мГц1
XT2
Кварцевий резонатор32768 Гц1
емкость 12.5pFДобавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- прошивка.zip (40 Кб)
- схема+плата.zip (294 Кб)
- тест.zip (63 Кб)
- час6.pdf (3697 Кб)
- Cloc_~(26).zip (6264 Кб)