Практически любой фитнесс трекер имеет в своем составе MEMS акселерометер и Bluetooth BLE. Задумка заключалась в том, чтобы переписав firmware в таком устройстве превратить его во что-нибудь не менее полезное. Например, в систему охраны и контроля или датчик для Internet-of-Things.

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

В качестве основы был взят Misfit Link или Misfit Flash. Это одно и то же устройство и отличается только наличием ремешка (ремешок и клипса (Flash) против просто клипсы (Link)). Внутри него находится популярный NRF51822AA (MCU+BLE) от NordicSemiconductors и не менее известный MEMS акселерометер LIS2DH (STMicroelectronics). Батарея – CR2032.

image

Зная распиновку NRF51822 совсем нетрудно было обнаружить 2х – пиновый SWD интерфейс, стереть старое (и защищенное) и залить туда свое. Для этого надо припаять всего 2 провода и иметь программатор с поддержкой SWD (например, J-Link). В нашем новом firmware появляется возможность апдейтов через BLE (over-the-air dfu). Так что можно и дальше творить новое даже не припаивая провода.

image

Ну а дальше – вопрос только в том, какую функциональность хочется иметь. Мне захотелось иметь практически все возможное. Поэтому было разработано firmware – Android приложение со следующей функциональностью:

1. Смотреть текущую ориентацию устройства в виде графика или 3D модели.
2. Устанавливать триггер определяемый порогом, осями и логикой. При срабатывании триггера, устройство шлет сигнал смартфону. Смартфон включает звуковой сигнал и при желании делает фотографию. Причем может делать это в background и выключенном экране.
3. Режим 2 в случае редких событий может быть использован в режиме offline, когда единственным источником информации для смартфона являются advertising packets (1 сек интервал), в которые кодируется информация о углах, заряде батареи, количестве записей. Это экономит батарею устройства и делает очень быстрым просмотр текущего положения. Просто включил телефон и на 3d модели увидел на каком боку спит котик, или в каком положении выша посылка лежит на складе.
4. В NRF51822 есть 256kB флэш памяти. После того как все компоненты кода размещены (SoftDevice (RTOS, часть SDK), наша программа и бутлоадер) остается не меньше 100kB свободной батарее-независимой памяти. Туда мы и пишем срабатывания триггера если включен режим записи. В каждую запись входит время (RTC c кварцем 32768 на борту), максимальное общее ускорение и статическая ориентация устройства. Потом это можно считать, проанализировать или даже посмотреть как фильм.

Я не буду здесь вдаваться в технические детали, их можно посмотреть на моем сайте www.msh-tools.com/misfit. (на английском). Там же опубликован код firmware и bootloader (Keil), и Android Apk (ionic framework). Для тех кто просто хочет это иметь все это доступно уже в скомпилированном виде.

Видео. **Включите звук!**


Устройство получилось очень чувствительным. Оно может быть настроено чтобы срабатывать по простому постукиванию предмета к которому оно прикреплено.

Например. 1) Вам нужно что-нибудь тайно заснять. Телефон закрыт и выключен. Постучите тихонько по устройству или просто поднимите руку и снимок готов. 2) Кто-нибудь периодически залезает к вам в стол или просто ходит в неурочные часы в комнате. Сделайте снимок, и в добавок в соседней комнате (до 10м) прозвенит сигнал тревоги. 3) Я кладу его на зарядное устройство электробайка. Когда зарядка кончается, в зарядном устройстве перестает работать вентилятор. Это событие генерирует сигнал на телефоне. 4) Посмотрите как ехала ваша посылка, какие были ускорения, как ее кантовали. 5) Прикрепите к трубе (кондиционеру и.т.п) и узнаете статистику работы. 6) Про котика узнаете все, что делает, когда спит. 7) В видео есть пример того как я сплю, как ворочаюсь, тоже интересно. Можно к кровати прикрепить, посмотреть как и когда (кем) она использовалась. Ладно, остановлюсь, можно долго продолжать.
Поделиться с друзьями
-->

Комментарии (8)


  1. Rumlin
    24.06.2016 14:41

    Устройство получилось очень чувствительным

    В теории можно громкие звуки подслушивать.


  1. barbados
    24.06.2016 15:39
    +2

    Есть ли такие же хаки на Xiaomi MiBand?


    1. IceSenator
      24.06.2016 21:30

      У него к сожалению закрытый исходный код. Практически невозможно добавить что-то, что не реализовано в оф. софте. Всё что могли уже сделали.(MiBand Notify, Mi Tools).И в ближайшее время Xiaomi его открывать не собирается.


  1. x893
    24.06.2016 18:21

    Отличная статья!
    Директории
    ..\..\..\..\..\..\components\…
    ..\..\..\..\..\bsp
    или из какого SDK?


    1. obelix662000
      24.06.2016 18:26

      Nordic Semiconductor SDK. На моем сайте есть инструкция где брать SDK и куда распаковывать проект ( секция reflashing).


      1. x893
        24.06.2016 18:56

        Пока ждал модерации — разобрался. Хочу адаптировать под такой
        http://i01.i.aliimg.com/kf/UT8dUY7Xs4XXXagOFbX6.jpg


  1. madf
    24.06.2016 18:33

    NRF51888 — настолько "популярный", что в гугле выдается всего две корявые ссылки :D
    по части статьи — спасибо


    1. obelix662000
      25.06.2016 00:13

      Извините, ошибся, NRF51822, исправил. Чип действительно очень известный.