Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система обнаружения падений на базе Arduino, Windows и Azure

Компоненты и расходные материалы

Arduino UNO
× 1
Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015
IDE Arduino

Об этом проекте

Введение :

Падения, ведущие к смертельным травмам, стали серьезной проблемой, которой нельзя пренебрегать для пожилых людей. В последние несколько лет в области обнаружения падений были предложены различные подходы, которые можно объяснить и разделить на три типа:на основе носимых устройств, на основе датчика окружающей среды и на основе зрения [1]. Прежде всего, носимые устройства обычно используют преимущества встроенных датчиков для определения движения и местоположения тела, таких как акселерометр, магнитометр и гироскоп [2, 3]. И стоимость подхода на основе носимых устройств довольно низкая, а установка и эксплуатация не сложны для пожилых людей. Во-вторых, подход, основанный на окружении, всегда использует датчики давления для обнаружения и отслеживания тела. Это решение также является экономичным и простым в развертывании [4, 5]. Однако возможность обнаружения объектов, отличных от человеческих тел, представляет собой серьезную проблему для точности обнаружения этого подхода. И последнее, но не менее важное:решение на основе технического зрения в полной мере использует развернутые камеры для наблюдения за всеми объектами в пределах досягаемости, включая человеческие тела [6, 7]. В повседневную жизнь людей меньше вторгаются, чем два вышеупомянутых подхода, при этом пространство для наблюдения ограничено и повсеместный мониторинг невозможен.

В этом проекте предлагается система наблюдения на базе Arduino, Windows 10 и Microsoft Azure для обнаружения падений в реальном времени. Исходные данные трехмерного акселерометра предоставляются Arduino с ADXL345. Устройство Windows 10 использует эту информацию для ориентации объекта с помощью эффективных алгоритмов объединения данных и обнаружения падений. Службы Microsoft Azure и приложение для мобильных устройств / ПК также предназначены для обеспечения беспрепятственной обработки, анализа, хранения и сбора данных в любое время из любого места, если у них есть доступ к Интернету. Архитектура системы показана на рис. 1 следующим образом.

Ссылки

[1] Л. Цзянь и Т. Э. Локхарт, «Разработка и оценка алгоритма обнаружения события падения до удара», «Биомедицинская инженерия», IEEE Transactions on, vol. 61, стр. 2135-2140, 2014.

[2] П. Пьерлеони, А. Белли, Л. Пальма, М. Пеллегрини, Л. Пернини и С. Валенти, «Высоконадежное носимое устройство для обнаружения падений пожилых людей», журнал «Сенсоры», IEEE, vol. 15. С. 4544-4553, 2015.

[3] Р. Фрейтас, М. Терросо, М. Маркес, Дж. Габриэль, А. Торрес Маркес и Р. Симоес, «Носимые сенсорные сети, поддерживаемые мобильными устройствами для обнаружения падений», в SENSORS, 2014 IEEE, 2014, С. 2246-2249.

[4] З. Сяодан, Х. Цзин, Г. Потамианос и М. Хасегава-Джонсон, «Обнаружение акустических падений с использованием моделей смеси Гаусса и супервекторов GMM», в Acoustics, Speech and Signal Processing, 2009. ICASSP 2009. IEEE International Конференция, 2009 г., стр. 69–72.

[5] Л. Юн, К. К. Хо и М. Попеску, «Эффективные алгоритмы разделения источников для обнаружения акустического падения с использованием Microsoft Kinect», «Биомедицинская инженерия, IEEE Transactions on, vol. 61, стр. 745-755, 2014.

[6] М. Ю., С. М. Накви, А. Рума и Дж. Чемберс, «Классификаторы метода границы одного класса для применения в видеосистеме обнаружения падений», Computer Vision, IET, vol. 6. С. 90–100, 2012.

[7] Э. Стоун и М. Скубич, «Обнаружение падений в домах пожилых людей с помощью Microsoft Kinect», «Биомедицинская и медицинская информатика», IEEE Journal of, vol. 19, стр. 290–301, 2015.

Принцип обнаружения падений с распознаванием позы

В этом проекте алгоритм обнаружения падения разработан в соответствии с разработкой Бхарадваджа Шринивасана «Fall-detection-in-Android». В алгоритме есть два модуля:распознавание позы и обнаружение падений. Во-первых, мы считываем значения x, y и z с акселерометра. Затем мы вычисляем L2-норму для x, y и z. Это используется модулем распознавания позы и обнаружения падений.

В модуле распознавания осанки позы пользователя подразделяются на три основных позы:сидение, стояние и ходьба. К значениям «y» применяется порог для определения ориентации. Используя скорость изменения нормы L2 относительно среднего ускорения свободного падения (9.8), мы классифицируем данные на ходьбу или просто переход между состояниями.

Модуль обнаружения падения ищет в сигнале определенный образец. Рис.2 представляет собой типичный образец нормы L2 во время падения.

Если разница между последовательными минимумами и максимумами больше 2g, результат определяется как падение. Окончательное решение о падении основывается на результатах модуля распознавания позы и модуля принятия решения о падении. При обнаружении падения модуль распознавания позы сообщает нам, ложная ли это тревога. Если состояние все еще идет, решение о падении может быть отклонено. В таблице 1 приводится окончательное решение.

Предварительные требования

В этом проекте для устройства Arduino связь Bluetooth обеспечивается HC-06, который представляет собой дешевый компактный модуль. Для устройства с Windows 10, если вы используете Surface Pro и Lumia 1520, вам не понадобится модуль Bluetooth. Однако, если вы используете Raspberry Pi или MBM в качестве устройств Windows 10 IoT, вам понадобится ключ Bluetooth. Обратитесь к нашему MVP Дэвида Джонса Generic Serial Bluetooth с Win 10 IoT-Core RPI2, чтобы настроить среду.

Примечание. Выполнение предварительных требований займет 2–3 часа, если у вас еще не установлены Windows 10 и Visual Studio 2015, но в большинстве случаев это происходит без присмотра.

Что вам понадобится

Детали:

1. Arduino Uno и стандартный USB-кабель A / B

2. Модуль Bluetooth HC-06

3. Модуль акселерометра ADXL345

4. Перемычки «папа-папа» и «папа-мама»

5. Мини-макет

6. Lumia 1520 или другое устройство, совместимое с Windows Phone 10

7. Bluetooth-модуль ORICO

Инструкции по проекту

Шаг 1. Подключите модуль акселерометра ADXL345 к Arduino

Время :5 минут

Детали :Arduino Uno R3, ADXL345, перемычки, мини-макет

Инструменты :Нет

ADXL345 - это небольшой, тонкий, маломощный 3-осевой МЭМС-акселерометр с высоким разрешением (13 бит) для измерения при нагрузке до + -16 g. Данные цифрового вывода форматируются как 16-битное дополнение до двоек и доступны через цифровой интерфейс SPI (3- или 4-проводный) или I2C.

ADXL345 поддерживает как SPI, так и I2C, в этом проекте мы просто поговорим о I2C. I2C - это двухпроводное последовательное соединение, поэтому нам нужно подключить линии SDA (Data) и SCL (Clock) к Arduino UNO для связи. На Arduino UNO SDA находится на аналоговом контакте 4, а SCL - на аналоговом контакте 5. Убедитесь, что оба контакта VCC и CS на датчике подключены к 3,3 В. Мы подключаем CS к 3,3 В, чтобы сообщить датчику, что мы будем использовать его как устройство I2C, а не устройство SPI.

Шаг 2. Подключите модуль Bluetooth

Время :5 минут

Детали :Модуль Bluetooth, перемычки

Инструменты :Нет

В этом проекте мы используем HC-06 в качестве модуля Bluetooth - он намного дешевле модуля BlueSMiRF Silver от SparkFun. Кроме того, HC-05 имеет «полную» прошивку, множество AT-команд и может быть как ведущим, так и ведомым модулем. С другой стороны, прошивка HC-06 может быть только ведомым устройством с очень ограниченными AT-командами. В таблице ниже показаны все команды прошивки HC-06 с ответом:

Прежде всего, подключите модуль Bluetooth к макетной плате, чтобы упростить подключение. Для питания модуля подключите перемычку от шины питания 5 В Arduino к выводу Vcc модуля. И подключите перемычку «папа-папа» от контакта GND модуля к любому из контактов GND на Arduino. Чтобы установить последовательную связь, подключите перемычку «папа-вилка» от контакта TX модуля Bluetooth к контакту RX Arduino (цифровой контакт 0), а другую - между контактом RX модуля и контакту TX Arduino (цифровой контакт 1).

Примечание. Вы не сможете загружать эскизы из Arduino IDE в Arduino, если к Arduino подключены контакты TX и RX Bluetooth. Отключите их, когда вам нужно загрузить эскиз, и повторно подключите их после успешной загрузки эскиза. На рисунке ниже показано, что используется HC-05. На самом деле, как объяснялось выше, и HC-05, и HC-06 в порядке.

После подключения Bluetooth и акселерометра реальный объект отображается следующим образом:

Шаг 3. Сопряжение модуля Bluetooth с устройством Windows 10

Время :5 минут

Детали :Модуль Bluetooth, устройство Windows 10, модуль ORICO Bluetooth (опционально)

Инструменты :Нет

Модуль Bluetooth работает по протоколу SPP (последовательный протокол через Bluetooth). Так что к нему может подключиться любое устройство, поддерживающее SPP. На устройстве с Windows 10 это выглядит как виртуальный COM-порт. Перед подключением убедитесь, что модуль включен и готов к сопряжению. Красный светодиод на модуле указывает состояние:мигание означает «готово к сопряжению», постоянное свечение означает «сопряжение».

В Windows 10 для ПК просто перейдите в Настройки-> Устройства-> Bluetooth, откройте Bluetooth, и на экране отобразится модуль «HC-06». Коснитесь, чтобы выполнить сопряжение устройства, и введите код сопряжения устройства. Помните, что код сопряжения по умолчанию - 1234, а скорость последовательного порта по умолчанию - 9600 бод. Затем страница Bluetooth отображается следующим образом:

В Windows 10 для мобильных устройств перейдите в «Настройки» -> «Устройства» -> «Bluetooth» и выполните те же действия, которые описаны в предыдущем разделе. Страница сопряженного устройства отображается следующим образом:

Для устройства Windows 10 IoT Core, например Raspberry Pi 2, MBM и Dragon Board 410c, процесс сопряжения сильно отличается. Во-первых, для Raspberry Pi 2 и MBM, у которых нет встроенного модуля Bluetooth, мы должны купить USB-ключ Bluetooth и подключить его. Просто обратитесь к списку совместимого оборудования и выберите проверенный USB-ключ Bluetooth.

В этом проекте мы выбрали модуль ORICO BTA-403.

Если вы попробуете этот проект на Dragon Board 410c, то вам не понадобится адаптер Bluetooth, потому что Dragon Board 410c имеет встроенный модуль Bluetooth.

Подключите USB-ключ ORICO BTA-403 Bluetooth к USB-интерфейсу Raspberry Pi 2 следующим образом.

После подключения USB-ключа ORICO BTA-403 Bluetooth на нем будут отображаться сообщения на экране приложения по умолчанию на устройстве Windows 10 IoT Core.

Для сопряжения Bluetooth на устройстве Windows 10 IoT Core см. Страницу «Сопряжение устройства BLE и инструмента дампа таблицы атрибутов GATT» и следуйте инструкциям «Шаг 1 - Шаг 6», описанным в разделе «Сопряжение с Sensortag». Здесь мы должны использовать SSH для подключения к Windows IoT Core и запустить инструмент командной строки для настройки устройства.

Примечание:помните, что режим BR следует выбирать в главном меню. А код сопряжения по умолчанию - 1234.

После успешного сопряжения страница Bluetooth устройства отображается следующим образом:

Шаг 4. Создайте учетную запись хранения Azure

Время :10 минут

Детали :Нет

Инструменты :Учетная запись Azure

В этом проекте нам понадобится таблица хранилища Azure для хранения данных с устройства Windows 10 IoT Core. Итак, мы можем создать его следующим образом.

(1) На портале управления Azure (https://manage.windowsazure.com) щелкните значок «ХРАНИЛИЩЕ» слева, чтобы просмотреть существующие учетные записи хранения (если есть), затем нажмите кнопку «+ НОВАЯ». в левом нижнем углу.

(2) На панели «НОВОЕ» выберите «УСЛУГИ ДАННЫХ» | «ХРАНЕНИЕ» | «БЫСТРО СОЗДАТЬ». Заполните поля «URL-адрес, местоположение / группа соответствия и репликация», затем нажмите кнопку «СОЗДАТЬ УЧЕТНУЮ ЗАПИСЬ».

(3) Подождите, пока статус новой учетной записи хранения не изменится на «В сети».

(4) Выберите только что созданную учетную запись хранилища, а затем щелкните УПРАВЛЕНИЕ КЛЮЧАМИ ДОСТУПА внизу страницы. Скопируйте имя учетной записи хранения и один из ключей доступа.

Шаг 5. Создайте таблицу хранилища Azure

Мы используем обозреватель хранилища Azure (сторонний инструмент с открытым исходным кодом, доступный на codeplex:https://azurestorageexplorer.codeplex.com) для создания таблицы хранилища Azure.

(1) Перейдите к добавлению учетной записи и введите имя учетной записи и ключ доступа. После создания учетной записи вы можете получить доступ к хранилищу, в котором отображаются контейнеры больших двоичных объектов, очереди и таблицы.

(2) Выберите таблицу, нажмите новую кнопку и создайте новую таблицу с именем «Таблица акселерометра», как показано ниже.

Шаг 5. Загрузите и разверните код

Время :10 минут

Детали :Нет

Инструменты :Нет

Прежде всего, теперь, когда у нас есть все, что связано с Arduino, загрузите проект «ADXL345_HC06.ino» из (приведенного в разделе кода ниже) и загрузите его в Arduino IDE на своем ПК. Обязательно отсоедините перемычки TX / RX модуля HC-06, а затем загрузите эскиз. Подключите перемычки TX / RX к цифровым 0 и цифровым 1 контактам Arduino. Подключите питание, и приложение запустится на Arduino Uno.

Во-вторых, загрузите проект GenericBluetoothSerialUWApp с github. Используйте Visual Studio 2015 с обновлением 1, чтобы загрузить «GenericBluetoothSerialUWApp». Это приложение разработано с помощью Generic Serial Bluetooth нашего MVP Дэвида Джонса с Win 10 IoT-Core RPI2. Если вы хотите, чтобы это приложение UWP работало на ПК, выберите x86 или x64 с отладкой локального устройства. Если вы хотите, чтобы это приложение UWP работало в Windows 10 Mobile, выберите ARM с отладкой устройства. Если вы хотите, чтобы это приложение UWP работало на устройстве Windows 10 IoT, например Raspberry Pi 2, убедитесь, что вы установили точку «Удаленная отладка» для своего устройства.

Затем откройте MainPage.xaml.cs в обозревателе решений и найдите «dataTransferTick». Добавьте имя учетной записи хранения и ключ доступа, сохраненные в разделе 4.

После сопряжения HC-06 с устройством Windows 10 нажмите F5 в Visual Studio, чтобы запустить приложение универсальной платформы Windows.

Дважды нажмите на символ «HC-06», вы увидите, что идентификатор и имя отображаются в самом верху приложения, как показано ниже.

Вскоре вы увидите, что состояние светодиода на HC-06 изменится с мигающего на постоянное. И кнопка «Start Rev» активируется, как только канал связи модуля Bluetooth установлен.

Нажмите Start Recv, чтобы разрешить прием данных. Затем вы увидите, что кнопки Stop Recv, Process Data и Upload Data включены. Просто нажмите кнопку «Обработать данные», чтобы запустить алгоритм обнаружения падения. Вы увидите данные о Recvd TextBlock и состояние человека, у которого есть устройство.

Вы все еще можете обнаружить, что данные будут отображаться в окнах отладки Visual Studio следующим образом.

Затем нажмите кнопку «Загрузить», чтобы загрузить данные в Azure. Данные будут передаваться каждые 3 секунды. Если вы хотите изменить временной интервал, вы можете изменить код в «AzureButton_Click» следующим образом.

private void AzureButton_Click (отправитель объекта, RoutedEventArgs e) {

timerDataTransfer =ThreadPoolTimer.CreatePeriodicTimer (dataTransferTick, TimeSpan.FromMilliseconds (Convert.ToInt32 ( 3000 )));

}

Скоро вы сможете увидеть данные в AccelerometerTable следующим образом

В-третьих, загрузите «FallDetectionClient» с github. Используйте Visual Studio 2015 с обновлением 1, чтобы загрузить этот проект. Это приложение создано с помощью Windows Universal Temple, поэтому вы можете запускать его на ПК с Windows 10 / Mobile, а также на устройстве Windows 10 IoT Core. Затем откройте StorageSensor.cs в обозревателе решений и найдите «_accountName» и «_key». Добавьте имя учетной записи хранения и ключ доступа, сохраненные в разделе 4.

Теперь вы можете нажать F5 в Visual Studio:приложение развернется и запустится, и вы должны увидеть это на выходе устройства.

Код

  • Эскиз Arduino (ADXL345_HC06.ino)
Эскиз Arduino (ADXL345_HC06.ino) Arduino
Акселрометр ADXL345 + модуль Bluetooth HC-06
 #include  #include  #define Register_ID 0 # define Register_2D 0x2D #define Register_X0 0x32 # define Register_X1 0x33 # define Register_Y0 0x34 # define Register_Y1 0x35 # определить Register_Z0 0x36 # определить Register_Z1 0x37int ADXAddress =0xA7>> 1; int чтение =0; int val =0; int X0, X1, X_out; int Y0, Y1, Y_out; int Z1, Z0, Z_out; double Xg, Yg, Zg; void setup () {Serial.begin (9600); Wire.begin (); задержка (100); Wire.beginTransmission (ADXAddress); Wire.write (Register_2D); Wire.write (8); Wire.endTransmission ();} void loop () {двойной tempx =0; char strx [5]; двойной темп =0; char stry [5]; двойной tempz =0; char strz [5]; String gy; Wire.beginTransmission (ADXAddress); Wire.write (Register_X0); Wire.write (Register_X1); Wire.endTransmission (); Wire.requestFrom (ADXAddress, 2); если (Wire.available () <=2); {X0 =Wire.read (); X1 =Wire.read (); X1 =X1 <<8; X_out =X0 + X1; } Wire.beginTransmission (ADXAddress); Wire.write (Register_Y0); Wire.write (Register_Y1); Wire.endTransmission (); Wire.requestFrom (ADXAddress, 2); если (Wire.available () <=2); {Y0 =Wire.read (); Y1 =Wire.read (); Y1 =Y1 <<8; Y_out =Y0 + Y1; } Wire.beginTransmission (ADXAddress); Wire.write (Register_Z0); Wire.write (Register_Z1); Wire.endTransmission (); Wire.requestFrom (ADXAddress, 2); если (Wire.available () <=2); {Z0 =Wire.read (); Z1 =Wire.read (); Z1 =Z1 <<8; Z_out =Z0 + Z1; } Xg =X_out / 256,00; Yg =Y_out / 256,00; Zg =Z_out / 256,00; если (Xg> 0) {gy =String ("") + "x =+" + Xg; } else {gy =String ("") + "x =" + Xg; } если (Yg> 0) {gy + =String ("") + "y =+" + Yg; } else {gy + =String ("") + "y =" + Yg; } если (Zg> 0) {gy + =String ("") + "z =+" + Zg + ","; } иначе {gy + =String ("") + "z =" + Zg + ","; } Serial.print (gy);} 
Последовательное приложение Bluetooth
Обменивается данными с Arduino через Bluetooth HC-06 и отправляет данные ADXL345 в Azure https://github.com/shijiong/FallDetection/tree/master/GenericBluetoothSerialUWApp
FallDetectionClient
Клиентское приложение UWP для обнаружения падения https://github.com/shijiong/FallDetection/tree/master/FallDetectionClient

Схема

ADXL345 + HC-06 Завершить% 20Schematic.fzzSketch для подключения ADXL345 ADXL345.fzzSketch для подключения модуля Bluetooth hc-06.fzz

Производственный процесс

  1. Система посещаемости с использованием Arduino и RFID с Python
  2. Робототехническая система для обнаружения человека с использованием Arduino Uno
  3. Дизайн детектора PM2.5 и PM 10 для приложения Windows 10 UWP
  4. Система мониторинга и обнаружения лесных пожаров (с SMS-оповещениями)
  5. u-blox LEA-6H 02 GPS-модуль с Arduino и Python
  6. Клеточные автоматы на основе Arduino и OLED
  7. eDOT - точные часы и метеостанция на базе Arduino
  8. Система посещаемости на основе Arduino и Google Spreadsheet
  9. Система предупреждения об обнаружении столкновений на основе Arduino
  10. Управление автомобилем с помощью Arduino Uno и Bluetooth