![]() |
|
![]() |
![]() |
Теги статьи: | МетеостанцияЧасы |
Метео монитор с беспроводными датчиками
Автор: MOHCTEP
Опубликовано 23.01.2022
Создано при помощи КотоРед.
Монитор может отслеживать до 4 датчиков (2 внутренних и 2 наружных) одновременно. Благодаря ежеминутному отчету датчиков, на мониторе всегда свежие показания давления, температуры и влажности. Доступна также история усредненных почасовых показаний всех датчиков за полную неделю, в виде графиков. Кроме того, монитор, некоторым образом, "заботится" о зарегистрированных датчиках и если какой-то из датчиков молчит слишком долго (более 5 минут) или его состояние близко к анорексии, монитор об этом просигнализирует доступным ему способом.
Ну и часы, куда ж без них нынче. :) Кроме поразительной точности хода, имеется календарная месячная сетка, с возможностью перелистывания на предыдущий/следующий месяцы, куранты и 5 независимых будильников с разными режимами работы: однократный, ежедневный и по расписанию на неделю. В качестве "плюшек", на экране времени показана фаза Луны с текущим лунным днем, а на метео экране - температура точки росы для любого зарегистрированного датчика.
СХЕМА
Правит балом тут ATMega128A, с рабочей частотой 16 МГц. Когда на трансивер NRF24L01, работающий приемником, приходит информация с одного из датчиков, он генерирует прерывание. ATMega, по шине SPI, забирает принятые данные, считает, преобразует и по 16-битной параллельной шине показывает их на 3.2 дюймовом диcплее с контроллером ILI9341. SPI обслуживает также и тач контроллер дисплея. Координаты прикосновения с него тоже берутся по прерыванию. RTC DS3231S общаются с контроллером уже по I2C. Каждую секунду контроллер синхронизирует с RTC отображаемые время и дату. Часы имеют будильники и куранты, за звуковые возможности которых отвечает mp3 DF Player, общающийся с контроллером по шине UART.
Монитор питается от 5 вольт, подаваемых на разъем JP1. Ток потребления у меня "допрыгивал" до 400 китайских мА, во время звучания будильника на полной громкости. JP2 это отладочный UART, он в релизных прошивках не задействован. JP3 - стандартный боковой коннектор к программатору. Площадки P1...P4 остались от предыдущей версии схемы и платы, для возможного развития. Некоторые из светодиодов у меня "переехали" с макетки в финальную схему. HL1 будет мигать, пока "звенит" один из будильников. HL2 секундной вспышкой покажет, что с какого-то датчика пришли данные. HL3 замигает, при потере связи с датчиком или если питание датчика стало экстремально низким. Если HL1 и HL2, по сути - рюшечки, необязательные к установке, то HL3 рекомендую впаять. Хорошо помогает найти нормальное место для датчика и монитора и оперативно увидеть проблему. Если решите установить фоторезистор R5, то R1 необходимо подобрать с сопротивлением, примерно равным сопротивлению R5, при среднем освещении. VD1 VD2 - развязка по питанию. Схема в PDF и список элементов имеются в архиве.
Печатная плата
Плата спроектирована в форм-факторе дисплея, за исключением трансивера. Его антенна выступает за обрез платы. Эксперименты показали гораздо лучший прием сигналов, сравнительно с полностью спрятанным трансивером. В архиве - герберы и *.lay6 файл, для 2 вариантов платы: самодельной и заказной.
Прошивка.
Шить контроллер необходимо, установив на программаторе - 3.3 вольта. Фьюзы на картинке. Контролька, на всякий случай: E - 0xFF, H - 0xD1, L - 0x8F. Не забудьте снять флажок совместимости с М103.
Кроме этого, на SD карточке для плеера нужно создать 2 папки, поименованные в диапазоне "16"..."99". В одну из папок поместите mp3 файлы мелодий будильника, в другую - курантов. Имена файлов в каждой папке должны быть в виде числовой последовательности - от "001.mp3" до "255.mp3". Имя папки и количество файлов в ней запишите, они потребуются для настроек монитора.
Настройки и эксплуатация.
После первой прошивки потребуется калибровка тач панели. Коснитесь стилусом центра зеленых перекрестий, в предлагаемом порядке. Если калибровка неудачна, можно повторить ее, вызвав 2 способами. 1 - Перешить контроллер, со стиранием EEPRОM. 2 - Сбросить часы. Достаточно, при выключенном питании, кратковременно коротнуть батарейку СR2032 и сразу включить монитор. По завершении калибровки, монитор запустится в рабочем режиме.
Сразу, после включения, монитор ничего не знает о датчиках, однако, после первого приема данных, датчик "прописывается" в системе. Показываются его текущие данные, ведется метео история и становятся доступными корректировочные константы. Монитор следит за его состоянием и при потере связи с датчиком более 5 минут, будет мигать аварийным светодиодом и перечеркнутым значком радиосвязи. Если же питание датчика станет слишком низким, замигает и значок батарейки. Датчики на мониторе разделяются по признакам: наружный или внутренний и основной (первичный) или дополнительный (вторичный).
Метео экран сверху имеет блок даты/времени, тап, по которому, откроет экран с календарем и доступом к будильникам. Над секундами могут располагаться значки "заведенного" будильника и режима работы подсветки (дневной / ночной). Ниже - панели наружного и внутреннего датчиков, а между ними - строка атмосферного давления. Кроме значений температуры и влажности, на панели датчика сверху имеется служебная информация. Значок радиосвязи, который перекрашивается на 2-3 секунды, в момент приема данных с соответствующего датчика. Цифровой идентификатор датчика, где 1 - основной датчик, а 2 - дополнительный. Надпись "TEST", если датчик работает в режиме отладки. В этом режиме метео история не ведется. Напряжение питания, символический уровень заряда источника и символ лития, если датчик питается от оного. Тап по панели переключает видимость датчика с основного на дополнительный и обратно. Под блоками датчиков отображается температура точки росы для "тапнутого" датчика или датчика с самыми свежими данными. Справа - 2 кнопки: кнопка показа графиков метео истории и кнопка настроек.
История метеоданных доступна за одну полную неделю. Каждая точка на графиках - усредненные данные за 1 час. Отображаются данные тех датчиков, которые были видны на метео экране, перед нажатием кнопки вывода графиков.
Экран времени, кроме панели часов имеет месячную календарную сетку. Тап по ее левой / правой части листает месяцы на предыдущий / следующий. Внизу расположены: кнопка возврата в метео экран, символическая фаза Луны с датой лунного месяца и кнопка вызова меню будильников. Если есть хоть один включенный будильник, то иконка на его кнопке подсвечена, а в блоке часов появится значок будильника. Когда будильник сработает, этот значок сменится на изображение колокольчика, запустится плеер и будет мигать светодиод HL1.
Будильник может быть одноразовым, ежедневным и запускаться в определенные дни недели. Тап по кнопке "Звук" вызовет плеер, в котором можно выбрать (или не выбрать :) ) любимую мелодию звонка, отрегулировать ее громкость и зациклить воспроизведение до тех пор, пока не будет нажата кнопка отключения сработавшего будильника. Иконка кнопки "Звук" станет зеленой, если включена мелодия звонка или белой, если звук выключен.
По кнопке настроек в метео экране, станет доступным меню установок из 3 пунктов.
1 ОБЩИЕ НАСТРОЙКИ.
Здесь табуляторами выбираются настройки подсветки дисплея и настройки плеера.
Можно активировать отключение подсветки, через заданное время бездействия тач контроллера. Выключенная подсветка включится, после прикосновения к экрану. Если включено управление яркостью, то станут доступны дополнительные настройки и на блоке часов появится значок, отображающий режим работы подсветки: день / ночь. Отрегулируйте уровень ночной яркости подсветки, коснувшись нужного места на слайдере, либо кнопками слева и справа от слайдера. Ниже, выбирется алгоритм переключения яркости, либо в заданный час, либо от уровня освещенности. В последнем варианте можно задать порог переключения яркости слайдером. Красная полоса, это текущий уровень освещенности, а ширина ползунка - гистерезис.
В настройках плеера запоминаются папки и количество мелодий для будильников и боя часов.
2 ЧАСЫ, КАЛЕНДАРЬ.
Сверху здесь, установки часов реального времени: дата - месяц - год, а ниже часы : минуты и кнопка запуска хода по нулевой секунде эталонных часов.
Можно включить автоматический перевод часов на зимнее / летнее время и бой курантов в ЧЧ:00:00. Для курантов можно выбрать суточный период их работы и мелодию звучания. По кнопке "ОК" запоминаются все настройки, кроме установок RTC.
3 КОРРЕКЦИЯ ИЗМЕРЕНИЙ.
Здесь корректируются показания датчиков к более-менее естественному виду :), также можно скомпенсировать разницу атмосферного давления (в паскалях), если датчики расположены на разной высоте.
БЕСПРОВОДНОЙ ДАТЧИК
На фотографии - датчик без корпуса. Правда сейчас BME280 я посадил на небольшой шлейф, отодвинув его от платы. Практически все время датчик спит. Через заданный промежуток времени, датчик просыпается, будит периферию, меряет, что умеет, отправляет данные в воздух и снова засыпает. В нормальном режиме работы, данные отсылаются ежеминутно, в режиме отладки, через каждые 6-8 секунд. Нажав и удерживая кнопку можно увидеть на дисплее последние атмосферные измерения и состояние питания.
СХЕМА
Контроллер ATMega88A понравился низким порогом питания = 1.8 вольт, что и стало одной из причин его использования в этой схеме. По I2C контроллер общается с датчиком BME280 или BMP280 и OLED дисплеем SSD1306, диагональю 0.96 дюйма. SPI используется для управления трансивером NRF24L01, работающем передатчиком, без подтверждения. Питание NRF24L01 сделано либо через LDO стабилизатор, либо напрямую от источника питания, в зависимости от максимального напряжения этого самого источника. При нажатии и удержании тактовой кнопки SW1 на дисплей выводится актуальная информация: атмосферное давление, температура, относительная влажность, если используется BME280 и напряжение источника питания. Светодиод D1 индицирует передачу данных. В схеме есть несколько конфигурационных перемычек. Их назначение:
Благодаря различным состояниям перемычек JP2 и JP3 получаются 4 независимых датчика. JP4 мне пригодилась в бездисплейном и соответственно бескнопочном уличном датчике единожды, для калибровки вольтметра. Значит без нее можно вполне обойтись. Перемычки будут работать после сброса датчика. Если планируете питаться от 2 щелочных элементов (3 вольта), то можно обойтись и без LDO, замкнув перемычку JP7. При питании от 3 элементов или лития, наличие LDO обязательно. Емкость конденсатора C6 - чем больше, тем лучше и дольше проработает датчик с подсаженной батарейкой.
ПРОШИВКА
Шить контроллер необходимо, установив на программаторе - 3.3 вольта. Фьюзы для версии с кварцем 4 МГц, E - 0xF9, H - 0xD7, L - 0xCD. Без кварца, E - 0xF9, H - 0xD7, L - 0xE2. Оба хекса есть в архиве. Кварцевая версия чуть меньше потребляет, но и отрисовка у нее не фатально, но помедленнее.
КАЛИБРОВКА
После прошивки нужно откалибровать вольтметр датчика. Для этого, с замкнутой перемычкой JP5 - тест и нажатой кнопкой, либо замкнутой перемычкой JP4, запитайте датчик от эталонного напряжения 3.3 вольта. Когда замигает светодиод и на дисплее появится значок батарейки и надпись "100%", калибровка закончена. Отпаяйте ненужные перемычки и датчик готов к работе.
Архивы содержат файлы прошивки, схемы и ВОМ, рисунок печатной платы в 6 спринте и герберы с фотовидом плат, для контроля заказа.
Ну и на десерт самое приятное, это сердечное спасибо всем, кто помог мудрыми советами и моральной поддержкой в осуществлении этого проекта!
Файлы:
Монитор. Схема, плата, прошивка v. 3.07
Датчик. Схема, плата, прошивка.
Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться:
Часы и погодная станция на STM32F103