Мультисенсорный беспроводной микро DIY датчик

DIY, как говорит Википедия, это уже давно субкультура. В этой статье хочу рассказать о своем diy проекте небольшого беспроводного мультисенсорного датчика, и это будет моим небольшом вкладом в данную субкультуру.

История этого проекта началась с корпуса, это звучит по-дурацки, но именно так этот проект и начался. Корпус был куплен на сайте Алиэкспресс, надо отметить что качество отливки пластика у этого корпуса отличное. После недолгой переписки с продавцом на почту был выслан чертеж и данный проект начался.

lor19r2pikperogplmvjrn2m-ug.jpeg


Сам чертеж был очень плохо образмерен и половину измерений для границ, вырезов и технологических отверстий будущей печатной платы пришлось делать с помощью штангенциркуля. Получив все внутренние размеры корпуса стало понятно что радио чип придется «разводить» непосредственно на печатной плате, так как высота от верха печатной платы до внутренней поверхности корпуса составляла 1.8 мм, а минимальная высота готового среднестатистического радио модуля обычно составляет 2 мм (без экрана).

fxm17twe_qnvh4ebeaglo5q1-s4.jpeg


hfktcxpx8nmlxqhp2mntn6ptdxc.jpeg


d63pf-yieuc1jpdpru5jd1p9mfq.jpeg


Для датчика был выбран 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.

qm-caojipnlbn6ctlpe5zirgfzq.jpeg


Сам датчик решил делать мультисенсорным, что бы его можно было использовать под разные задачи. Разводку чипа по этой причине нужно было сделать как можно компактнее, с учетом того что минимальные размеры компонентов не должны быть меньше 0603, что бы устройство можно было бы спаять вручную. После того как чип был разведен на плате занялся подбором сенсоров. Основное на что ориентировался при подборе это размеры корпуса сенсора и возможность пайки сенсора в домашних условиях с минимальным набором оборудования (паяльник и фен).

ey1cbpa0coon906c4g_kw37v5ca.jpeg


Для датчика были выбраны следующие сенсоры: SHT20, SHt21, Si7020, Si7021, HTU21D (сенсор температуры и влажности), все эти сенсоры имеют один корпус и одинаковые выводы ножек, HDC2080(сенсор температуры и влажности) так же имеет аналогичный корпус, как и ранее перечисленные, но имеет дополнительный выход прерывания, более энергоэффективный, BME280(сенсор температуры, влажности и давления), LMT01(сенсор температуры), TMP117(высокоточный сенсор температуры), высокая энергоэффективность, выход прерывания, установка верхних и нижних пределов температур, LIS2DW12(акселерометр) высокая энергоэффективность, один из лучших в своем сегменте или LIS2DH12.

gg61-gmbxecyrneqprupp6sjitg.png


00xgaeh9g87b2bszkagsr8ehrze.jpeg


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

ceeztorj5xjcfk3wi7rcaavykk8.jpeg


Помимо сенсоров на датчике размешены 2 светодиода, один из них rgb размещенный на нижней стороне датчика. Две smd кнопки, одна подключенная к reset, вторая «пользовательская» для реализации каких то сценариев работы датчика. Корпус датчика состоит из трех частей, основной корпус, внутренняя вставка с отверстием удерживающим батарейку и крепящаяся к основному корпусу четырьмя винтами, и нижней крышкой, которая защелкивается в отверстия на внутренней вставке. Так же выведены 4 аналоговый пина, 2 цифровых и так же еще два пина которые могут быть NFC антеной или цифровыми пинами, порт SWD.

Rgb светодиод и кнопки размещены на pcb плате таким образом, что к ним есть открытый доступ при снятой нижней крышке через отверстия во внутренней вставке, которые предназначены для защелкивания задней крышки.

ntb3gssxedbu6i_18isvecavcfi.jpeg


Устройство пережило две ревизии, так же ранее на месте сенсора TMP117 был установлен сенсор освещенности MAX44009, который позже был заменен сенсором температуры, оба сенсора имеют одинаковый корпус, но разные выводы на ножках, может быть и зря что был заменен, возможно стоит вернуть.

eyoy8kjeiwaowffevfv97xez64i.jpeg


dsjt2pl3mutkb_b4piqaq7aem9w.jpeg


mjqrmp-voo0xexg4iy1g_e5bvek.jpeg


egz5qzktw7a4zhihmcf1-tftoey.jpeg


Сейчас у меня дома работают 4 таких устройства, два из них это датчики температуры и влажности с сенсорами Si7021(один на nRF52832, второй на nRF52811), один это датчик удара реализованный на акселерометре LIS2DW12(nRF52810) и датчик контроля температуры на сенсоре LMT01(nRF52810).

Беспроводной датчик работает на батарейке cr2032, потребление во сне составляет 1.8 мкА для nRF52810, nRF52811 и 3.7 мкА для nRF52832. Потребление в режиме передачи данных 8 мА.

u2xhmmhb9tdsat2vbd6ci9rrveq.jpeg


nbrce9fgbiw4_hmymnyjtmnwh7o.jpeg


Описание используемого протокола, разработки софта для этого датчика под разные сценарии использования думаю выходит за рамки данной статьи.

Тест работы датчика с системой умного дома можно посмотреть в небольшом видеоролике ниже.


Проект данного датчика является открытым, все материалы по проекту вы можете получить на моем GitHub.

Спасибо за внимание, всем добра!

oug5kh6sjydt9llengsiebnp40w.png

3piw1j3wd_cgmzq9sefgferaumu.png

© Habrahabr.ru