А вот чего-нибудь более приземленное напишу

Что-то у меня третья запись подряд про Bluetooth, так что напишу-ка я лучше о том, как самому в домашних условиях сделать недорогой BLE-маячок из деталей с алиэкспресса :) Действуя в режиме максимальной экономии, за основу возьмем модули на чипах CC2540/CC2541 (нормальные люди тут скажут, что надо брать Nordic Semiconductor, это все-таки ARM, а не убогий 8051, на что мы, как идейные нищеброды, им возразим — CC254* на две копейки дешевле!).

Итак, в качестве основы для маячка (или что вы там делаете, включая вибратор с Bluetooth) предлагаю взять китайские модули, известные под названием HM-10 или HM-11. Их (и совместимых) есть несколько версий, выглядят они примерно так, ищутся на али поиском по слову CC2541 и стоят где-то 1,5-2$:

modules

Некоторые из этих модулей уже распаяны на переходной плате для ардуинщиков, штука это довольно бессмысленная и в целом не нужная. А вот на другой момент стоит обратить внимание — стоит ли на плате «часовой» кварц на 32768 Гц? Если нет — то сделать на этом модуле без доработок (надо установить кварц и пару конденсаторов по 15 пФ) устройство, живущее в «спящем» режиме и «просыпающееся», скажем, раз в несколько секунд для того, чтобы плюнуть в эфир пакет со своим advertisement (собственно, так работают все эти «маячки») не получится.

Для прошивки можно использовать любой микроконтролер, переписав для него digitalWrite() и прочие sleep() из вот этого ардуиновского проекта:

https://github.com/RedBearLab/CCLoader

— но очень рекомендую купить на том же алиэкспрессе «настоящий» отладчик — точнее, его клон, правильный CC-Debugger стоит 49$, и при этом ничем не отличается от своего аналога с алиэкспресса (8-10$) — благо схема и прошивка находятся в свободном доступе:

ccdebugger

Немного неочевидная штука, стоившая мне некоторого количества нервных клеток — даже если вы питаете отлаживаемое устройство от программатора, контакт voltage sense должен быть соединен с напряжением питания микроконтроллера. В противном случае, возможно, устройство прошиваться и отлаживаться будет — а может быть, и нет, в зависимости от фазы луны и всего такого прочего. Забавно, но один из «моих» девайсов работал с отключенным VSENSE только в том случае, если модуль прижимали к плате пальцем — из-за чего я задолбался искать непропаянные соединения.

Для написания своих прошивок понадобится IAR Embedded Workbench для микроконтроллеров с ядром 8051 — и здесь надо посоветовать дождаться прихода с алиэкспресса всего барахла, так как «оценочная» лицензия (free trial) привязана к железу ПК и действует лишь 30 дней. Нет, есть, конечно, довольно известный эмулятор штуки баксов — но где он лежит, я и сам не знаю.

Кроме того, нужен будет BLE Stack версии 1.5.0, вместе с ним идет кучка примеров — фактически, заготовки для прошивок, реализующих стандартные BLE-профили. Если вам нужна HID-клавиатура, пульсометр или велосипедный датчик пробега — то они готовы и ждут вас в составе SDK. Впрочем, и более нестандартные устройства делаются буквально по пошаговой инструкции «делай раз, делай два», приведенной в Software Developer’s Guide.

Из недостатков хочу отметить разве что убогость «комплектных» драйверов — местами понадобится подглядывать в примеры работы с периферией микроконтроллера (благо она довольно проста) и руководство пользователя. Ну и не стоит забывать об общей убогости 8051 ядра — делать на нем что-то сложное малоинтересно. Впрочем, большая часть блютусной периферии достаточно тупа и этого вполне хватит.

PS Реальные пацаны используют, разумеется, Nordic Semiconductor и на все эти пляски с бубном смотрят с презрением.

Bluetooth и приватность

Вот New York Times пишет:

https://www.nytimes.com/interactive/2019/06/14/opinion/bluetooth-wireless-tracking-privacy.html

Если коротко — несколько рекламных компаний занимаются отслеживанием местоположения пользователей мобильных приложений с помощью Bluetooth-маячков. Скажем, встроенный в «фирменное» приложение какого-нибудь там Walmart модуль может определить, в каком отделе какого магазина находится пользователь, прислать подходящую рекламу, ну и так далее.

В статье написано, правда, что точность определения местоположения через Bluetooth составляет единицы сантиметров — честно говоря, не уверен в этом (хотя кое-какие наработки на эту тему есть в стандарте Bluetooth 5.1, и производители уже заявляют о поддержке этих нововведений — раз, два, три). Но в любом случае, даже обычный Bluetooth 4.0 позволяет определять расстояние до, скажем, мобильного телефона пользователя с точностью до метров (просто по RSSI — то есть мощности принимаемого сигнала). В общем, прогресс в рекламном деле впечатляет.

Заодно — немного о стоимости этих «маячков». Простой «маячок» на дешевом чипе типа CC2541 (Texas Instruments) обойдется в 2$, более сложный на чем-то типа CC2640 (Texas Instruments) или nRF52811 (Nordic Semiconductor) — в 5$, работать на батарейке типа CR2032 они смогут в течение довольно длительного времени — год-два выглядит вполне реалистичной оценкой. Закидать ими территорию, к примеру, большого ТРЦ — довольно несложное и недорогое мероприятие.

PS А я, как и положено параноику, просто лишний раз буду проверять, отключен ли в моем мобильнике Bluetooth.