Inhoudsopgave:

Drain Clog Detector - Ajarnpa
Drain Clog Detector - Ajarnpa

Video: Drain Clog Detector - Ajarnpa

Video: Drain Clog Detector - Ajarnpa
Video: Забитое ухо из-за инфекции уха или дисфункции евстахиевой трубки 2024, Juli-
Anonim
Image
Image

Laat een verstopte afvoer je niet afremmen! Toen ik terugkwam van onze vakantie, waren mijn vrouw en ik verrast door het water dat de vloer van ons appartement bedekte, en we kwamen erachter dat het niet eens schoon water is, het is overal afvoer. Na het afvoeren van de afvoer en het schoonmaken van de vloer had ik deze vraag: waarom hebben we geen alarmsysteem voor mogelijke afvoerverstoppingen? Verstopte afvoerleidingen kunnen niet alleen uw huis tot stilstand brengen, maar zullen ook extra kosten uit uw portemonnee kosten, gemiddeld $ 206 is de kosten van het opruimen van een verstopte afvoer volgens HomeAdvisor, naast verborgen kosten van beschadigde tapijten, houten meubels, … enz. Ons idee is om zowel huiseigenaren als bedrijven zoals stads-/complexonderhoudsafdelingen en gespecialiseerde dienstverleners te laten beschikken over een efficiënt en intelligent systeem dat de verantwoordelijke zo vroeg mogelijk waarschuwt om actie te ondernemen, wat bijdraagt aan het verrijken van slimme steden met een belangrijke functie.

Het idee Hoewel detectie van verstoppingen kan worden gedaan door middel van een aantal technieken, zoals het gebruik van gassensoren of interne mechanismen, was ons team gefocust op het gebruik van geluid als input, omdat we weten dat kloppen op een buis waar deze is geopend, een ander geluid is dan dat wat er gebeurde wanneer gesloten. Volgens dit eenvoudige concept, als we een model kunnen trainen van de geluidspatronen die optreden op het buisoppervlak tijdens klompen en die patronen optreden in geopende pijpen, kunnen we het model vervolgens toepassen om proactief te detecteren wanneer een klomp begint te componeren, en we dan bel wat rekeningen.

Credits voor

  • Mohamed Hassan
  • Ahmed Emma

Project in detail In dit project worden 3 fasen uitgevoerd: Data verzamelen, Leren & voorspellen.

Voordat we dit systeem in het echte leven konden toepassen, moesten we een geforceerde simulatieomgeving creëren, waar we de leiding hebben, stromend water en op de een of andere manier de verstopping simuleren. Dus we hebben een buis, een waterslang met een waterbron die dit in de badkuip doet en het oppervlak van de badkuip gebruiken om de buis af te sluiten die de klomp vertegenwoordigt. In deze video leggen we uit hoe we de omgeving hebben gebouwd en hoe we data hebben verzameld voor de modeltraining.

En in deze volgende video, die laat zien hoe we het systeem en het model hebben getest, in open modus, dan in verstoppingsmodus en terug naar open modus, echter

Laten we onze implementatie dus stap voor stap onderzoeken:

Stap 1: Het experiment

Het experiment
Het experiment
Het experiment
Het experiment
Het experiment
Het experiment
Het experiment
Het experiment

In dit scenario gebruiken we een kleine waterleiding die is aangesloten op onze hardware en geluidssensor. Hardware leest de sensorwaarde en stuurt deze terug naar Cloud. Dit is gedaan gedurende 10 minuten voor een geblokkeerde buis en vervolgens nog eens 10 minuten voor een buis die niet is geblokkeerd.

Stap 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ik- Arduino

Om het watergeluid in de leiding te detecteren, hebben we een geluidssensor nodig. Raspberry Pi 3 heeft echter geen analoge GPIO. Om dit probleem aan te pakken, gebruiken we Arduino omdat Arduino analoge GPIO heeft. Dus we verbinden de Grove Sound-sensor met het Grove Arduino-schild en verbinden Shield met Arduino UNO 3. Vervolgens verbinden we Arduino en Raspberry met een USB-kabel. Voor meer informatie over de Grove Sound-sensor kunt u het gegevensblad raadplegen. U vindt in het gegevensblad een voorbeeldcode voor het uitlezen van sensorwaarden. Voorbeeldcode is bijna te gebruiken met kleine wijzigingen. In onderstaande code verbinden we de sensor met A0 in schild. Om op serieel te schrijven, gebruiken we de functie Serial.begin(). Om te communiceren met Raspberry, is de baudrate ingesteld op 115200. Gegevens worden naar Raspberry verzonden als deze groter is dan een bepaalde drempel om de ruis te verminderen. Er zijn veel proeven gedaan om de gewenste drempel- en vertragingswaarden te kiezen. De drempel bleek 400 te zijn en de vertragingswaarde 10 milliseconde. Drempel is gekozen om normale ruis te filteren en ervoor te zorgen dat alleen zinvolle gegevens naar de cloud worden verzonden. Er is vertraging gekozen om ervoor te zorgen dat de sensor eventuele veranderingen in het stroomgeluid in de buis onmiddellijk detecteert.

II- Raspberry Pi 3Om Android-dingen op Raspberry te downloaden, kunt u de nieuwste versie downloaden van Android Things Console. In dit project gebruiken we versie: OIR1.170720.017. volg de stappen op de Raspberry-site om het besturingssysteem op de Raspberry te installeren, voor Windows kunt u deze stappen gebruiken. Na de installatie kunt u de Raspberry via USB op uw computer aansluiten. Gebruik vervolgens in uw computerconsole onderstaande opdracht om Raspberry IP te krijgen

nmap -sn 192.168.1.*

Nadat je het IP hebt gekregen, maak je verbinding met je Raspberry met behulp van onderstaande opdracht:

adb verbinden

Om je Raspberry te verbinden met Wifi (voeg je SSID & wachtwoord toe)

adb ben startservice

-n com.google.wifisetup/. WifiSetupService

-een WifiSetupService. Connect

-e ssid *****

-e wachtwoordzin ****

Stap 3: Google Cloud - Registratie

Google Cloud - Registratie
Google Cloud - Registratie
Google Cloud - Registratie
Google Cloud - Registratie
Google Cloud - Registratie
Google Cloud - Registratie
Google Cloud - Registratie
Google Cloud - Registratie

Google biedt een gratis niveau voor alle gebruikers voor een jaar met een plafond van 300 $, dankzij Google:). Volg schermen om een nieuw project te maken in Google Cloud

Stap 4: Google Cloud - Pub/Sub

Google Cloud - Pub/Sub
Google Cloud - Pub/Sub
Google Cloud - Pub/Sub
Google Cloud - Pub/Sub
Google Cloud - Pub/Sub
Google Cloud - Pub/Sub
Google Cloud - Pub/Sub
Google Cloud - Pub/Sub

Google Cloud Pub/Sub is een volledig beheerde realtime berichtenservice waarmee u berichten kunt verzenden en ontvangen tussen onafhankelijke apps.

Stap 5: Google Cloud - IOT Core

Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core

II- IOT CoreEen volledig beheerde service voor het eenvoudig en veilig verbinden, beheren en opnemen van gegevens van wereldwijd verspreide apparaten. IOT Core is nog steeds bèta, om er toegang toe te krijgen, moet u een verzoek indienen bij Google. We hebben het verzoek gedaan, onze rechtvaardiging was deze wedstrijd. Google goedgekeurd, nogmaals bedankt aan Google:). Raspberry stuurt sensorgegevens naar IOT Core, die de metingen doorstuurt naar het PubSub-onderwerp dat in de vorige stap is gemaakt

Stap 6: Google Cloud - Cloudfuncties

Google Cloud - Cloudfuncties
Google Cloud - Cloudfuncties
Google Cloud - Cloudfuncties
Google Cloud - Cloudfuncties

Cloud Functions is een serverloze omgeving om cloudservices te bouwen en te verbinden. Trigger voor deze functie is het PubSup-onderwerp dat in stap 1 is gemaakt.;; Deze functie wordt geactiveerd wanneer nieuwe waarde wordt geschreven in PubSup en schrijft in Cloud DataStore met Kind "SoundValue"

Stap 7: Google Cloud - Cloud DataStore

Google Cloud Datastore is een NoSQL-documentdatabase die is gebouwd voor automatisch schalen, hoge prestaties en eenvoudige applicatie-ontwikkeling. Hoewel de Cloud Datastore-interface veel van dezelfde functies heeft als traditionele databases, verschilt het als NoSQL-database van hen in de manier waarop het relaties tussen gegevensobjecten beschrijft. Geen installatie nodig, want zodra de Cloud Functions sensorwaarden naar DataStore schrijft, worden gegevens toegevoegd aan DataStore

Stap 8: Google Cloud - BigQuery

Google Cloud - BigQuery
Google Cloud - BigQuery
Google Cloud - BigQuery
Google Cloud - BigQuery
Google Cloud - BigQuery
Google Cloud - BigQuery
Google Cloud - BigQuery
Google Cloud - BigQuery

We verzamelen een monster 10 min van normale leiding en 10 min van geblokkeerde leiding met een verschil van precies 1 uur tussen de 2 iteraties. Na het downloaden van gegevens DataStore en enige manipulatie om classificatie voor elke rij toe te voegen. Nu hebben we 2 csv-bestanden, één voor elke categorie. Als best practice uploadt u gegevens-CSV-bestanden eerst naar Cloud Storage. In het onderstaande scherm maken we een nieuwe bucket en uploaden we de 2 CSV-bestanden. Aangezien deze bucket alleen voor analyse wordt gebruikt, hoeft u geen Multiregionale bucket te kiezen. Maak vervolgens een nieuwe dataset en nieuwe tabel in BigQuery en upload het 2 CSV-bestand van bucket naar de nieuwe tafel

Stap 9: Google Cloud - Data Studio

Google Cloud - Data Studio
Google Cloud - Data Studio
Google Cloud - Data Studio
Google Cloud - Data Studio
Google Cloud - Data Studio
Google Cloud - Data Studio

Vervolgens gebruiken we Data Studio om wat inzichten op te doen. Data Studio leest gegevens uit de BigQuery-tabel. Uit grafieken kunnen we het verschil zien tussen 2 categorieën in aantal telemetrieën en som van waarden per minuut. Op basis van deze inzichten kunnen we een eenvoudig model ontwerpen, pijp wordt als geblokkeerd beschouwd als in 3 opeenvolgende minuten het aantal telemetriewaarden die hoger zijn dan de geluidsdrempel (400) meer dan 350 telemetrieën is. en in 3 opeenvolgende minuten is de telling van de telemetriewaarde die hoger is dan de vonkdrempel (720) meer dan 10 telemetriewaarden.

Stap 10: Voorspellingsfase

Voorspellingsfase
Voorspellingsfase

We verwijzen naar een meetwaarde, wanneer deze een bepaalde waarde (THRESHOLD_VALUE) overschrijdt die was ingesteld op 350 die ruis en lagere waterstroomsnelheden in de buis filtert, zodat deze niet als een meetwaarde worden beschouwd

Gegevensanalyse toonde aan dat in de open modus het aantal metingen minder dan 100 is, maar in de verstoppingsmodus zijn de waarden veel hoger (bereikte 900 per minuut), maar in zeldzame gevallen ook minder dan 100. Deze gevallen worden echter niet consequent herhaald, en gedurende drie opeenvolgende minuten overschreed het totale aantal metingen altijd 350. Als de open modus in dezelfde drie minuten minder dan 300 is, kunnen we deze regel vol vertrouwen stellen: Regel # 1 Voor drie minuten in een ruwe, als totale metingen > 350, dan wordt een verstopping geconstateerd. We hebben geconstateerd dat de maximale waarde die wordt bereikt in de open modus een bepaalde waarde (SPARK_VALUE) die 770 blijkt te zijn niet overschrijdt, daarom hebben we deze regel toegevoegd: Regel # 2 Als de waarde > 350 wordt gelezen, wordt meestal een verstopping gedetecteerd.

Door beide regels te combineren, kregen we een gemakkelijke manier om de detectielogica te implementeren, zoals weergegeven. Merk op dat onderstaande code is geïmplementeerd op Arduino, die vervolgens de ontvangen telemetrie evalueert op basis van ons model en naar Raspberry stuurt als de pijp verstopt of open is.

Stap 11: Coderen

Alle code voor Arduino, Raspberry & Cloud Function is te vinden op Github.

Voor meer informatie kun je deze link checken

Aanbevolen: