SiLabs Sensor Puck: два датчика — пять параметров
Этот обзор появился благодаря статьям (раз, два) от abrakada об устройстве пульсометра с Bluetooth.Плата Sensor Puck от Silicon Labs пришла мне на ум ещё при прочтении названия первой статьи. Причина проста: Sensor Puck — это готовый демонстрационный набор, который, среди прочего, имеет те же функции пульсометра и Bluetooth-приемопередатчика. Когда в конце второй публикации был упомянут датчик Si114x, который как раз установлен на Sensor Puck, уже нельзя было сдержаться и не сделать обзор платы Sensor Puck и датчиков на его борту.
Сразу оговорюсь: плата, описанная ниже — не альтернатива серьезным медицинским или околомедицинским устройствам. Это даже не полноценный отладочный набор, скорее готовый прототип пульсометра (или, например, карманной метеостанции), который полезно поковырять для уменьшения количества велосипедов в собственном проекте.
Обзор Sensor PuckИтак, миниатюрная плата Sensor Puck появилась на волне популяризации портативных устройств вроде фитнес-браслетов, умных часов, да и вообще Internet Of Things. Плата работает в паре с мобильным приложением.Пользователю, установившему приложение и включившему питание платы, доступно пять параметров: температура окружающего воздуха, °C / F относительная влажность окружающего воздуха, % освещенность, lux УФ-индекс (UV index) если к контактной площадке приложен палец, частота сердцебиения, BPM Мобильное приложение доступно для смартфонов и планшетов Apple c iOS 7 или выше, а также для Android-девайсов с версией ОС 4.3 и выше. Устройство, естественно, должно поддерживать Bluetooth 4.0. Приложение ищется по запросу «Silicon Labs Sensor Puck», файл .apk доступен и по прямой ссылке.В версии приложения для iOS доступно только главное окно приложения со значениями измеряемых показателей и пара вспомогательных функций, например, для работы с несколькими платами одновременно. В Android-версии доступен дополнительный biometric screen — экран с кардиограммой псевдокардиограммой. Точности и стабильности работы пульсометра не хватит для серьезных задач (или я неправильно палец прикладываю?), хотя для игрушек вроде Nikon-овской камеры для собак должно отлично подойти.
На плате расположены датчик температуры и относительной влажности Si7021 и оптический датчик Si1147. Оба поддерживают интерфейс I2C, средствами которого и «общаются» с микроконтроллером. Для обмена информацией со смартфоном используется модуль Bluetooth Low Energy, он взаимодействует с контроллером через интерфейс LEUART (Low Energy UART). Приемопередатчик расположен на оборотной стороне платы, там же установлен разъем для батарейки CR2032. Описанная система управляется малопотребляющим микроконтроллером EFM32G210. Для управления питанием служит повышающий DC/DC преобразователь TS3310.
Функциональность мобильного приложения сводится к поддержанию канала связи с платой / платами Sensor Puck и отображению результатов измерений.
Как говорилось выше, Sensor Puck правильнее назвать демо-платой, а не отладочным комплектом. Чтобы получить готовую-модную-портативную систему достаточно получить комплект в руки, включить питание платы и запустить приложение на телефоне или планшете. Но чтобы использовать SiLabs Sensor Puck для разработки, придется заиметь дополнительный отладчик, т.к. на платеа) отсутствует интегрированный J-link или что-то подобное, б) выведен только «сокращенный» 9-выводный отладочный интерфейс.
Сам SiLabs предлагает использовать связку [Плата Sensor Puck] <–> [Адаптер J-Link 9-pin Cortex-M для перехода на 20-выводный разъем] <–> [Любая отладочная плата для EFM32 starter kit в качестве отладчика (во все киты встроены J-Link и 20-выводный отладочный разъем)]. В качестве программного обеспечения предлагается Simplicity IDE, которая входит в состав программной платформы Simplicity Studio. Она бесплатная и имеет разные специальные плюшки для малопотребляющих EFM32, например вот эту.
Однако подойдут и другие программаторы-отладчики с поддержкой интерфейса SWD. В порядке эксперимента, наряду с первым вариантом, был опробован программатор-отладчик I-jet в паре со средой IAR. Полёт нормальный. Использование «сторонних» средств разработки облегчается тем, что все проекты для МК EFM32, включая оригинальный проект для Sensor Puck, портированы производителем на IAR / keil / Atollic / Rowley — кому что больше нравится.
Теперь, собственно, о датчиках.
Оптический датчик Оптические датчики Si11xx — это интегральные микросхемы размером 2×2 мм (!), предназначенные для выполнения одной или нескольких функций из следующего списка: детектирование приближения; детектирование движений объекта (жестов руки или пальца) по одной оси, в 2D или в 3D. детектирование уровня освещенности; детектирование уровня ультрафиолета с автоматическим расчетом УФ-индекса; компоненты, входящие в состав микросхемы Si1147 ограничены пунктирной линиейВсе датчики поддерживают интерфейс I2C для обмена данными с другими узлами системы. Посмотреть на протокол и управляющие регистры можно в разделе Programming Guide документации, на реализацию взаимодействия с хостом (микроконтроллером) — в исходниках Sensor Puck или другого демо-проекта.
Для простых задач, связанных с детектированием движения в определенной области или для измерения расстояния для статичного объекта достаточно использовать интегрированный на микросхему инфракрасный светодиод. В паре с инфракрасным фотодиодом они образуют активный инфракрасный датчик. Активные датчики, в отличие от пассивных, используют не излучение объекта, а измеряют характеристики отраженного от объекта излучения. Такая конфигурация подходит для детектирования объектов несложной формы на расстоянии до 50 см от датчика.
Для более сложных задач, например, для детектирования жестов, используются дополнительные светодиоды. На различных микросхемах Si114x доступно от 1 до 3 драйверов светодиодов. Количество и расположение дополнительных светодиодов относительно микросхемы датчика выбираются в зависимости от характеристик объекта, требуемой дальности измерений и др. Так, с использованием трех «внешних» светодиодов, можно реализовать детектирование движения, например, руки, в трех осях.
Встроенные инфракрасный фотодиод и фотодиод видимого излучения обеспечивают измерение освещенности и уровня ультрафиолета. Одновременное использование двух фотодиодов также позволяет использовать алгоритмы подстройки под условия использования датчика — для датчика, расположенного под стеклом, в том числе затемненным, для формирования результатов в соответствии с восприятием света человеческим глазом и т.д.
Отклик фотодиодов в зависимости от длины волны УФ-индекс, который вычисляется на некоторых датчиках линейки Si114x — это коэффициент, выражающий интенсивность влияния солнца на человека. Он линейно зависит от интенсивности солнечного света, достигающего земли. УФ-индекс является стандартом ВОЗ и используется для определения степени опасности солнечного излучения.Таблица УФ-индекс — уровень воздействия Уровень солнечного воздействия Значение УФ-индекса низкий 2 и менее средний (требуется защита) 3–5 высокий (требуется защита) 6–7 очень высокий (требуется повышенная защита) 8–10 экстремальный (требуется повышенная защита) 11 и более Если вернуться к задачам пульсометрии, то нужно сказать что возможностей датчика хватит и для работы на просвет, и для работы на отражение. Очевидно на Sensor Puck используется принцип отражения с использованием встроенного инфракрасного светодиода, поэтому вменяемые результаты получаются только при измерении частоты сердцебиения (BPM, beats per minute). По хорошему, с использованием инфракрасного, зеленого и желтого светодиодов можно снимать кардиограмму с приемлемым качеством.В биометрических приложениях на оптических датчиках Si114x используются и другие свойства кожи и крови. Например, насыщенность крови кислородом можно измерить благодаря разнице в поглощении красного и инфракрасного света кровью, насыщенной и ненасыщенной кислородом. Оксигенированный гемоглобин больше абсорбирует инфракрасный свет, деоксигенированный гемоглобин больше абсорбирует красный свет — для получения разницы между понадобится две пары светодиод-фотодиод.
Датчик температуры и относительной влажности Для измерения температуры и влажности в различных областях техники используются компоненты самой разной природы, история измерительных приборов — дело довольно увлекательное. Цифровые (полупроводниковые) датчики температуры / температуры и относительной влажности используются в приложениях, не предполагающих экстремальных температур и условий использования, и не требующих повышенной точности измерений. Если говорить коротко, для приложений типа умных часов и браслетов миниатюрные и недорогие ($4–5 в розницу) цифровые датчики подходят лучше термисторов, термопар и т.п.Датчик Si7021, также как оптический Si1147, вполне оправдывает название Интегральная микросхема. В составе кристалла два датчика (имеются в виду первичные преобразователи), АЦП, управляющая логика, энергонезависимая память, содержащая калибровочные значения, и I2C интерфейс.Типовая погрешность при измерении относительной влажности составляет ±2%, при измерении температуры — ±0.3 °С, максимальные значения погрешностей чуть выше: ±3% RH и ±0.4 °С.
Заводская калибровка и интерфейс I2C решают проблемы с управлением и настройкой датчика. Но главная сложность в использовании подобных компонентов — защита от внешних воздействий при эксплуатации и от высоких температур при пайке. Эта сложность связана с природой датчика: для измерения уровня влажности используется полимерная пленка между двух диэлектриков. При увеличении количества водяного пара в воздухе (а значит на диэлектрике) изменяется её диэлектрическая проницаемость (Er). Изменение Er в диапазоне от 3.0 до 4.0 пропорционально изменению относительной влажности от 0 до 100%. Чтобы влажность воздуха соответствовала влажности на чувствительной пленке корпус микросхемы фактически содержит отверстие. Эта «уязвимость» может быть частично исправлена установкой защитной пленки (Si70219 поставляется как раз с предустановленным защитным фильтром). Роль фильтра выполняет мембрана, пропускающая водяной пар, но защищающая от загрязнения и других воздействий. В документации также упоминается защита от конденсата на поверхности датчика — некий on-chip heater. Пайку микросхем Si70xx производитель рекомендует производить с использованием печи конвекционного оплавления с использованием бессмывного флюса — тут защитный фильтр помочь не сможет.
Окончательно отвлекаясь от пульсометрии и платы Sensor Puck, добавлю несколько слов о том, почему температура и влажность измеряются совместно. Во-первых, удобно, когда на плате один компонент вместо двух :) Но главное — прямая зависимость относительной влажности от температуры. Напомню, относительная влажность — это процентное содержание водяных паров в воздухе, причем 0% — отсутствие этого пара, а 100% — полное насыщение. Точка насыщения, она же точка росы и точка конденсации не является постоянной величиной, изменяясь от температуры, а также от давления и состава воздуха. Взаимозависимость температуры и влажности требует их измерения в одной точке и использования схем температурной компенсации. Нестабильность точки росы влечет типовую погрешность измерений, которая упоминалась выше.
Поскольку ощущение температуры человеком, свойства материалов, например, дерева или продуктов питания, зависят от пары температура-влажность, в приложениях связанных с климат-контролем чаще всего и требуется одновременное измерение обоих параметров.
Заключение Если вы грезите разработкой устройств для умного дома, носимых девайсов, и вообще любых штуковин на базе датчиков, имеет смысл дважды проверить какие интегральные решения существуют на современном рынке. Если к устройству не предъявляется нестандартных требований вроде работы в -70 °С, под водой, над открытым огнем, если не требуется точность измерения до десятых градуса или что-то подобное, то велика вероятность, что ваша схема уже упакована в корпус площадью 4 мм² и стоит пять баксов.Всем спасибо за внимание и удачи!