Продвинутая система обнаружения падений: Arduino + Windows IoT + Azure Cloud
Компоненты и материалы
- Arduino UNO — 1 шт.
- Bluetooth-модуль HC-06 — 1 шт.
- Акселерометр ADXL345 (Adafruit) — 1 шт.
- Провода-перемычки (male-male, male-female) — 1 компл.
- Мини-макетная плата — 1 шт.
- Смартфон Lumia 1520 (или др. Windows 10 Mobile) — 1 шт.
- Bluetooth-адаптер ORICO (для Raspberry Pi / IoT Core) — 1 шт.
Программное обеспечение и облако
- Microsoft Windows 10 IoT Core
- Microsoft Azure (Storage Table)
- Microsoft Visual Studio 2015 (с Update 1)
- Arduino IDE
Введение
Падения пожилых людей — критическая проблема. Существует три подхода: носимые устройства (акселерометры/гироскопы), датчики окружения (давление, акустика) и компьютерное зрение. Проект реализует носимый подход: Arduino + ADXL345 передаёт сырые данные по Bluetooth на Windows 10-устройство, где выполняется детекция падения и распознавание позы. Результаты отправляются в Azure Table Storage для мониторинга и истории.
Алгоритм обнаружения падения
Основан на работе Bharadwaj Sreenivasan (Fall-detection-in-Android). Два модуля:
- Распознавание позы: классификация — сидит, стоит, идёт. Используется ось Y (ориентация) и скорость изменения L2-нормы вектора ускорения относительно g (9.8 м/с²).
- Детекция падения: поиск характерного паттерна в L2-норме: резкий пик (>2g разница между минимумом и максимумом) с последующим затуханием.
Итоговое решение объединяет оба модуля: если детектировано падение, но поза всё ещё «ходьба» — ложное срабатывание отбрасывается.
Этапы сборки и настройки
1. Подключение ADXL345 к Arduino (I²C)
- SDA → A4, SCL → A5
- VCC и CS → 3.3 В (CS=3.3В включает I²C режим)
2. Подключение HC-06
- VCC → 5V, GND → GND
- TX → RX (D0), RX → TX (D1) — отключать при прошивке!
3. Сопряжение Bluetooth с Windows 10
- PC/Mobile: Параметры → Устройства → Bluetooth, пароль 1234, скорость 9600.
- IoT Core (RPi2/MBM): нужен USB-Bluetooth (ORICO BTA-403), настройка через SSH (BR mode, пароль 1234).
4. Создание Azure Storage Account и Table
Портал Azure → Storage → Quick Create → имя, регион, репликация. Ключи доступа скопировать. В Azure Storage Explorer создать таблицу AccelerometerTable.
5. Развёртывание кода
- Arduino: загрузить
ADXL345_HC06.ino(без подключённых TX/RX HC-06). - UWP-приложение (GenericBluetoothSerialUWApp): открыть в VS2015, вставить ключи Azure в
MainPage.xaml.cs(методdataTransferTick), выбрать архитектуру (x86/x64/ARM), запустить (F5). - Клиент мониторинга (FallDetectionClient): тоже UWP, настраивает ключи Azure в
StorageSensor.cs, показывает состояние в реальном времени.
Код Arduino (ADXL345_HC06.ino)
#include <Wire.h>
#define ADXAddress (0xA7 >> 1)
#define REG_POWER_CTL 0x2D
#define REG_DATAX0 0x32
void setup() {
Serial.begin(9600);
Wire.begin();
delay(100);
Wire.beginTransmission(ADXAddress);
Wire.write(REG_POWER_CTL);
Wire.write(8); // Measure mode
Wire.endTransmission();
}
void loop() {
int16_t X_out, Y_out, Z_out;
Wire.beginTransmission(ADXAddress);
Wire.write(REG_DATAX0);
Wire.endTransmission();
Wire.requestFrom(ADXAddress, 6);
if (Wire.available() >= 6) {
X_out = Wire.read() | (Wire.read() << 8);
Y_out = Wire.read() | (Wire.read() << 8);
Z_out = Wire.read() | (Wire.read() << 8);
}
float Xg = X_out / 256.0;
float Yg = Y_out / 256.0;
float Zg = Z_out / 256.0;
String msg = "x=" + String(Xg,2) + " y=" + String(Yg,2) + " z=" + String(Zg,2) + ",";
Serial.print(msg);
delay(20);
}
Ресурсы
- Bluetooth Serial App: GitHub
- FallDetectionClient: GitHub
- Схемы (Fritzing): ADXL345, HC-06, полная схема
Производственный процесс
- Надежная система учета рабочего времени на Arduino с RFID и Python
- Робот для поиска людей на базе Arduino Uno: пошаговая интеграция датчиков
- Создание приложения детектора качества воздуха PM2.5 и PM10 для Windows 10 UWP
- Система мониторинга лесных пожаров в реальном времени с SMS-уведомлениями
- Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
- Клеточный автомат «Жизнь» Конвея на Arduino Nano с OLED 128x64
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом
- Система учёта рабочего времени на RFID, Arduino и Google Таблицах
- Система предупреждения о столкновении на Arduino: визуальные и звуковые сигналы
- Удалённое управление автомобилем на Arduino Uno и Bluetooth: пошаговое руководство