Сводный список записей блога

--->>>> Сводный список записей блога <<<<---

02 ноября 2022

Проводной/беспроводной метеодатчик (2 х T°C, RH%, P mmHg) с дисплеем (или беспроводная версия без дисплея)

Это проект 2019 года, он уже давно опубликован на РадиоКоте.
Но только сейчас дошли руки перетянуть его к себе в блог.


Что умеет метеодатчик:

  • Поддержка датчика DS18B20 (температура)
  • Поддержка датчика ВМЕ280 (температура/влажность/давление) или BMР280 (температура/давление)
  • Отображение напряжения питания и информации с датчиков на ЖК-дисплее 84*48 пикселей (NOKIA 3310/5110) - для возможности использования модуля в автономном режиме
  • регулировка контрастности дисплея (кнопки "+" и "-")
  • Отправка информации с датчиков и напряжения питания по последовательному порту (9600,8,N,1), выход Тх - открытый сток (открытый коллектор)
  • Отправка информации с датчиков и напряжения питания по радиоканалу с применением модулей JDY-40 (UART-удлиннитель).
  • Посадочное место под JDY-40
  • Диапазон питания 2.5..5 вольт (в случае применения DS18B20 - 3..5 вольт)
  • Встроенный LDO-стабилизатор (для возможности питания 3.6 вольтовых ВМЕ/ВМР и JDY-40) при питании выше 3.6 вольт...
  • Программная калибровка измерителя напряжения батарейки, выполняется при питании от стабилизированных 3.30 вольт.
  • Подсветка дисплея
  • Поддержка Li-Ion-аккумуляторов без встроенной защиты
  • Режим дополнительного датчика, его показания принудительно заменяют показания встроенных в часы датчиков - это для часов TouchClock-2

Отладочный вариант датчика

Схема датчика с дисплеем


Схема беспроводной версии датчика без дисплея с питанием от Li-Ion-аккумулятора


Схемы покрупнее: Датчик с дисплеем, Беспроводной датчик без дисплея

Данные об измеренных величинах отправляются в текстовом виде.

(пример тестовой отправки данных, напряжение питания 3.3 В, температуры -19.75°С и - 66.25°С, давление 432 мм.рт.с., влажность 146%. Почти погода на Марсе)

Каждый параметр начинается с символа $, далее имя параметра = значение, завершается строка парой 0x0D, 0x0A (CR/LF). Десятичный разделитель у температуры - точка (.)

Если датчик сконфигурирован как второй, дополнительный датчик (закорочена перемычка SJ1 "SEC"), то посли символа $ модуль отправляет еще символ 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.

Трансивер ставится на обратной стороне, антенная часть выходит за пределы платы и дисплея.

Трансивер можно зафиксировать изолированной перемычкой, для этого предусмотрены соответствующие отверстия на плате.

К сожалению, трансивер оказался очень капризной штучкой. У меня иногда он отказывался работать просто лёжа на столе из ДСП. а если поднять его на 1 см от стола - начинал работать.

Конфигурационные перемычки.

Перемычки подключены к выводам 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 с общим анодом.
Ну либо туда поставить два СМД-диода в корпусе 0805

Модуль зарядки подключен к аккумулятору напрямую, минуя выключатель. Т.е. заряжать можно аккумулятор даже при выключенном датчике.

Индикаторные выходы ТР4056 подключены через RC-цепочки вместо кнопок регулировки контрастности.
Это позволяет модулю проснуться из глубокого сна по снижению питания при подключении зарядки.

Из конфигурационных осталась только перемычка SJ1 - secondary.

Печатные платы - внешний вид

Версия датчика с дисплеем



Версия беспроводного датчика без дисплея с литиевым аккумулятором
Плата спроектирована так, что бы практически все детали были на верхней стороне. При этом выводные детали не попадали в область для аккумулятора. Только переходные отверстия. Это позволяет приклеить аккумулятор на двусторонний скотч непосредственно к плате.
Из деталей - на нижней стороне только выключатель питания и USB-разъем для зарядки.



Фьюзы.

Hi = 0xD1
Lo = 0xEF



Замены элементов

Транзисторы 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


Проект Eagle, схемы в pdf, герберы для ЛУТа и для заказа на производстве - в архиве
ExternalSensor.zip

Прошивки. 

Всего прошивок 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 - прошивка без поддержки передачи данных, для автономного датчика

TOUCH_CLOCK_2_SENSOR.ZIP


Про старые ревизии плат.

Первая ревизия.

Для работы с 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 и земляной шиной

Ссылки на РадиоКОТ

Актуальное описание четвертой ревизии

Третья ревизия датчика 

Вторая ревизия датчика

Первая ревизия датчика

Прошивка

Статья


1 комментарий:

  1. С удовольствием сделал все возможные варианты этого устройства, аж три изделия. Одно устройство независимая от Часы 2 миниметеостанция.

    ОтветитьУдалить

======= !!! ВНИМАНИЕ !!! ======================================================================
Гугл умный и боится спама. Поэтому иногда ваши комментарии Гугл отправляет мне на премодерацию. Отправлять или нет - решаю не я, а алгоритмы Гугла. Если ваш комментарий не появился сразу, значит я получу уведомление и опубликую ваш комментарий через некоторое время. Я стараюсь это делать достаточно оперативно.