Практически любой фитнесс трекер имеет в своем составе MEMS акселерометер и Bluetooth BLE. Задумка заключалась в том, чтобы переписав firmware в таком устройстве превратить его во что-нибудь не менее полезное. Например, в систему охраны и контроля или датчик для Internet-of-Things.
Во многих системах контроля традиционные датчики типа выключателей, датчиков объема или движения вполне могут быть заменены на датчик вибраций. Кроме того, акселерометер определяет углы наклона, что тоже может быть полезным.
В качестве основы был взят Misfit Link или Misfit Flash. Это одно и то же устройство и отличается только наличием ремешка (ремешок и клипса (Flash) против просто клипсы (Link)). Внутри него находится популярный NRF51822AA (MCU+BLE) от NordicSemiconductors и не менее известный MEMS акселерометер LIS2DH (STMicroelectronics). Батарея – CR2032.
Зная распиновку NRF51822 совсем нетрудно было обнаружить 2х – пиновый SWD интерфейс, стереть старое (и защищенное) и залить туда свое. Для этого надо припаять всего 2 провода и иметь программатор с поддержкой SWD (например, J-Link). В нашем новом firmware появляется возможность апдейтов через BLE (over-the-air dfu). Так что можно и дальше творить новое даже не припаивая провода.
Ну а дальше – вопрос только в том, какую функциональность хочется иметь. Мне захотелось иметь практически все возможное. Поэтому было разработано 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) В видео есть пример того как я сплю, как ворочаюсь, тоже интересно. Можно к кровати прикрепить, посмотреть как и когда (кем) она использовалась. Ладно, остановлюсь, можно долго продолжать.
Во многих системах контроля традиционные датчики типа выключателей, датчиков объема или движения вполне могут быть заменены на датчик вибраций. Кроме того, акселерометер определяет углы наклона, что тоже может быть полезным.
В качестве основы был взят Misfit Link или Misfit Flash. Это одно и то же устройство и отличается только наличием ремешка (ремешок и клипса (Flash) против просто клипсы (Link)). Внутри него находится популярный NRF51822AA (MCU+BLE) от NordicSemiconductors и не менее известный MEMS акселерометер LIS2DH (STMicroelectronics). Батарея – CR2032.
Зная распиновку NRF51822 совсем нетрудно было обнаружить 2х – пиновый SWD интерфейс, стереть старое (и защищенное) и залить туда свое. Для этого надо припаять всего 2 провода и иметь программатор с поддержкой SWD (например, J-Link). В нашем новом firmware появляется возможность апдейтов через BLE (over-the-air dfu). Так что можно и дальше творить новое даже не припаивая провода.
Ну а дальше – вопрос только в том, какую функциональность хочется иметь. Мне захотелось иметь практически все возможное. Поэтому было разработано 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) В видео есть пример того как я сплю, как ворочаюсь, тоже интересно. Можно к кровати прикрепить, посмотреть как и когда (кем) она использовалась. Ладно, остановлюсь, можно долго продолжать.