![]() |
![]() |
|||||||||||||||
Метео монитор с беспроводными датчиками
Автор: MOHCTEP
Монитор может отслеживать до 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 минут, будет мигать аварийным светодиодом и перечеркнутым значком радиосвязи. Если же питание датчика станет слишком низким, замигает и значок батарейки. Датчики на мониторе разделяются по признакам: наружный или внутренний и основной (первичный) или дополнительный (вторичный).
История метеоданных доступна за одну полную неделю. Каждая точка на графиках - усредненные данные за 1 час. Отображаются данные тех датчиков, которые были видны на метео экране, перед нажатием кнопки вывода графиков.
Экран времени, кроме панели часов, имеет месячную календарную сетку. Тап по ее левой / правой части листает месяцы на предыдущий / следующий. Внизу расположены: кнопка возврата в метео экран, символическая фаза Луны с датой лунного месяца и кнопка вызова меню будильников. Если есть хоть один включенный будильник, то иконка на его кнопке подсвечена, а в блоке часов появится значок будильника. Когда будильник сработает, этот значок сменится на изображение колокольчика, запустится плеер и будет мигать светодиод HL1. Будильник может быть одноразовым, ежедневным и запускаться в определенные дни недели. Тап по кнопке "Звук" вызовет плеер, в котором можно выбрать (или не выбрать :) ) любимую мелодию звонка, отрегулировать ее громкость и зациклить воспроизведение до тех пор, пока не будет нажата кнопка отключения сработавшего будильника. Иконка кнопки "Звук" станет зеленой, если включена мелодия звонка или белой, если звук выключен.
По кнопке настроек в метео экране, станет доступным меню установок из 3 пунктов. 1 ОБЩИЕ НАСТРОЙКИ. Здесь табуляторами выбираются настройки подсветки дисплея и настройки плеера. Можно активировать отключение подсветки, через заданное время бездействия тач контроллера. Выключенная подсветка включится, после прикосновения к экрану. Если включено управление яркостью, то станут доступны дополнительные настройки и на блоке часов появится значок, отображающий режим работы подсветки: день / ночь. Отрегулируйте уровень ночной яркости подсветки, коснувшись нужного места на слайдере, либо кнопками слева и справа от слайдера. Ниже, выбирается алгоритм переключения яркости, либо в заданный час, либо от уровня освещенности. В последнем варианте можно задать порог переключения яркости слайдером. Красная полоса, это текущий уровень освещенности, а ширина ползунка - гистерезис. В настройках плеера запоминаются папки и количество мелодий для будильников и боя часов. 2 ЧАСЫ, КАЛЕНДАРЬ. Сверху здесь, установки часов реального времени: дата - месяц - год, а ниже часы : минуты и кнопка запуска хода по нулевой секунде эталонных часов. 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 спринте и герберы с фотовидом плат, для контроля заказа. Ну и на десерт самое приятное, это сердечное спасибо всем, кто помог мудрыми советами и моральной поддержкой в осуществлении этого проекта!
Файлы: Все вопросы в Форум.
Эти статьи вам тоже могут пригодиться: |
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |