Inhoudsopgave:

Noodsituaties detecteren - Qualcomm Dragonboard 410c - Ajarnpa
Noodsituaties detecteren - Qualcomm Dragonboard 410c - Ajarnpa

Video: Noodsituaties detecteren - Qualcomm Dragonboard 410c - Ajarnpa

Video: Noodsituaties detecteren - Qualcomm Dragonboard 410c - Ajarnpa
Video: #HITB2021AMS D1T2 - Exploiting QSEE, The Raelize Way - Cristofaro Mune and Niek Timmers 2024, Juli-
Anonim
Noodsituaties detecteren - Qualcomm Dragonboard 410c
Noodsituaties detecteren - Qualcomm Dragonboard 410c
Noodsituaties detecteren - Qualcomm Dragonboard 410c
Noodsituaties detecteren - Qualcomm Dragonboard 410c
Noodsituaties detecteren - Qualcomm Dragonboard 410c
Noodsituaties detecteren - Qualcomm Dragonboard 410c

Op zoek naar beveiligingssystemen die werken aan het bewaken van noodsituaties, is het mogelijk om op te merken dat het te moeilijk is om alle geregistreerde informatie te verwerken. Daarom hebben we besloten om onze kennis op het gebied van audio/beeldverwerking, sensoren en actuatoren te gebruiken om één compleet systeem te creëren dat het mogelijk maakt om situaties te voorspellen waarin het leven van mensen in gevaar is.

Dit project heeft een lokale sensor en externe apparaten om gegevens te verzamelen en naar het drakenbord te sturen, dat verwerkingskracht heeft die belangrijke informatie uit de ontvangen gegevens kan halen.

Het externe apparaat is een Arduino-bord met een module HC-06 die mogelijk is om alle informatie over te dragen, en een goedkoop breed netwerk dat grote hoeveelheden gegevens kan verwerken.

Stap 1: Vereiste componenten

Allereerst moet je beslissen welke sensoren en actuatoren je gaat gebruiken en de architectuurschets maken.

In ons geval gebruiken we deze sensoren aangesloten in ARDUINO Pro Mini, hieronder vermeld:

  • PIR (Passief Infrarood -- Aanwezigheidssensor)
  • DHT 11 (Vochtigheids- en temperatuursensor)
  • CO-sensor (koolmonoxidesensor)
  • Geluidssensor

Aandrijvingen:

  • motor servo
  • zoemer

Communicatie:

Bluetooth-module HC-06

Voor de Dragonboard 410c hebben we enkele sensoren en software om alle gegevensinvoer te verwerken:

Sensoren:

  • DHT 11
  • Zonlichtsensor

Aandrijvingen:

  • Relais
  • Ledstatus
  • Zoemer

Stap 2: Afstandsbediening maken

Afstandsbediening maken
Afstandsbediening maken

Nu is het tijd om alle volgende componenten op het Arduino-bord aan te sluiten, een apparaat te creëren dat de gegevens van de omgeving (ruis, vochtigheid, temperatuur, enz.) ontvangt en naar het Dragonboard stuurt door de Bluetooth-module HC-06.

Het is noodzakelijk om aandacht te besteden aan de aansluitingen, omdat alle sensoren specifieke plaatsen hebben om aan te sluiten.

Op het systeem is het mogelijk om meer dan één apparaat te hebben om gegevens te verzamelen. Hoe meer apparaten u in de omgeving hebt geïnstalleerd, hoe nauwkeuriger de diagnose die door de gegevensverwerking wordt gegenereerd. Omdat het mogelijk zal zijn om een breder scala aan informatie te extraheren die nuttig kan zijn.

We hebben besloten om een Arduino-bord te gebruiken omdat het meer compatibele sensoren heeft en het mogelijk is om deze externe apparaten op verschillende plaatsen te installeren, waardoor meer informatie wordt verzameld.

Het lokale apparaat is de DragonBoard 410c, die audio, video, digitale en analoge informatie verwerkt met uw krachtige SnapDragon 410-processor.

Plaatsing van de componenten (Remote Devide)

Het ene stuk heeft een aantal pinnen die in de juiste pinnen op het arduino pro mini-bord moeten worden aangesloten.

Bluetooth-module HC-06 heeft 4 pinnen:

  • TX (zender) -> aangesloten op de pin van de RX Arduino
  • RX (ontvanger) -> aangesloten op de TX Arduino's pin
  • VCC -> aangesloten op de 5v
  • GND

DHT 11-sensor heeft 4 pinnen (maar slechts 3 in gebruik):

  • Signaal -> aangesloten op een digitale pin
  • VCC -> aangesloten op de 5v
  • GND

PIR-sensor heeft 3 pinnen:

  • Signaal -> aangesloten op een digitale pin
  • VCC -> aangesloten op de 5v
  • GND

Gassensor (MQ) heeft 4 pinnen:

  • Digital OUT -> aangesloten op een digitale pin (als je digitale informatie wilt)
  • Analog OUT -> in ons geval gebruiken we dit aangesloten op een analoge pin
  • VCC -> aangesloten op de 5v
  • GND

Ruissensor (KY-038) heeft 3 pinnen:

  • Signaal -> aangesloten op een analoge pin
  • VCC -> aangesloten op de 5v
  • GND

Code voor Arduino-afstandsbedieningsapparaat:

/* * Arduino verzendt gegevens via Blutooth * * De waarde van sensoren wordt gelezen, aaneengeschakeld op * String en verzonden via seriële poort. */ #include "DHT.h" #define DHTPIN 3 #define DHTTYPE DHT22 #define PIRPIN 9 #define COPIN A6 DHT dht(DHTPIN, DHTTYPE); float vochtigheid, temperatuur; booleaanse pir = 0; int co, microfoon; Tekenreeks bericht = ""; char naam[40]; void setup() { Serial.begin(9600); dht.begin(); } void loop() {humidaty = dht.readHumidity(); temperatuur = dht.readTemperature(); pir = digitaal lezen (PIRPIN); co = analoog lezen (COPIN); microfoon = analoog lezen (A0); bericht = "#;" +String(vochtigheid) + ";" + String(temperatuur) +";"+ String(mic) +";"+ String(pir)+ ";" + String(co) + ";#" +"\n"; Serial.print(bericht); vertraging (2000); }

Code uitleg:

Alle pinnen die in de Arduino worden gebruikt, worden aan het begin van de code vermeld en de respectieve bibliotheken die nodig zijn voor de werking van de sensoren worden geïnitialiseerd. Alle gegevens worden doorgegeven aan de respectieve variabelen die elke 2000 milliseconden de waarden ontvangen die van elke sensor worden gelezen, vervolgens worden ze allemaal aaneengeschakeld in een string en vervolgens in serie geschreven. Van daaruit is het heel eenvoudig met de pyton-code die aanwezig is in het DragonBoard om dergelijke gegevens vast te leggen.

Stap 3: Software en bibliotheken

Om alle ontvangen gegevens te verwerken en het beveiligingssysteem te besturen, is het noodzakelijk om enkele software en bibliotheken in de Qualcomm DragonBoard 410c te gebruiken.

In dit specifieke project gebruiken we:

Software:

  • Python
  • Arduino

Platen:

  • Amazon AWS -> online server
  • Phant -> Hostgegevensservice

Bibliotheken:

  • OpenCV - Videoverwerking (https://opencv-python-tutroals.readthedocs.io/en/latest/)
  • PyAudio - Audioverwerking (https://people.csail.mit.edu/hubert/pyaudio/)
  • Golf (https://www.physionet.org/physiotools/wave-installation.shtm)
  • AudioOp (https://docs.python.org9https://scikit-learn.org/stable/install.html/2/library/audioop.html)
  • Numpy (https://www.numpy.org)
  • SciKit1 - Train en voorspel machine learning (https://scikit-learn.org/stable/install.html)
  • cPickle - Sla de machine learning-parameters op (https://pymotw.com/2/pickle/)
  • MRAA - Gebruik de GPIO's (https://iotdk.intel.com/docs/master/mraa/python/)
  • UPM - Gebruik de GPIO's (https://github.com/intel-iot-devkit/upm)
  • PySerial - Gebruik voor seriële communicatie met Bluetooth-apparaat (https://pythonhosted.org/pyserial/)

Stap 4: SSH gebruiken en Libs installeren

Allereerst moet je het IP-adres van het Dragonboard krijgen, om dat te doen, moet je het DragonBoard aanzetten dat is verbonden met een muis, een toetsenbord en een HDMI-monitor. Wanneer het bord is ingeschakeld, moet u verbinding maken met een netwerk, dan gaat u naar de terminal en voert u het commando uit:

sudo ifconfig

daarna kunt u het IP-adres krijgen.

Met het IP-adres heb je via SHH toegang tot het Dragonboard, daarvoor moet je een terminal openen in een computer die is aangesloten op hetzelfde netwerk als het bord. In de terminal kun je het commando uitvoeren:

ssh linaro@{IP}

(je moet {IP} vervangen door het IP-adres dat je in het Dragonboard krijgt).

De eerste lib die u moet installeren, is de mraa lib. Om dat te doen, moet je de volgende opdracht in de terminal uitvoeren:

sudo add-apt-repository ppa:mraa/mraa && sudo apt-ge;t update && sudo apt-get install libmraa1 libmraa-dev mraa-tools python-mraa python3-mraa

Om opencv voor python te installeren, hoeft u alleen de opdracht uit te voeren:

sudo apt-get install python-opencv

Om PyAudio te installeren, moet je de opdracht uitvoeren:

sudo apt-get install python-pyaudio python3-pyaudio

De libs WAVE en AudioOp zijn al in het bord geïnstalleerd. Om numpy te installeren, moet je de opdracht uitvoeren:

sudo apt-get install python-numpy python-scipy

De laatste lib die je moet installeren is de scikit, om het te installeren moet pip geïnstalleerd zijn. Dan hoef je alleen de opdracht uit te voeren:

pip installeer scikit-lear

Stap 5: Bluetooth-protocol

Bluetooth-protocol
Bluetooth-protocol
Bluetooth-protocol
Bluetooth-protocol
Bluetooth-protocol
Bluetooth-protocol

DragonBoard Verbinding met de Arduino via Bluetooth

De Bluetooth-module (HC-06) werd aanvankelijk aangesloten op de Arduino Nano volgens het volgende voorbeeld:

Gebruik de grafische interface van Linaro (besturingssysteem dat wordt gebruikt in het huidige project in DragonBoard), klik aan de rechterkant van de onderste balk op het Bluetooth-symbool en klik vervolgens op "Nieuw apparaat instellen" en configureer met uw Bluetooth-module en laat deze gekoppeld. Controleer of uw module daadwerkelijk is verbonden door nogmaals op het Bluetooth-symbool te klikken, klik op "Apparaten…" en kijk of de naam van uw apparaat wordt vermeld en verbonden. Selecteer nu uw apparaat in het scherm "Bluetooth-apparaten" en klik er met de rechtermuisknop op en noteer de poort waarop uw Bluetooth-module is aangesloten (bijv.: "rfcomm0"). Opmerking: de poortnaam waarmee uw apparaat is verbonden, is belangrijk voor de volgende stap om gegevensuitwisseling in te schakelen.

DragonBoard-gegevensuitwisseling en Bluetooth tot stand brengen

In principe volgen we de stap voor stap van de link: https://www.uugear.com/portfolio/bluetooth-communi… maar we hebben niet het deel van de koppeling uitgevoerd, alleen de uitvoering van de python-codes en Arduino. In python werd de seriële bibliotheek gebruikt die is geïnitialiseerd in de poort die is verbonden met bluetooth, vandaar dat de python-code de gegevens leest van de sensoren die via de bluetooth-module op de arduino zijn aangesloten.

Stap 6: Mezzanine gebruiken op DragonBoard 410c

Mezzanine gebruiken op DragonBoard 410c
Mezzanine gebruiken op DragonBoard 410c

Om de verbindingen tussen het drakenbord en de onderdelen te maken, gebruiken we een soort schild genaamd Mezannine, ontwikkeld door 96boards.

Met behulp van dit schild wordt het aansluiten van randapparatuur een stuk eenvoudiger.

De connectoren die worden gebruikt, komen uit de ontwikkelingskit van de Grove, dus het gebruikt gewoon een speciale kabel die in beide richtingen wordt aangesloten, Alle onderdelen zijn gemakkelijk te vinden op deze website:

We gebruiken deze kits hieronder:

  • Grove Relais
  • Grove Zonlichtsensor
  • Grove led-aansluiting
  • Grove temp&humi-sensor
  • Grove-zoemer

Stap 7: DragonBoard 410c-software

Het deel van het programma in het DragonBoard is gecodeerd in Python en het programma dat op de Arduino wordt gebruikt, is ontwikkeld in C++. Elke 2 minuten leest de Arduino alle sensoren die eraan zijn bevestigd. Vervolgens stuurt de Arduino de meting via Bluetooth naar het DragonBoard. Het DragonBoard combineert de uitlezing van de Arduino met de uitlezing die het maakt door het Mezzanine-schild met de functies van de audio- en videovoorbeelden.

Met deze gegevens probeert de Raad te voorspellen of er sprake is van een noodsituatie. Het bestuur stuurt met behulp van de Phant de ruwe data en de voorspelling die het heeft gedaan naar de Amazon Web Service. Als het bord voorspelt dat het een vreemde situatie is, probeert het de gebruiker te waarschuwen door een led en zoemer in de Mezzanine te laten knipperen en te laten zien in de webapplicatie. In de webapplicatie is het ook mogelijk om de ruwe data te zien om te begrijpen wat er op dit gebied gebeurt.

Aanbevolen: