Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Een valdetectiesysteem op basis van Arduino, Windows en Azure

Componenten en benodigdheden

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

Over dit project

Inleiding :

Vallen die leiden tot dodelijk letsel zijn een grote uitdaging geworden die voor ouderen niet kan worden verwaarloosd. In de afgelopen jaren zijn er verschillende soorten benaderingen voorgesteld op het gebied van valdetectie, die kunnen worden uitgelegd en onderverdeeld in drie typen:gebaseerd op draagbare apparaten, op basis van omgevingssensoren en op zicht [1]. Allereerst maken draagbare apparaten meestal gebruik van ingebouwde sensoren om de beweging en locatie van het lichaam te detecteren, zoals een versnellingsmeter, magnetometer en gyroscoop [2, 3]. En de kosten van een op draagbare apparaten gebaseerde benadering zijn vrij laag, evenals de installatie en bediening is niet ingewikkeld voor ouderen. Ten tweede wordt bij een op sfeer gebaseerde benadering altijd gebruik gemaakt van druksensoren om het lichaam te detecteren en te volgen. Deze oplossing is ook kosteneffectief en eenvoudig te implementeren [4, 5]. De mogelijkheid om andere objecten dan menselijke lichamen waar te nemen, vormt echter een opmerkelijke uitdaging voor de detectienauwkeurigheid van deze benadering. Last but not least maakt een op zicht gebaseerde oplossing volledig gebruik van ingezette camera's om alle objecten binnen het bereik te bewaken, inclusief menselijke lichamen [6, 7]. Er is minder inbreuk op het dagelijks leven van mensen dan de twee bovengenoemde benaderingen, terwijl de observatieruimte beperkt is en alomtegenwoordige monitoring niet kan worden bereikt.

In dit project wordt een bewakingssysteem voorgesteld op basis van Arduino, Windows 10 en Microsoft Azure voor realtime valdetectie. Ruwe gegevens van de driedimensionale versnellingsmeter worden geleverd door Arduino met ADXL345. Windows 10-apparaat maakt gebruik van deze informatie om de oriëntatie van het onderwerp te krijgen door efficiënte gegevensfusie en valdetectie-algoritmen. Microsoft Azure-services en mobiele/pc-applicaties zijn ook ontworpen om naadloze gegevensverwerking, analyse, opslag en verwerving op elk moment en vanaf elke plaats mogelijk te maken, zolang ze toegang hebben tot internet. De systeemarchitectuur wordt als volgt weergegeven in Fig. 1.

Referenties

[1] L. Jian en T.E. Lockhart, "Ontwikkeling en evaluatie van een algoritme voor het detecteren van valincidenten voorafgaand aan de impact", Biomedical Engineering, IEEE Transactions on, vol. 61, blz. 2135-2140, 2014.

[2] P. Pierleoni, A. Belli, L. Palma, M. Pellegrini, L. Pernini en S. Valenti, "A High Reliability Wearable Device for Elderly Fall Detection", Sensors Journal, IEEE, vol. 15, blz. 4544-4553, 2015.

[3] R. Freitas, M. Terroso, M. Marques, J. Gabriel, A. Torres Marques en R. Simoes, "Draagbare sensornetwerken ondersteund door mobiele apparaten voor valdetectie", in SENSORS, 2014 IEEE, 2014, blz. 2246-2249.

[4] Z. Xiaodan, H. Jing, G. Potamianos en M. Hasegawa-Johnson, "Akoestische valdetectie met behulp van Gauss-mengselmodellen en GMM-supervectoren", in Acoustics, Speech and Signal Processing, 2009. ICASSP 2009. IEEE International Conferentie over, 2009, pp. 69-72.

[5] L. Yun, K.C. Ho en M. Popescu, "Efficiënte bronscheidingsalgoritmen voor akoestische valdetectie met behulp van een Microsoft Kinect", Biomedical Engineering, IEEE Transactions on, vol. 61, blz. 745-755, 2014.

[6] M. Yu, S. M. Naqvi, A. Rhuma en J. Chambers, "Eén klasse grensmethodeclassificaties voor toepassing in een videogebaseerd valdetectiesysteem", Computer Vision, IET, vol. 6, blz. 90-100, 2012.

[7] E.E. Stone en M. Skubic, "Valdetectie in huizen van oudere volwassenen met behulp van de Microsoft Kinect", Biomedical and Health Informatics, IEEE Journal of, vol. 19, blz. 290-301, 2015.

Principe van valdetectie met houdingsherkenning

In dit project is het valdetectie-algoritme ontworpen volgens Bharadwaj Sreenivasan's Fall-detectie-in-Android. Er zijn twee modules in het algoritme, houdingsherkenning en valdetectie. Eerst lezen we de x-, y- en z-waarden van de accelerometer. Vervolgens berekenen we de L2-norm van de x, y en z. Dit wordt gebruikt door de module voor houdingsherkenning en valdetectie.

In de module Houdingsherkenning worden de gebruikershoudingen ingedeeld in drie basishoudingen:zitten, staan ​​en lopen. De waarden van "y" worden toegepast als een drempel om de oriëntatie te achterhalen. Met behulp van de variatiesnelheid van de L2-norm tov de gemiddelde versnelling als gevolg van de zwaartekracht (9,8) classificeren we de gegevens in lopen of alleen overgang tussen toestanden.

De valdetectiemodule zoekt naar een bepaald patroon in het signaal. Fig.2 geeft een typisch patroon weer in de L2-norm tijdens een val.

Als het verschil tussen opeenvolgende minima en maxima groter is dan 2g, wordt de output bepaald als een daling. De uiteindelijke beslissing bij een val is gebaseerd op de output van zowel de houdingsherkenning als de valbeslissingsmodule. Wanneer een val wordt gedetecteerd, vertelt de beslissing van de houdingsherkenningsmodule ons of het een vals alarm is. Als de staat nog steeds loopt, kan de beslissing over een valgebeurtenis worden weggegooid. Tabel 1 vat de uiteindelijke beslissing samen.

Vereisten

In dit project, voor Arduino-apparaten, wordt de Bluetooth-communicatie bereikt door HC-06, een goedkope, klein verpakte module. Voor Windows 10-apparaten, als u Surface Pro en Lumia 1520 gebruikt, hebt u geen Bluetooth-module nodig. Als u echter Raspberry Pi of MBM als Windows 10 IoT-apparaten gebruikt, hebt u een Bluetooth-dongle nodig. Raadpleeg onze MVP David Jones's Generic Serial Bluetooth met Win 10 IoT-Core RPI2 om de omgeving in te stellen.

Opmerking:het duurt 2-3 uur om aan de vereisten te voldoen als u Windows 10 en Visual Studio 2015 nog niet hebt geïnstalleerd, maar het grootste deel van die tijd onbeheerd is.

Wat heb je nodig

Onderdelen:

1. Arduino Uno en standaard A/B USB-kabel

2. HC-06 Bluetooth-module

3. ADXL345 versnellingsmetermodule

4. Overbruggingsdraden mannelijk-mannelijk en mannelijk-vrouwelijk

5. Mini-breadboard

6. Lumia 1520 of ander apparaat dat compatibel is met Windows Phone 10

7. ORICO Bluetooth-module

Projectinstructies

Stap 1:Sluit de accelerometermodule ADXL345 aan op de Arduino

Tijd :5 minuten

Onderdelen :Arduino Uno R3, ADXL345, jumperdraden, mini-breadboard

Hulpprogramma's :Nvt

De ADXL345 is een kleine, dunne, laagvermogen 3-assige MEMS-versnellingsmeter met hoge resolutie (13-bits) meting tot +-16 g. Digitale uitvoergegevens zijn geformatteerd als 16-bits tweetallen en zijn toegankelijk via een SPI (3- of 4-draads) of I2C digitale interface.

De ADXL345 ondersteunt zowel SPI als I2C, we gaan het hier alleen hebben over I2C in dit project. I2C is een 2-draads seriële verbinding, dus we moeten de SDA (Data) en SCL (Clock) lijnen verbinden met Arduino UNO voor communicatie. Op Arduino UNO staat SDA op analoge pin 4 en SCL op analoge pin 5. Zorg ervoor dat zowel de VCC- als de CS-pinnen op de sensor zijn aangesloten op 3.3v. We verbinden CS met 3,3 V om de sensor te vertellen dat we hem als I2C-apparaat gaan gebruiken, en niet als SPI-apparaat.

Stap 2:Bluetooth-module aansluiten

Tijd :5 minuten

Onderdelen :Bluetooth-module, jumperdraden

Hulpprogramma's :Nvt

In dit project gebruiken we HC-06 als de Bluetooth-module - het is veel goedkoper dan de BlueSMiRF Silver-module van SparkFun. Verder heeft de HC-05 de 'volledige' firmware erop, veel AT-commando's en kan zowel master- als slave-module zijn. De HC-06-firmware daarentegen kan alleen een slave-apparaat zijn, met zeer beperkte AT-commando's. De onderstaande tabel toont alle HC-06 firmware-opdrachten met het antwoord:

Sluit eerst de Bluetooth-module aan op het breadboard om verbindingen gemakkelijker te maken. Om de module van stroom te voorzien, voert u een jumper uit van de 5V-voedingsrail van de Arduino naar de Vcc-pin van de module. En voer een mannelijk-mannelijke jumper uit van de GND-pin van de module naar een van de GND-pinnen op de Arduino. Om de seriële communicatie tot stand te brengen, sluit u een mannelijk-mannelijke jumper van de TX-pin van de Bluetooth-module aan op de RX-pin van de Arduino (digitale pin 0) en een andere van de RX-pin van de module op de TX-pin van de Arduino (digitale pin 1).

Opmerking:je kunt geen schetsen uploaden van de Arduino IDE naar de Arduino als je de Bluetooth-TX- en RX-pinnen hebt aangesloten op de Arduino. Koppel ze los wanneer u een schets moet uploaden en sluit ze opnieuw aan zodra de schets met succes is geüpload. In onderstaande schets is te zien dat HC-05 wordt gebruikt. Eigenlijk, zoals hierboven uitgelegd, zijn zowel HC-05 als HC-06 in orde.

Na de Bluetooth- en accelerometerverbinding wordt het echte werk als volgt weergegeven:

Stap 3:Bluetooth-module koppelen met Windows 10-apparaat

Tijd :5 minuten

Onderdelen :Bluetooth-module, Windows 10-apparaat, ORICO Bluetooth-module (optioneel)

Hulpprogramma's :Nvt

De Bluetooth-module voert het SPP-protocol (Serial Protocol over Bluetooth) uit. Dus elk apparaat dat SPP ondersteunt, kan er verbinding mee maken. Op een Windows 10-apparaat ziet dit eruit als een virtuele COM-poort. Zorg ervoor dat de module is ingeschakeld en klaar is om te koppelen voordat u verbinding maakt. De rode LED op de module geeft de status aan:knipperend betekent "klaar om te koppelen", terwijl constant branden betekent "gekoppeld".

Op Windows 10 voor pc navigeert u gewoon naar Instellingen->Apparaten->Bluetooth, opent u Bluetooth en wordt de module "HC-06" op het scherm weergegeven. Tik om het apparaat te koppelen en voer de koppelingscode van het apparaat in. Houd er rekening mee dat de standaard koppelingscode 1234 is en dat de standaard seriële poortsnelheid 9600 Baud is. Vervolgens wordt de Bluetooth-pagina als volgt weergegeven:

Ga voor Windows 10 voor mobiel naar Instellingen->Apparaten->Bluetooth en voer dezelfde stappen uit als beschreven in het bovenstaande gedeelte. En de pagina met het gekoppelde apparaat wordt als volgt weergegeven:

Voor Windows 10 IoT Core-apparaten, bijvoorbeeld Raspberry Pi 2, MBM en Dragon Board 410c, is het koppelingsproces heel anders. Ten eerste, voor Raspberry Pi 2 en MBM die geen ingebouwde Bluetooth-module hebben, moeten we een Bluetooth USB-dongle kopen en aansluiten. Raadpleeg de hardwarecompatibiliteitslijst en kies een geverifieerde Bluetooth USB-dongle.

In dit project kiezen we voor een ORICO BTA-403 module.

Als je dit project op Dragon Board 410c probeert, heb je geen Bluetooth-dongle nodig omdat Dragon Board 410c een ingebouwde Bluetooth-module heeft.

Steek de ORICO BTA-403 Bluetooth USB-dongle als volgt in de USB-interface van Raspberry Pi 2.

Zodra de ORICO BTA-403 Bluetooth USB-dongle is aangesloten, worden berichten weergegeven op het standaard app-scherm van het Windows 10 IoT Core-apparaat.

Voor Bluetooth-koppeling op een Windows 10 IoT Core-apparaat, raadpleegt u de pagina Een BLE-apparaat koppelen en GATT-attribuuttabeldumptool en volgt u "Stap 1 – Stap 6" beschreven in het gedeelte "De sensortag koppelen". Hier zouden we SSH moeten gebruiken om verbinding te maken met de Windows IoT Core en de opdrachtregeltool uit te voeren om het apparaat te configureren.

Opmerking:onthoud dat de BR-modus moet worden gekozen in het hoofdmenu. En de standaard koppelingscode is 1234.

Na succesvolle koppeling wordt de Bluetooth-pagina van het apparaat als volgt weergegeven:

Stap 4:maak het Azure Storage-account

Tijd :10 minuten

Onderdelen :Nvt

Hulpprogramma's :Azure-account

In dit project hebben we Azure Storage Table nodig om de gegevens van het Windows 10 IoT Core-apparaat op te slaan. We kunnen het dus als volgt maken.

(1) Klik in de Azure Management Portal (https://manage.windowsazure.com) op het pictogram "OPSLAG" aan de linkerkant om uw bestaande opslagaccounts (indien aanwezig) te bekijken en klik vervolgens op de knop "+NIEUW" in de linker benedenhoek.

(2) Selecteer in het paneel "NIEUW" de optie "GEGEVENSDIENSTEN" | "OPSLAG" | "SNEL MAKEN". Vul de velden "URL, locatie/affiniteitsgroep en replicatie" in en klik vervolgens op de knop "OPSLAGACCOUNT MAKEN".

(3) Wacht tot de status van het nieuwe opslagaccount wordt weergegeven als "Online".

(4) Selecteer het nieuw aangemaakte opslagaccount en klik vervolgens op TOEGANGSTOETSEN BEHEREN onderaan de pagina. Kopieer de naam van het opslagaccount en een van de toegangssleutels.

Stap 5:Azure Storage-tabel maken

We gebruiken Azure Storage Explorer (het is een open source-hulpprogramma van derden dat beschikbaar is op codeplex:https://azurestorageexplorer.codeplex.com) om de Azure Storage-tabel te maken.

(1) Ga naar account toevoegen en vul de accountnaam en toegangssleutel in. Zodra het account is ingesteld, hebt u toegang tot de opslag met blobcontainers, wachtrijen en tabellen.

(2) Selecteer de tabel en klik op de nieuwe knop en maak als volgt een nieuwe tabel met de naam "Versnellingsmetertabel".

Stap 5:Download en implementeer de code

Tijd :10 minuten

Onderdelen :Nvt

Hulpprogramma's :Nvt

Allereerst, nu we alles hebben aangesloten voor Arduino, download het project "ADXL345_HC06.ino" van (in de code hieronder) en laad het in de Arduino IDE op uw pc. Zorg ervoor dat u de TX/RX-jumperdraden van de HC-06-module loskoppelt en upload vervolgens de schets. Sluit de TX/RX-jumperdraden opnieuw aan op de digitale 0- en digitale 1-pinnen van de Arduino. Sluit de stroom aan en de applicatie draait op Arduino Uno.

Download ten tweede het project "GenericBluetoothSerialUWApp" van github. Gebruik Visual Studio 2015 met Update 1 om "GenericBluetoothSerialUWApp" te laden. Deze app is ontworpen met behulp van onze MVP David Jones's Generic Serial Bluetooth met Win 10 IoT-Core RPI2. Als u wilt dat deze UWP-app op pc wordt uitgevoerd, kiest u x86 of x64 met foutopsporing voor lokale apparaten. Als u wilt dat deze UWP-app op Windows 10 Mobile draait, kiest u ARM met apparaatfoutopsporing. Als u wilt dat deze UWP-app wordt uitgevoerd op een Windows 10 IoT-apparaat, bijvoorbeeld Raspberry Pi 2, zorg er dan voor dat u het punt "Remote Debugging" op uw apparaat instelt.

Open vervolgens MainPage.xaml.cs in Solution Explorer en zoek naar de "dataTransferTick". Voeg uw opslagaccountnaam en toegangssleutel toe die zijn opgeslagen in sectie 4.

Nadat u de HC-06 met uw Windows 10-apparaat hebt gekoppeld, drukt u op F5 vanuit Visual Studio om de app Universal Windows Platform te starten.

Dubbeltik op het "HC-06"-symbool, u vindt de ID- en naamweergave helemaal bovenaan de applicatie als volgt.

Binnenkort kun je zien dat de status van de LED op HC-06 zal veranderen van knipperend naar constant. En de knop "Start Rev" is ingeschakeld zodra het communicatiekanaal van de Bluetooth-module tot stand is gebracht.

Klik op Start Recv om gegevensontvangst in te schakelen. Vervolgens ziet u dat de knop Stop Recv, Process Data en Upload Data zijn ingeschakeld. Klik gewoon op de knop Gegevens verwerken om het valdetectiealgoritme uit te voeren. U ziet de gegevens op Recvd TextBlock en de staat van de persoon die het apparaat draagt.

U kunt nog steeds zien dat de gegevens als volgt in de foutopsporingsvensters van Visual Studio worden weergegeven.

Klik vervolgens op de knop Uploaden om de gegevens naar Azure te uploaden. De gegevens worden elke 3 seconden verzonden. Als u het tijdsinterval wilt wijzigen, kunt u de code in "AzureButton_Click" als volgt wijzigen.

private void AzureButton_Click(object afzender, RoutedEventArgs e) {

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

}

Binnenkort kunt u de gegevens als volgt in AccelerometerTable zien

Download ten derde de "FallDetectionClient" van github. Gebruik Visual Studio 2015 met Update 1 om dit project te laden. Deze applicatie is gebouwd met Windows Universal Temple, dus je kunt hem uitvoeren op Windows 10 PC/Mobile, evenals op een Windows 10 IoT Core-apparaat. Open vervolgens StorageSensor.cs in Solution Explorer en zoek naar de "_accountName" en "_key". Voeg uw opslagaccountnaam en toegangssleutel toe die zijn opgeslagen in sectie 4.

Nu zou je vanuit Visual Studio op F5 moeten kunnen drukken:de app wordt geïmplementeerd en gestart, en je zou dit moeten zien op de uitvoer van het apparaat.

Code

  • Arduino Sketch (ADXL345_HC06.ino)
Arduino-schets (ADXL345_HC06.ino)Arduino
ADXL345 Accelrometer + HC-06 Bluetooth-module
#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# definieer Register_Z0 0x36#define Register_Z1 0x37int ADXAddress =0xA7>> 1; int lezen =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); Draad.begin(); vertraging (100); Wire.beginTransmission (ADXAdres); Wire.write(Register_2D); Wire.write(8); Wire.endTransmission();}void loop() { dubbele tempx =0; char strx[5]; dubbel tempy =0; char stry[5]; dubbele tempz =0; char strz[5]; String gy; Wire.beginTransmission (ADXAdres); Wire.write(Register_X0); Wire.write(Register_X1); Wire.endTransmission(); Wire.requestFrom(ADXAddress, 2); if (Draad.beschikbaar() <=2); { X0 =Draad.lezen(); X1 =Draad.lezen(); X1 =X1 <<8; X_uit =X0 + X1; } Wire.beginTransmission (ADXAdres); Wire.write (Register_Y0); Wire.write(Register_Y1); Wire.endTransmission(); Wire.requestFrom(ADXAddress, 2); if (Draad.beschikbaar() <=2); { Y0 =Draad.lezen(); Y1 =Draad.lezen(); Y1 =Y1 <<8; Y_uit =Y0 + Y1; } Wire.beginTransmission (ADXAdres); Wire.write (Register_Z0); Wire.write(Register_Z1); Wire.endTransmission(); Wire.requestFrom(ADXAddress, 2); if (Draad.beschikbaar() <=2); { Z0 =Draad.lezen(); Z1 =Draad.lezen(); Z1 =Z1 <<8; Z_uit =Z0 + Z1; } Xg =X_uit / 256,00; Yg =Y_uit / 256,00; Zg =Z_uit / 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);}
Bluetooth seriële app
Communiceert met Arduino via HC-06 bluetooth en stuurt ADXL345-gegevens naar Azurehttps://github.com/shijiong/FallDetection/tree/master/GenericBluetoothSerialUWApp
FallDetectionClient
UWP-client-app voor valdetectiehttps://github.com/shijiong/FallDetection/tree/master/FallDetectionClient

Schema's

ADXL345 + HC-06 Complete%20Schematic.fzzSketch voor ADXL345-verbinding ADXL345.fzzSketch voor Bluetooth-moduleverbinding hc-06.fzz

Productieproces

  1. Aanwezigheidssysteem met Arduino en RFID met Python
  2. Human Detection Robotics System met Arduino Uno
  3. Een PM2.5 en PM 10 detectorontwerp voor Windows 10 UWP-app
  4. Bosbrandbewakings- en detectiesysteem (met sms-waarschuwingen)
  5. u-blox LEA-6H 02 GPS-module met Arduino en Python
  6. Arduino en OLED-gebaseerde mobiele automaten
  7. eDOT - op Arduino gebaseerde precisieklok en weerstation
  8. Aanwezigheidssysteem op basis van Arduino en Google Spreadsheet
  9. Arduino-gebaseerd waarschuwingssysteem voor botsingsdetectie
  10. Autobesturing met Arduino Uno en Bluetooth
  11. Arduino en Android-gebaseerd wachtwoordbeveiligd deurslot