Мультисенсорный беспроводной микро DIY датчик
DIY, как говорит Википедия, это уже давно субкультура. В этой статье хочу рассказать о своем diy проекте небольшого беспроводного мультисенсорного датчика, и это будет моим небольшом вкладом в данную субкультуру.
История этого проекта началась с корпуса, это звучит по-дурацки, но именно так этот проект и начался. Корпус был куплен на сайте Алиэкспресс, надо отметить что качество отливки пластика у этого корпуса отличное. После недолгой переписки с продавцом на почту был выслан чертеж и данный проект начался.
Сам чертеж был очень плохо образмерен и половину измерений для границ, вырезов и технологических отверстий будущей печатной платы пришлось делать с помощью штангенциркуля. Получив все внутренние размеры корпуса стало понятно что радио чип придется «разводить» непосредственно на печатной плате, так как высота от верха печатной платы до внутренней поверхности корпуса составляла 1.8 мм, а минимальная высота готового среднестатистического радио модуля обычно составляет 2 мм (без экрана).
Для датчика был выбран SoC nRF52 в корпусе QFN48. В этом корпусе в серии nRF52 у Nordic есть три варианта: nRF52810, nRF52811(новое), nRF52832. Параметры чипов: 64 MHz Cortex-M4, 2.4 GHz transceiver, 512/256 KB Flash, 64/32 KB RAM у nRF52832 и 192 KB Flash, 24 KB RAM у nRF52810, nRF52811, чипы мультипротокольные, поддерживают Bluetooth Low Energy, Bluetooth mesh, ESB, ANT, а nRF52811 помимо перечисленного еще и Zigbee и Thread, а так же Bluetooth Direction Finding.
Сам датчик решил делать мультисенсорным, что бы его можно было использовать под разные задачи. Разводку чипа по этой причине нужно было сделать как можно компактнее, с учетом того что минимальные размеры компонентов не должны быть меньше 0603, что бы устройство можно было бы спаять вручную. После того как чип был разведен на плате занялся подбором сенсоров. Основное на что ориентировался при подборе это размеры корпуса сенсора и возможность пайки сенсора в домашних условиях с минимальным набором оборудования (паяльник и фен).
Для датчика были выбраны следующие сенсоры: SHT20, SHt21, Si7020, Si7021, HTU21D (сенсор температуры и влажности), все эти сенсоры имеют один корпус и одинаковые выводы ножек, HDC2080(сенсор температуры и влажности) так же имеет аналогичный корпус, как и ранее перечисленные, но имеет дополнительный выход прерывания, более энергоэффективный, BME280(сенсор температуры, влажности и давления), LMT01(сенсор температуры), TMP117(высокоточный сенсор температуры), высокая энергоэффективность, выход прерывания, установка верхних и нижних пределов температур, LIS2DW12(акселерометр) высокая энергоэффективность, один из лучших в своем сегменте или LIS2DH12.
Так же в первой версии датчика в списке был геркон, но в последующих ревизиях был исключен, так как герконовому датчику размером 1.6 см со стеклянной колбой не хватало места, и пару таких датчиков я расколол устанавливая готовую плату в корпус, так же из-за квадратного вида корпуса и его небольшой высоты устройство не очень подходило на роль магнитного датчика открытия и закрытия.
Помимо сенсоров на датчике размешены 2 светодиода, один из них rgb размещенный на нижней стороне датчика. Две smd кнопки, одна подключенная к reset, вторая «пользовательская» для реализации каких то сценариев работы датчика. Корпус датчика состоит из трех частей, основной корпус, внутренняя вставка с отверстием удерживающим батарейку и крепящаяся к основному корпусу четырьмя винтами, и нижней крышкой, которая защелкивается в отверстия на внутренней вставке. Так же выведены 4 аналоговый пина, 2 цифровых и так же еще два пина которые могут быть NFC антеной или цифровыми пинами, порт SWD.
Rgb светодиод и кнопки размещены на pcb плате таким образом, что к ним есть открытый доступ при снятой нижней крышке через отверстия во внутренней вставке, которые предназначены для защелкивания задней крышки.
Устройство пережило две ревизии, так же ранее на месте сенсора TMP117 был установлен сенсор освещенности MAX44009, который позже был заменен сенсором температуры, оба сенсора имеют одинаковый корпус, но разные выводы на ножках, может быть и зря что был заменен, возможно стоит вернуть.
Сейчас у меня дома работают 4 таких устройства, два из них это датчики температуры и влажности с сенсорами Si7021(один на nRF52832, второй на nRF52811), один это датчик удара реализованный на акселерометре LIS2DW12(nRF52810) и датчик контроля температуры на сенсоре LMT01(nRF52810).
Беспроводной датчик работает на батарейке cr2032, потребление во сне составляет 1.8 мкА для nRF52810, nRF52811 и 3.7 мкА для nRF52832. Потребление в режиме передачи данных 8 мА.
Описание используемого протокола, разработки софта для этого датчика под разные сценарии использования думаю выходит за рамки данной статьи.
Тест работы датчика с системой умного дома можно посмотреть в небольшом видеоролике ниже.
Проект данного датчика является открытым, все материалы по проекту вы можете получить на моем GitHub.
Спасибо за внимание, всем добра!