Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Un système de détection de chute basé sur Arduino, Windows et Azure

Composants et fournitures

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

À propos de ce projet

Présentation :

Les chutes qui entraînent des blessures mortelles sont devenues un grand défi qui ne peut être négligé pour les personnes âgées. Au cours des dernières années, différents types d'approches ont été proposées dans le domaine de la détection des chutes, qui peuvent être expliquées et classées en trois types :basées sur des dispositifs portables, basées sur des capteurs d'ambiance et basées sur la vision [1]. Tout d'abord, les appareils portables tirent généralement parti des capteurs intégrés pour détecter le mouvement et l'emplacement du corps, tels que l'accéléromètre, le magnétomètre et le gyroscope [2, 3]. Et le coût de l'approche basée sur les appareils portables est assez faible, de même que l'installation et le fonctionnement ne sont pas compliqués pour les personnes âgées. Deuxièmement, l'approche basée sur l'ambiance utilise toujours des capteurs de pression pour détecter et suivre le corps. Cette solution est également rentable et facile à déployer [4, 5]. Cependant, la possibilité de détecter des objets autres que des corps humains pose un défi remarquable à la précision de détection de cette approche. Enfin et surtout, la solution basée sur la vision utilise pleinement les caméras déployées pour surveiller tous les objets à portée, y compris les corps humains [6, 7]. Il y a moins d'intrusion dans la vie quotidienne des gens que les deux approches ci-dessus, tandis que l'espace d'observation est limité et qu'une surveillance omniprésente ne peut pas être réalisée.

Dans ce projet, un système de surveillance basé sur Arduino, Windows 10 et Microsoft Azure pour la détection des chutes en temps réel est proposé. Les données brutes de l'accéléromètre tridimensionnel sont fournies par Arduino avec ADXL345. L'appareil Windows 10 utilise ces informations pour obtenir l'orientation du sujet grâce à des algorithmes efficaces de fusion de données et de détection de chute. Les services Microsoft Azure et l'application Mobile/PC sont également conçus pour permettre un traitement, une analyse, un stockage et une acquisition transparents des données à tout moment et à partir de n'importe quel endroit tant qu'ils ont accès à Internet. L'architecture du système est illustrée sur la figure 1 comme suit.

Références

[1] L. Jian et T. E. Lockhart, "Développement et évaluation d'un algorithme de détection d'événements de chute avant impact," Génie biomédical, IEEE Transactions on, vol. 61, pages 2135-2140, 2014.

[2] P. Pierleoni, A. Belli, L. Palma, M. Pellegrini, L. Pernini et S. Valenti, "Un dispositif portable de haute fiabilité pour la détection des chutes chez les personnes âgées", Sensors Journal, IEEE, vol. 15, p. 4544-4553, 2015.

[3] R. Freitas, M. Terroso, M. Marques, J. Gabriel, A. Torres Marques et R. Simoes, « Réseaux de capteurs portables pris en charge par les appareils mobiles pour la détection des chutes », dans SENSORS, 2014 IEEE, 2014, pages 2246-2249.

[4] Z. Xiaodan, H. Jing, G. Potamianos et M. Hasegawa-Johnson, « Détection de chute acoustique à l'aide de modèles de mélange gaussien et de supervecteurs GMM », dans Acoustics, Speech and Signal Processing, 2009. ICASSP 2009. IEEE International Conférence sur, 2009, pp. 69-72.

[5] L. Yun, K. C. Ho et M. Popescu, « Algorithmes de séparation de source efficaces pour la détection des chutes acoustiques à l'aide d'un Kinect de Microsoft », Génie biomédical, IEEE Transactions, vol. 61, p. 745-755, 2014.

[6] M. Yu, S. M. Naqvi, A. Rhuma et J. Chambers, « Classificateurs de méthode de limite de classe pour une application dans un système de détection de chute basé sur la vidéo », Computer Vision, IET, vol. 6, p. 90-100, 2012.

[7] E. E. Stone et M. Skubic, « Détection des chutes dans les maisons d'adultes plus âgés utilisant le Microsoft Kinect », Informatique biomédicale et de santé, IEEE Journal of, vol. 19, p. 290-301, 2015.

Principe de détection des chutes avec reconnaissance de posture

Dans ce projet, l'algorithme de détection de chute est conçu selon le Fall-detection-in-Android de Bharadwaj Sreenivasan. Il y a deux modules dans l'algorithme, la reconnaissance de posture et la détection de chute. Premièrement, nous lisons les valeurs x, y et z de l'accéléromètre. Ensuite, nous calculons la norme L2 des x, y et z. Ceci est utilisé par le module de reconnaissance de posture et de détection de chute.

Dans le module de reconnaissance de posture, les postures de l'utilisateur sont classées en trois postures de base :assise, debout et marche. Les valeurs de « y » sont appliquées à un seuil pour connaître l'orientation. En utilisant le taux de variation de la norme L2 par rapport à l'accélération moyenne due à la gravité (9,8), nous classons les données en marche ou simplement en transition entre les états.

Le module de détection de chute recherche un motif particulier dans le signal. La figure 2 représente un schéma typique de la norme L2 lors d'un événement de chute.

Si la différence entre les minima et maxima consécutifs est supérieure à 2g, la sortie est décidée comme une chute. La décision finale en cas de chute est basée sur la sortie à la fois du module de reconnaissance de posture et de décision de chute. Lorsqu'une chute est détectée, la décision du module de reconnaissance de posture nous indique s'il s'agit d'une fausse alarme. Si l'état marche toujours, la décision d'événement de chute peut être rejetée. Le tableau 1 résume la décision finale.

Prérequis

Dans ce projet, pour le périphérique Arduino, la communication Bluetooth est réalisée par HC-06, qui est un petit module emballé bon marché. Pour les appareils Windows 10, si vous utilisez Surface Pro et Lumia 1520, vous n'aurez pas besoin de module Bluetooth. Cependant, si vous utilisez Raspberry Pi ou MBM comme appareils IoT Windows 10, vous aurez besoin d'un dongle Bluetooth. Reportez-vous au Generic Serial Bluetooth de notre MVP David Jones avec Win 10 IoT-Core RPI2 pour configurer l'environnement.

Remarque :Il faudra 2 à 3 heures pour terminer les prérequis si vous n'avez pas déjà configuré Windows 10 et Visual Studio 2015, mais que la plupart de ce temps est sans surveillance.

Ce dont vous aurez besoin

Pièces :

1. Arduino Uno et câble USB A/B standard

2. Module Bluetooth HC-06

3. Module accéléromètre ADXL345

4. Fils de liaison mâle-mâle et mâle-femelle

5. Mini-planche à pain

6. Lumia 1520 ou autre appareil compatible Windows Phone 10

7. Module Bluetooth ORICO

Instructions de projet

Étape 1 :Connectez le module accéléromètre ADXL345 à l'Arduino

Temps :5 minutes

Pièces :Arduino Uno R3, ADXL345, cavaliers, mini-breadboard

Outils :N/A

L'ADXL345 est un petit accéléromètre MEMS à 3 axes mince et à faible consommation avec une mesure haute résolution (13 bits) jusqu'à +-16 g. Les données de sortie numériques sont formatées en complément à deux de 16 bits et sont accessibles via une interface numérique SPI (3 ou 4 fils) ou I2C.

L'ADXL345 prend en charge à la fois SPI et I2C, nous allons juste parler d'I2C ici dans ce projet. I2C est une connexion série à 2 fils, nous devons donc connecter les lignes SDA (données) et SCL (horloge) à Arduino UNO pour la communication. Sur Arduino UNO, SDA est sur la broche analogique 4 et SCL sur la broche analogique 5. Assurez-vous que les broches VCC et CS du capteur sont connectées à 3.3v. Nous connectons CS à 3,3 V pour indiquer au capteur que nous l'utiliserons comme périphérique I2C et non comme périphérique SPI.

Étape 2 :Connectez le module Bluetooth

Temps :5 minutes

Pièces :module Bluetooth, cavaliers

Outils :N/A

Dans ce projet, nous utilisons HC-06 comme module Bluetooth - il est beaucoup moins cher que le module BlueSMiRF Silver de SparkFun. De plus, le HC-05 contient le micrologiciel « complet », de nombreuses commandes AT et peut être à la fois un module maître et un module esclave. Le firmware HC-06, en revanche, ne peut être qu'un appareil esclave, avec des commandes AT très limitées. Le tableau ci-dessous montre toutes les commandes du firmware HC-06 avec la réponse :

Tout d'abord, branchez le module Bluetooth sur la maquette pour faciliter les connexions. Pour alimenter le module, exécutez un cavalier entre le rail d'alimentation 5V de l'Arduino et la broche Vcc du module. Et exécutez un cavalier mâle-mâle de la broche GND du module à l'une des broches GND de l'Arduino. Pour établir les communications série, connectez un cavalier mâle-mâle de la broche TX du module Bluetooth à la broche RX de l'Arduino (broche numérique 0) et un autre de la broche RX du module à la broche TX de l'Arduino (broche numérique 1).

Remarque :vous ne pourrez pas télécharger de croquis de l'IDE Arduino vers l'Arduino lorsque les broches TX et RX du Bluetooth sont connectées à l'Arduino. Déconnectez-les lorsque vous devez télécharger un croquis et reconnectez-les une fois que le croquis a été téléchargé avec succès. Dans le croquis ci-dessous, il est montré que HC-05 est utilisé. En fait, comme expliqué ci-dessus, HC-05 et HC-06 sont tous les deux OK.

Après la connexion Bluetooth et l'accéléromètre, la vraie chose est affichée comme ceci :

Étape 3 :Associer le module Bluetooth à l'appareil Windows 10

Temps :5 minutes

Pièces :module Bluetooth, appareil Windows 10, module ORICO Bluetooth (en option)

Outils :N/A

Le module Bluetooth exécute le protocole SPP (Serial Protocol over Bluetooth). Ainsi, tout appareil prenant en charge SPP peut s'y connecter. Sur un appareil Windows 10, cela ressemble à un port COM virtuel. Avant de vous connecter, assurez-vous que le module est alimenté et prêt à être couplé. La LED rouge sur le module indique l'état :clignotant signifie « prêt à appairer », tandis que fixe signifie « appairé ».

Sous Windows 10 pour PC, accédez simplement à Paramètres-> Périphériques-> Bluetooth, ouvrez Bluetooth, puis le module "HC-06" s'affichera à l'écran. Appuyez sur pour jumeler l'appareil et saisissez le code de jumelage de l'appareil. N'oubliez pas que le code d'appairage par défaut est 1234 et que la vitesse du port série par défaut est de 9600 bauds. Ensuite, la page Bluetooth s'affiche comme ceci :

Pour Windows 10 pour mobile, accédez à Paramètres-> Périphériques-> Bluetooth et suivez les mêmes étapes décrites dans la section ci-dessus. Et la page de l'appareil couplé s'affiche comme ceci :

Pour les appareils Windows 10 IoT Core, par exemple Raspberry Pi 2, MBM et Dragon Board 410c, le processus de couplage est très différent. Tout d'abord, pour Raspberry Pi 2 et MBM qui n'ont pas de module Bluetooth intégré, nous devons acheter un dongle USB Bluetooth et le brancher. Reportez-vous simplement à la liste de compatibilité matérielle et choisissez un dongle USB Bluetooth vérifié.

Dans ce projet, nous choisissons un module ORICO BTA-403.

Si vous essayez ce projet sur Dragon Board 410c, vous n'avez pas besoin d'un dongle Bluetooth car Dragon Board 410c possède un module Bluetooth intégré.

Branchez le dongle USB Bluetooth ORICO BTA-403 dans l'interface USB du Raspberry Pi 2 comme suit.

Une fois le dongle USB Bluetooth ORICO BTA-403 branché, il affichera des messages sur l'écran d'application par défaut de l'appareil Windows 10 IoT Core.

Pour le couplage Bluetooth sur un appareil Windows 10 IoT Core, reportez-vous à la page Couplage d'un appareil BLE et de l'outil de vidage de la table d'attributs GATT et suivez les « étapes 1 à 6 » décrites dans la section « Couplage du Sensortag ». Ici, nous devons utiliser SSH pour nous connecter à Windows IoT Core et exécuter l'outil de ligne de commande pour configurer l'appareil.

Remarque :n'oubliez pas que le mode BR doit être choisi dans le menu principal. Et le code d'association par défaut est 1234.

Une fois le couplage réussi, la page Bluetooth de l'appareil s'affiche comme suit :

Étape 4 :Créez le compte de stockage Azure

Temps :10 minutes

Pièces :N/A

Outils :Compte Azure

Dans ce projet, nous aurons besoin d'Azure Storage Table pour stocker les données de l'appareil Windows 10 IoT Core. Nous pouvons donc le créer comme suit.

(1) Dans le portail de gestion Azure (https://manage.windowsazure.com), cliquez sur l'icône « STOCKAGE » à gauche pour afficher vos comptes de stockage existants (le cas échéant), puis cliquez sur le bouton « + NOUVEAU ». dans le coin inférieur gauche.

(2) Dans le panneau "NOUVEAU", sélectionnez "SERVICES DE DONNÉES" | "STOCKAGE" | "CRÉATION RAPIDE". Remplissez les champs "URL, emplacement/groupe d'affinité et réplication", puis cliquez sur le bouton "CRÉER UN COMPTE DE STOCKAGE".

(3) Attendez que le statut du nouveau compte de stockage s'affiche comme "En ligne".

(4) Sélectionnez le compte de stockage nouvellement créé, puis cliquez sur GÉRER LES CLÉS D'ACCÈS en bas de la page. Copiez le nom du compte de stockage et l'une des clés d'accès.

Étape 5 :Créer une table de stockage Azure

Nous utilisons Azure Storage Explorer (c'est un outil open source tiers disponible sur codeplex :https://azurestorageexplorer.codeplex.com) pour créer la table de stockage Azure.

(1) Allez à ajouter un compte et remplissez le nom du compte et la clé d'accès. Une fois le compte établi, vous pouvez accéder au stockage qui affiche les conteneurs blob, les files d'attente et les tables.

(2) Sélectionnez le tableau et cliquez sur le bouton Nouveau et créez un nouveau tableau nommé « Table de l'accéléromètre » comme suit.

Étape 5 : Télécharger et déployer le code

Temps :10 minutes

Pièces :N/A

Outils :N/A

Tout d'abord, maintenant que nous avons tout câblé pour Arduino, téléchargez le projet "ADXL345_HC06.ino" à partir de (fourni dans la section de code ci-dessous) et chargez-le dans l'IDE Arduino sur votre PC. Assurez-vous de débrancher les fils de cavalier TX/RX du module HC-06, puis téléchargez le croquis. Reconnectez les cavaliers TX/RX aux broches numérique 0 et numérique 1 de l'Arduino. Branchez l'alimentation et l'application fonctionnera sur Arduino Uno.

Deuxièmement, téléchargez le projet "GenericBluetoothSerialUWApp" depuis github. Utilisez Visual Studio 2015 avec la mise à jour 1 pour charger « GenericBluetoothSerialUWApp ». Cette application est conçue avec l'aide du Bluetooth série générique de notre MVP David Jones avec Win 10 IoT-Core RPI2. Si vous souhaitez que cette application UWP s'exécute sur PC, choisissez x86 ou x64 avec débogage de périphérique local. Si vous souhaitez que cette application UWP s'exécute sur Windows 10 Mobile, choisissez ARM avec débogage de l'appareil. Si vous souhaitez que cette application UWP s'exécute sur un appareil Windows 10 IoT, par exemple Raspberry Pi 2, assurez-vous de définir le point « Débogage à distance » sur votre appareil.

Ensuite, ouvrez MainPage.xaml.cs dans l'Explorateur de solutions et localisez le "dataTransferTick". Ajoutez le nom de votre compte de stockage et la clé d'accès enregistrés dans la section 4.

Après avoir couplé le HC-06 avec votre appareil Windows 10, appuyez sur F5 à partir de Visual Studio pour lancer l'application Universal Windows Platform.

Appuyez deux fois sur le symbole « HC-06 », vous trouverez l'affichage de l'identifiant et du nom tout en haut de l'application, comme suit.

Bientôt, vous pouvez voir que l'état de la LED sur HC-06 passera de clignotant à fixe. Et le bouton « Start Rev » est activé dès que le canal de communication du module Bluetooth est établi.

Cliquez sur Start Recv pour activer la réception des données. Ensuite, vous verrez que les boutons Stop Recv, Process Data et Upload Data sont activés. Cliquez simplement sur le bouton Traiter les données pour exécuter l'algorithme de détection de chute. Vous verrez les données sur Recvd TextBlock et l'état de la personne qui porte l'appareil.

Vous pouvez toujours trouver que les données seront affichées dans les fenêtres de débogage de Visual Studio comme suit.

Ensuite, cliquez sur le bouton Télécharger pour télécharger les données vers Azure. Les données seront transmises toutes les 3 secondes. Si vous souhaitez modifier l'intervalle de temps, vous pouvez modifier le code dans « AzureButton_Click » comme suit.

private void AzureButton_Click (expéditeur d'objet, RoutedEventArgs e) {

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

}

Bientôt, vous pouvez voir les données dans AccelerometerTable comme suit

Troisièmement, téléchargez le "FallDetectionClient" à partir de github. Utilisez Visual Studio 2015 avec la mise à jour 1 pour charger ce projet. Cette application est conçue avec Windows Universal Temple, vous pouvez donc l'exécuter sur Windows 10 PC/Mobile, ainsi que sur un appareil Windows 10 IoT Core. Ensuite, ouvrez StorageSensor.cs dans l'Explorateur de solutions et recherchez « _accountName » et « _key ». Ajoutez le nom de votre compte de stockage et la clé d'accès enregistrés dans la section 4.

Vous devriez maintenant pouvoir appuyer sur F5 à partir de Visual Studio :l'application se déploiera et démarrera, et vous devriez le voir sur la sortie de l'appareil.

Code

  • Arduino Sketch (ADXL345_HC06.ino)
Arduino Sketch (ADXL345_HC06.ino)Arduino
Accéléromètre ADXL345 + Module 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# définir Register_Z0 0x36#define Register_Z1 0x37int ADXAddress =0xA7>> 1 ; int lecture =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); Fil.begin(); retard (100); Wire.beginTransmission(ADXAddress); Wire.write(Register_2D); Wire.write(8); Wire.endTransmission();}void loop() { double tempx =0; char strx[5]; double tempy =0; char stry[5]; double tempz =0 ; char strz[5]; String gy; Wire.beginTransmission(ADXAddress); Wire.write(Register_X0) ; Wire.write(Register_X1) ; Wire.endTransmission(); Wire.requestFrom(ADXAddress, 2); if (Wire.available() <=2); { X0 =Wire.read(); X1 =Wire.read(); X1 =X1 <<8 ; X_out =X0 + X1 ; } Wire.beginTransmission(AdresseADX); Wire.write(Register_Y0) ; Wire.write(Register_Y1) ; Wire.endTransmission(); Wire.requestFrom(ADXAddress, 2); if (Wire.available() <=2); { Y0 =Wire.read(); Y1 =Wire.read(); Y1 =Y1 <<8 ; Y_out =Y0 + Y1 ; } Wire.beginTransmission(AdresseADX); Wire.write(Register_Z0); Wire.write(Register_Z1) ; Wire.endTransmission(); Wire.requestFrom(ADXAddress, 2); if (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 ; if(Xg>0) { gy =String("")+ "x="+"+Xg; } else { gy =String("")+ "x="+Xg; } if(Yg>0) { gy +=String("")+ "y="+"+Yg; } else { gy +=String("")+ "y="+Yg; } if(Zg>0) { gy +=String("")+ "z="+"+Zg+","; } else { gy +=String("")+ "z="+Zg+","; } Serial.print(gy);}
Application série Bluetooth
Communique avec Arduino via Bluetooth HC-06 et envoie des données ADXL345 à Azurehttps://github.com/shijiong/FallDetection/tree/master/GenericBluetoothSerialUWApp
Client de détection des chutes
Application cliente UWP pour la détection des chuteshttps://github.com/shijiong/FallDetection/tree/master/FallDetectionClient

Schémas

ADXL345 + HC-06 Complete%20Schematic.fzzSketch pour la connexion ADXL345 ADXL345.fzzSketch pour la connexion du module Bluetooth hc-06.fzz

Processus de fabrication

  1. Système de présence utilisant Arduino et RFID avec Python
  2. Système robotique de détection humaine utilisant Arduino Uno
  3. Conception d'un détecteur PM2.5 et PM 10 pour l'application Windows 10 UWP
  4. Système de surveillance et de détection des incendies de forêt (avec alertes SMS)
  5. module GPS u-blox LEA-6H 02 avec Arduino et Python
  6. Automates cellulaires basés sur Arduino et OLED
  7. eDOT - Horloge de précision et station météo basée sur Arduino
  8. Système de présence basé sur Arduino et la feuille de calcul Google
  9. Système d'avertissement de détection de collision basé sur Arduino