Проводной/беспроводной метеодатчик (2 х T°C, RH%, P mmHg) с дисплеем (Ревизия 4)Беспроводная бездисплейная версия датчика с питанием от Li-Ion-аккумулятора (Ревизия 1)° Добавлена работа с датчиком DS18B20 по двум проводам.Схематика
Спойлер
Основная версия метеодатчика
Беспроводная бездисплейная версия датчика с питанием от Li-Ion-аккумулятора
Что умеет:
- Поддержка датчика DS18B20 (температура)
- Поддержка датчика ВМЕ280 (температура/влажность/давление) или BMР280 (температура/давление)
- Отображение напряжения питания и информации с датчиков на ЖК-дисплее 84*48 пикселей (NOKIA 3310/5110) - для возможности использования модуля в автономном режиме
- регулировка контрастности дисплея (кнопки "+" и "-")
- Отправка информации с датчиков и напряжения питания по последовательному порту (9600,8,N,1), выход Тх - открытый сток (открытый коллектор)
- Отправка информации с датчиков и напряжения питания по радиоканалу с применением модулей JDY-40 (UART-удлиннитель).
- Посадочное место под JDY-40
- Диапазон питания 2..5 вольт (в случае применения DS18B20 - 3..5 вольт)
- Встроенный LDO-стабилизатор (для возможности питания 3.6 вольтовых ВМЕ/ВМР и JDY-40) при питании выше 3.6 вольт...
- Программная калибровка измерителя напряжения батарейки, выполняется при питании от стабилизированных 3.30 вольт.
- Подсветка дисплея
- Поддержка Li-Ion-аккумуляторов без встроенной защиты
- Режим дополнительного датчика, его показания принудительно заменяют показания встроенных в часы датчиков
Данные об измеренных величинах отправляются в текстовом виде.
(пример тестовой отправки данных, напряжение питания 3.3 В, температуры -19.75°С и - 66.25°С, давление 432 мм.рт.с., влажность 146%. Почти погода на Марсе)
Каждый параметр начинается с символа $, далее имя параметра = значение, завершается строка парой 0x0D, 0x0A (CR/LF). Десятичный разделитель у температуры - точка (.)
Если датчик сконфигурирован как второй, дополнительный датчик (закорочена перемычка SJ1), то посли символа $ модуль отправляет еще символ X(икс), а после него уже данные о температурах, давлении, влажности и батарейке.
Т.е. вот так:
$XT1=-19.75
$XB=3.6
Если установлено 2 датчика - DS18B20 и ВМЕ280 - Т1 - температура с DS-ки, Т2 - с ВМЕ.
Если установлен только ВМЕ280 - Т1 - температура с этого датчика.
Если установлен ВМР280 - данные о влажности не отправляются.
Если нет ни одного датчика - отправляется только напряжение питания модуля.
Теперь более подробно.
Спойлер
Описание применимо к основной схеме датчика. Дополнительная беспроводная версия - переработанная основная схема, из нее удалены элементы, относящиеся к индикации и к части управления, добавлен зарядник лития на ТР4056. Отличия и конфигурация - после основного описания.
Питание модуля - через клеммы Х1, Х2.
Мозгом модуля является ATMega8A, тактирование - от кварца 4 МГц. Кварц применен для стабильности таймингов UART во всем диапазоне питаний и температур. Если передача данных по проводам или через трансивер не будет использоваться, кварц и конденсаторы С2, С3 можно не ставить, а сконфигурировать контроллер на работу от внутреннего тактового генератора с частотой 4 МГц и временем ожидания после пробуждения - 4мс.
Программирование МК осуществляется через контактные площадки JP1.
К данным площадкам можно припаяться на время программирования (поскольку операция эта одноразовая). Но там можно просверлить 6 отверстий и впаять PLS/PLS-R.
При использовании передачи данных Тх по проводам (выход типа Открытый сток) или через JDY-40 необходимо установить элементы R1,R3,R4,Q1,Q2.
Выход ТХ - клемма Х3.
Если датчик будет работать автономно - R1,R3,R4,Q1,Q2 можно не устанавливать...
Встроенный LDO IC2 управляется по входу EN, в дежурном режиме он выключен.
LDO и его обвязка устанавливаются только в случае, если нужно понизить питание для трансивера и/или ВМЕ.
Подключение ВМЕ:
Применимы датчики ВМЕ280 (или ВМР280 - тогда влажность не будет отображаться) в виде китайских модулей как в 4-контактном (со встроенным LDO), так и в 6-контактном исполнении (без встроенного LDO).
В случае применения 6-контактного датчика и питания модуля от напряжения выше 3.3 вольт датчик необходимо питать через LDO IC2:
необходимо установить R5,IC2,C9,C10 и перемычку SJ3 - замкнуть в положение 1-2
При питании ВМЕ напрямую от шины питания - R5,IC2,C9,C10 не устанавливаются (см. дополнительно питание трансивера), перемычка SJ3 - в положении 2-3
В случае применения ВМЕ со встроенным LDO, что бы этот LDO не жрал батарею, земля ВМЕшки заводится на транзистор Q3 - для этого перемычку SJ4 необходимо поставить в положение 1-2.
В положении 2-3 перемычки SJ4 земля постоянно будет подключена к ВМЕ.
Подключение трансивера JDY-40.
При использовании трансивера, в дополнение к R1,R3,R4,Q1,Q2 необходимо так же установить элементы R8,R14,Q4,C11. Если использование трансивера не предполагается - данные элементы не устанавливаются.
В случае питания модуля от 4.5-5 вольт и использования трансивера JDY-40 (у него питание не выше 3.6 вольта) необходимо установить LDO IC2, R5,C9,C10 и установить перемычку SJ2 в положение 1-2.
Если предполагается питание трансивера напрямую от батареи (или трансивер не будет использоваться) - IC2, R5,C9,C10 можно не устанавливать, а перемычку SJ2 установить в положение 2-3.
При питании трансивера JDY-40 через LDO (при питании модуля напряжением выше 3.3 вольта) следует учесть, что JDE-40 "просыпается" после включения питания где то через 320 мс после подачи питания. Соответственно, в случае использования питания выше 3.6вольт (и, соответственно, использовании набортного LDO, который отключается и включается по сигналу от МК) для использования JDE-40 необходима прошивка с увеличенным временем питания трансивера перед началом отправки данных.
При включении питания происходит инициализация и поиск датчиков, далее проводится первое измерение, отправка данных, вывод их на дисплей, после чего модуль впадает в спячку на минуту.
Отсчет времени сна реализован через watchdog-таймер. Т.е. контроллер просыпается каждые 2 сек (приблизительно), смотрит - а не пора ли вставать. Если не пора - спит дальше. Если пора - опрашивает датчики, отправляет данные по uart, выводит данные на дисплей и обратно впадает в спячку...
Кнопки SW1, SW2 регулируют контрастность дисплея.
Кнопки применены вот такие.
, покупались вот тут
Если таких кнопок нет (или планируется использование модуля без дисплея) - можно воспользоваться контактными площадками на обратной стороне платы.
Светодиод LED1 светится в моменты, когда производятся измерения температуры, давления , влажности и идет отправка данных.
Дисплей.
Применен "народный" дисплей от Nokia 3310/5110. Такие дисплеи китайцы массово продают уже установленные на переходные платы.
Удобнее применять дисплей на "красной" плате - у него контактные отверстия сверху и снизу. Подключение дисплея к плате модуля осуществляется через нижний ряд отверстий. Так же на плате модуля предусмотрены два отверстия для крепления дисплея за два крайних контактных отверстия.
Подсветка не используется. Однако при проводном питании от электростанции можно установить резистор R10, перемычку SJ6 и тогда подсветка будет гореть все время.
Можно не устанавливать резистор R10 и LED1, а замкнуть перемычку SJ5 - тогда подсветка дисплея будет подмигивать при отправке данных вместо LED1.
Дополнительно - можно добавить кнопку SW3 - и включать подсветку вручную, что бы посмотреть показания.
Следует учесть, что китайцы продают разные версии дисплеев, в т.ч. и с контроллерами, у которых контрастность жестко задана и не регулируется стандартными командами. В таком случае кнопки можно не устанавливать.
Калибровка измерителя напряжения питания.
Измерение напряжения питания реализовано с использованием внутреннего ИОН контроллера. Поскольку напряжение данного ИОН может меняться от экземпляра к экземпляру МК, то реализована программная калибровка.
Для этого нужен внешний стабилизированный БП с напряжением 3.3 вольт.
Необходимо зажать обе кнопки регулировки контрастности и после этого, не отпуская кнопки, подать стабилизированное питание на модуль.
Процесс калибровки длится около 300 мс. По окончанию калибровки загорится светодиод LED1. Дисплей не инициализируется, информация на нем не появляется. Кнопки после этого можно отпустить.
Выход из режима калибровки - только отключение питания (или сигнал сброс на МК).
Конденсаторы С6, С7 и С8. Для работы передатчика на уже подсевшей батарейке - ее нужно зашунтировать хорошей емкостью. Тут можно поставить или трухольный С6 - тут уже какой есть... от 47 до 1000 мкФ и выше (насколько хватит места в корпусе датчика). Либо можно поставить один или два тантала С7 и С8. С6 ставится на обратную сторону платы и кладется на бок. Место под 2 тантала предусмотрено, если нет одного тантала достаточной емкости.
Установка JDY-40. Он ставится на обратной стороне, антенная часть выходит за пределы платы и дисплея.
Трансивер можно зафиксировать изолированной перемычкой, для этого предусмотрены соответствующие отверстия на плате.
Конфигурационные перемычки.
Перемычки подключены к выводам 23 и 24 контроллера.
Вывод 23 отвечает за поддержку Li-Ion-аккумуляторов, вывод 24 - за "дополнительность" датчика.
В новой версии на плате добавлены соответствующие перемычки SJ1 - доп. датчик, SJ7 - питание от Li-Ion.
Запаянные перемычки замыкают соответствющий вывод МК на землю.
В предыдущих версиях плат выводы 23 и 24 можно замкнуть на рядом проходящую земляную дорожку проволочными перемычками.
При запаянной перемычке SJ1 (24 вывод) в отправляемых посылках будет добавляться символ X (икс) - см. выше пример.
При запаянной перемычке SJ7 (23 вывод) датчик контролирует напряжение питания. Как только оно станет меньше 3.1 вольта, датчик отключит дисплей и упадет в вечную спячку. Пробудиться датчик из такой спячки может либо по сигналу сброс, либо по нажатию на одну из кнопок регулировки контрастности. В таком случае датчик проведет один цикл измерений и далее, в зависимости от напряжения питания, будет работать в обычном режиме или упадет в спячку снова....
Теперь по версии бездисплейного беспроводного датчика с литиевым аккумулятором.
Детали. Устанавливаются все. Тут нет вариантов конфигураций за исключением типа ВМЕ280.
Ёмкости по питанию. Входная от USB- 10 мкФ, больше туда не надо.
По питанию меги - 47 мкФ. Этого достаточно при питании от аккумулятора. Порог отключения модуля - в районе 3 вольт, при таком напряжении внутреннее сопротивление аккумулятора еще низкое и его хватает для раскачки передатчика.
Для 5вольтовой версии ВМЕ остаются только перемычки SJ3 и SJ4.
При применении 5-вольтовой BME280 (у которой LDO есть на борту) перемычка SJ3 ставится в положение 2-3, SJ4 - в положение 1-2.
При применении 3-вольтовой ВМЕ280 - перемычка SJ3 ставится в положение 1-2, а SJ4 - в положение 2-3.
Так же добавлен выключатель питания, отдельно еще контакты ХТ1-ХТ2 для внешнего выключателя. По умолчанию эти контакты замкнуты перемычкой - тонкой дорожкой. В случае использования выключателя эту дорожку необходимо разрезать. Находится эта дорожка на верхней стороне платы между отверстиями ХТ1 и ХТ2.
Калибровка. Поскольку дисплей не предусмотрен и кнопок по регулировке контрастности тоже нет - добавлена перемычка SJ8.
Для калибровки необходимо замкнуть все три ее контакта, подать питание 3.3 вольта, дождаться загорания светодиода LED1, отключить питание и снять перемычку со всех контактов SJ8.
Зарядка аккумулятора. Осуществляется через гнездо U1 посредством контроллера ТР4056. Индикация процесса зарядки выполняется двухцветным светодиодом LED2 с общим анодом.
Модуль зарядки подключен к аккумулятору напрямую, минуя выключатель. Т.е. заряжать можно аккумулятор даже при выключенном датчике.
Так же индикаторные выходы ТР4056 подключены через RC-цепочки вместо кнопок регулировки контрастности.
Это позволяет модулю проснуться из глубокого сна по снижению питания при подключении зарядки.
Из конфигурационных осталась только перемычка SJ1 - secondary.Вид печаток:
Спойлер
Основной вариант модуля:
Вариант для беспроводного бездисплейного модуля с питанием от лития.
Все детали, кроме выключателя питания и ЮСБ-разъема разведены на верхней стороне. Аккумулятор подключается с нижней стороны, внешний выключатель (при необходимости) - тоже. Все выводные детали сгруппированы по левой и нижней сторонам таким образом, что бы не упираться в аккумулятор, который можно вообще приклеить на двустороннем скотче с обратной стороны.
Фьюзы.
Спойлер
Замены элементов:
Транзисторы Q2,Q3,Q4 - в принципе, подойдут любые N-канальные мосфеты в корпусе SOT23. BSS123, BSS138, IRML2502 и т.д.. Тысячи их.... Q1 - тоже почти любой PNP в SOT23
LDO IC2 - Применен LDO LP2985-3.3. Можно применить аналогичный по расположению выводов и с напряжением стабилизации 3.0-3.3 вольта. Например, NCP551SN33 (для него, кстати, С9 не нужен).
Для проверки работоспособности радиоканала можно второй JDY-40 подключить через преобразователь UART-USB к ПК.
И смотреть отправляемые данные в любом терминале. Скорость 9600,8,n,1
Спойлер
----------
Файлы.С учетом того, что модуль задумывался универсальный, варианты аппаратной конфигурации модуля с указанием необходимых перемычек и устанавливаемых компонентов сведены в табличку.
При использовании литий-ионного аккумулятора конфигурация как при питании от 4.5-5 вольт.
Плюс конфигурационная перемычка SJ7 (заземлить 23 вывод контроллера).
В архиве проект Игл, схемы в pdf, герберы, прошивки, фьюзы. Герберы как для ЛУТа, так и для заказа на производстве.
Отдельно еще платы в pdf для ЛУТа (уже отзеркаленные, позитив)
Прошивок 4:
Debug\Touch_Clock_v2_sensor.hex - тестовая прошивка, меряет показания каждые 6 секунд, при нажании кнопок включает LED1 (для проверки работы кнопок)
Release\Touch_Clock_v2_sensor.hex - выполняет измерение показаний один раз в минуту, основная рабочая прошивка
Release_longWakeUp\Touch_Clock_v2_sensor.hex - основная рабочая прошивка с увеличенным временем пробуждения модема - для случаев, когда есть JDY-40 и питание выше 3.6в.
Release_NoTX\Touch_Clock_v2_sensor.hex - прошивка без поддержки передачи данных, для автономного датчика
Все прошивки совместимы со всеми версиями датчика.----------
Теперь про первую, вторую и третью ревизии и изменения в них.
Первая ревизия.Для работы с JDY-40 при питании от 4.5-5 вольт с использованием LDO:
Запаять R1,R3,R4,Q1,Q2. Снять перемычку SJ1.
Вход CS модема JDY-40 оторвать от схемы (R8,R9,Q3,SJ4[1]) и завесить на GND модема (просто "соплю" сделать на самом модеме). Те, кто делал ЛУТом - там можно снять перемычку между слоями с дорожки, ведущей к CS.
Припаять резистор 10кОм на контакты модема - между выводами RXD и VCC.
Для работы с модемом JDY-40 и питании от трех вольт - изменений не нужно.
Вторая ревизия.Для работы с модемом JDY-40 (независимо от вариантов питания) - устанавливаем R1,R3,R4,Q1,Q2, снимаем диод D1 и бросаем перемычку между выходом TX нашей схемы (сток Q2) и точкой соединения D1-R14.
Третья ревизия.Для конфигурации модуля как дополнительного и для настройки использования Li-Ion-аккумулятора устанавливаются проволочные перемычки между выводами 23, 24 и земляной шиной
Спойлер
Касательно двухпроводного подключения DS18B20: я добавил подтяжку 1-Wire-шины к питанию на период измерения.
Но оказались нюансы. У меня есть несколько датчиков DS18B20. Парочка куплены в местной конторе, торгующей импортными деталями. И десяток куплен в Китае.
И те, и другие датчики работают по трем проводам.
А по двум - только купленные у нашего реселлера. При этом, как оказалось, вывод питания DS-ки не обязательно даже цеплять на землю, как говорится в даташите. Китайские по двум проводам не завелись. Вот как то так.
Еще на просторах сети я встречал вариант псевдо-фантомного питания. К выводам земли и питания DS-ки подключается конденсатор в пару мкФ. Шина данных подключается к входу/вызходу данных DS-ки и, дополнительно, через диод (анодом к шине) подключается к выводу питания.
В результате к датчик идут 2 провода, а питание обеспечивается через диод и буферную емкость.