Inhaltsverzeichnis:

Abflussverstopfungsdetektor - Gunook
Abflussverstopfungsdetektor - Gunook

Video: Abflussverstopfungsdetektor - Gunook

Video: Abflussverstopfungsdetektor - Gunook
Video: Kempinger 292. Regen- und Schmutzwasser Grundleitung HD gespült, mit Double Barrel und Flunder 2024, November
Anonim
Image
Image

Lassen Sie sich von einem verstopften Abfluss nicht ausbremsen! Als wir aus unserem Urlaub zurückkamen, waren ich und meine Frau überrascht von dem Wasser, das den Boden unserer Wohnung bedeckte, und wir stellten fest, dass es nicht einmal sauberes Wasser ist, es ist überall Abfluss. Nachdem ich den Abfluss gereinigt und den Boden gereinigt hatte, hatte ich diese Frage: Warum haben wir kein Alarmsystem für mögliche Verstopfungen des Abflusses? Verstopfte Abflüsse können nicht nur Ihr Zuhause zum Stillstand bringen, sondern auch zusätzliche Kosten aus Ihrer Tasche verbrauchen. Laut HomeAdvisor kosten durchschnittlich 206 US-Dollar für die Reinigung eines verstopften Abflusses, zusätzlich zu den versteckten Kosten für beschädigte Teppiche, Holzmöbel usw. Unsere Idee ist es, Hausbesitzern sowie Unternehmen wie Stadt-/Compound-Wartungsabteilungen und spezialisierten Dienstleistern ein effizientes und intelligentes System zur Verfügung zu stellen, das die Verantwortlichen so früh wie möglich zum Handeln alarmiert, was dazu beiträgt, Smart Cities um eine wichtige Besonderheit.

Die IdeeObwohl die Erkennung von Verstopfungen durch eine Reihe von Techniken erfolgen kann, wie z. B. mit Gassensoren oder internen Mechanismen, konzentrierte sich unser Team darauf, Geräusche als Eingabe zu verwenden, da wir wissen, dass das Klopfen auf ein Rohr, wo es geöffnet ist, ein anderes Geräusch ist als das, was passiert ist beim Schließen. Nach diesem einfachen Konzept können wir, wenn wir ein Modell trainieren können, die Schallmuster, die auf der Rohroberfläche während Verstopfungen auftreten, sowie diese Muster in geöffneten Rohren, dann können wir das Modell anwenden, um proaktiv zu erkennen, wenn sich eine Verstopfung zu bilden beginnt, und dann einige Rechnungen klingeln.

Guthaben für

  • Mohamed Hassan
  • Ahmed Emam

Projekt im Detail 3 Phasen werden in diesem Projekt umgesetzt: Daten sammeln, Lernen & Vorhersagen.

Bevor wir dieses System im wirklichen Leben anwenden konnten, mussten wir eine erzwungene Simulationsumgebung erstellen, in der wir das Rohr, fließendes Wasser und irgendwie die Verstopfung simulieren. Wir haben also ein Rohr, einen Wasserschlauch mit einer Wasserquelle, die dies in der Badewanne tut, und die Wannenoberfläche verwenden, um das Rohr zu schließen, das die Verstopfung darstellt. In diesem Video erklären wir, wie wir die Umgebung aufgebaut und Daten für das Modelltraining gesammelt haben.

Und in diesem nächsten Video, das zeigt, wie wir die Tests für das System und das Modell durchgeführt haben, im offenen Modus, dann im Clog-Modus und zurück in den offenen Modus

Also, lassen Sie uns unsere Implementierung Schritt für Schritt erkunden:

Schritt 1: Das Experiment

Das Experiment
Das Experiment
Das Experiment
Das Experiment
Das Experiment
Das Experiment
Das Experiment
Das Experiment

In diesem Szenario verwenden wir eine kleine Wasserleitung, die mit unserer Hardware und unserem Schallsensor verbunden ist. Die Hardware liest den Sensorwert und sendet ihn zurück an die Cloud. Dies wurde für 10 Minuten für ein blockiertes Röhrchen getan, dann weitere 10 Minuten für ein Röhrchen, das nicht blockiert ist.

Schritt 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ich-Arduino

Um das Wassergeräusch im Rohr zu erkennen, benötigen wir einen Schallsensor. Raspberry Pi 3 hat jedoch kein analoges GPIO. Um dieses Problem zu lösen, verwenden wir Arduino, da Arduino über analoges GPIO verfügt. Also verbinden wir Grove Sound Sensor mit Grove Arduino Shield und verbinden Shield mit Arduino UNO 3. Dann verbinden wir Arduino & Raspberry mit einem USB-Kabel. Weitere Informationen zum Grove Sound-Sensor finden Sie im Datenblatt. Im Datenblatt finden Sie einen Beispielcode zum Auslesen von Sensorwerten. Beispielcode wird fast bei kleinen Änderungen verwendet. Im folgenden Code verbinden wir den Sensor mit A0 in der Abschirmung. Um auf seriell zu schreiben, verwenden wir die Funktion Serial.begin(). Zur Kommunikation mit Raspberry Baudrate auf 115200 eingestelltDaten werden an Raspberry gesendet, wenn sie größer als ein bestimmter Schwellenwert sind, um das Rauschen zu unterdrücken Viele Versuche wurden durchgeführt, um die gewünschten Schwellenwerte und Verzögerungswerte auszuwählen. Der Schwellenwert beträgt 400 & der Verzögerungswert beträgt 10 Millisekunden. Der Schwellenwert wurde ausgewählt, um normales Rauschen zu filtern und sicherzustellen, dass nur aussagekräftige Daten an die Cloud gesendet werden. Die Verzögerung wurde ausgewählt, um sicherzustellen, dass der Sensor alle Änderungen des Strömungsgeräuschs im Rohr sofort erkennt.

II- Raspberry Pi 3Um Android Things auf Raspberry herunterzuladen, können Sie die neueste Version von der Android Things Console herunterladen. In diesem Projekt verwenden wir Version: OIR1.170720.017. Folgen Sie den Schritten auf der Raspberry-Site, um das Betriebssystem auf dem Raspberry zu installieren. Für Windows können Sie diese Schritte verwenden Nach der Installation können Sie den Raspberry über USB mit Ihrem Computer verbinden. Verwenden Sie dann in Ihrer Computerkonsole den folgenden Befehl, um Raspberry IP zu erhalten

nmap -sn 192.168.1.*

Nachdem Sie die IP erhalten haben, verbinden Sie sich mit dem folgenden Befehl mit Ihrem Raspberry

adb connect

Um Ihren Raspberry mit Wifi zu verbinden (fügen Sie Ihre SSID und Ihr Passwort hinzu)

adb bin startservice

-n com.google.wifisetup/. WifiSetupService

-a WifiSetupService. Connect

-e ssid *****

-e Passphrase ****

Schritt 3: Google Cloud - Registrierung

Google Cloud - Registrierung
Google Cloud - Registrierung
Google Cloud - Registrierung
Google Cloud - Registrierung
Google Cloud - Registrierung
Google Cloud - Registrierung
Google Cloud - Registrierung
Google Cloud - Registrierung

Google bietet allen Benutzern eine kostenlose Stufe für ein Jahr mit einer Obergrenze von 300 $ an, Danke an Google:). Folgen Sie den Bildschirmen, um ein neues Projekt in Google Cloud zu erstellen

Schritt 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 ist ein vollständig verwalteter Echtzeit-Messaging-Dienst, mit dem Sie Nachrichten zwischen unabhängigen Anwendungen senden und empfangen können.

Schritt 5: Google Cloud - IOT-Kern

Google Cloud - IOT-Kern
Google Cloud - IOT-Kern
Google Cloud - IOT-Kern
Google Cloud - IOT-Kern
Google Cloud - IOT-Kern
Google Cloud - IOT-Kern

II- IOT Core Ein vollständig verwalteter Service für die einfache und sichere Verbindung, Verwaltung und Aufnahme von Daten von global verteilten Geräten. IOT Core ist noch Beta, um darauf zugreifen zu können, müssen Sie eine Anfrage mit Begründung an Google stellen. Wir haben den Antrag gestellt, unsere Begründung war dieser Wettbewerb. Google genehmigt, Danke nochmal an Google:). Raspberry sendet Sensordaten an IOT Core, der die Messwerte an das im vorherigen Schritt erstellte PubSub-Thema weiterleitet

Schritt 6: Google Cloud – Cloud-Funktionen

Google Cloud – Cloud-Funktionen
Google Cloud – Cloud-Funktionen
Google Cloud – Cloud-Funktionen
Google Cloud – Cloud-Funktionen

Cloud Functions ist eine serverlose Umgebung zum Erstellen und Verbinden von Cloud-Diensten. Auslöser für diese Funktion ist das in Schritt 1 erstellte PubSup-Thema.;; Diese Funktion wird ausgelöst, wenn ein neuer Wert in PubSup geschrieben und in Cloud DataStore mit Kind "SoundValue" geschrieben wird

Schritt 7: Google Cloud – Cloud DataStore

Google Cloud Datastore ist eine NoSQL-Dokumentdatenbank, die für automatische Skalierung, hohe Leistung und einfache Anwendungsentwicklung entwickelt wurde. Die Cloud Datastore-Benutzeroberfläche bietet zwar viele der gleichen Funktionen wie herkömmliche Datenbanken, unterscheidet sich jedoch als NoSQL-Datenbank in der Art und Weise, wie sie Beziehungen zwischen Datenobjekten beschreibt. Keine Einrichtung erforderlich, da die Cloud Functions-Sensorwerte, sobald sie Sensorwerte in den DataStore schreiben, Daten zum DataStore hinzugefügt werden

Schritt 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

Wir nehmen eine Probe 10 Minuten von einem normalen Rohr und 10 Minuten von einem blockierten Rohr mit einem Unterschied von genau 1 Stunde zwischen den 2 Iterationen. Nachdem Sie DataStore heruntergeladen haben, nehmen Sie einige Manipulationen vor, um eine Klassifizierung für jede Zeile hinzuzufügen. Jetzt haben wir 2 CSV-Dateien, eine für jede Kategorie. Laden Sie als Best Practice Daten-CSV-Dateien zuerst in Cloud Storage hoch. Im folgenden Bildschirm erstellen wir einen neuen Bucket und laden die 2 CSV-Dateien hoch Da dieser Bucket nur für die Analyse verwendet wird, müssen Sie keinen Multi-Regional-Bucket auswählen der neue tisch

Schritt 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

Dann verwenden wir Data Studio, um einige Erkenntnisse zu gewinnen. Data Studio liest Daten aus der BigQuery-Tabelle. Aus Diagrammen können wir den Unterschied zwischen 2 Kategorien in der Anzahl der Telemetrien und der Summe der Werte pro Minute erkennen. Basierend auf diesen Erkenntnissen können wir ein einfaches Modell entwerfen, das Rohr gilt als blockiert, wenn in 3 aufeinanderfolgenden Minuten die Anzahl der Telemetriewerte, die über dem Rauschschwellenwert (400) liegen, mehr als 350 Telemetriewerte beträgt. und in 3 aufeinanderfolgenden Minuten die Anzahl der Telemetriewerte, die höher als der Funkenschwellenwert (720) sind, mehr als 10 Telemetrien beträgt.

Schritt 10: Vorhersagephase

Vorhersagephase
Vorhersagephase

Wir beziehen uns auf einen Messwert, wenn er einen bestimmten Wert (THRESHOLD_VALUE) überschreitet, der auf 350 gesetzt wurde, der Geräusche und niedrigere Wasserdurchflussraten in der Röhre filtert, als Messwert angesehen werden

Die Datenanalyse ergab, dass die Anzahl der Messwerte im offenen Modus weniger als 100 beträgt, im Clog-Modus jedoch die Werte weit höher sind (erreicht 900 pro Minute), in seltenen Fällen aber auch weniger als 100. Diese Fälle werden jedoch nicht konsequent wiederholt, und für drei aufeinanderfolgende Minuten überstieg die Gesamtzahl der Messwerte immer 350. Wenn der offene Modus in denselben drei Minuten weniger als 300 ergibt, könnten wir getrost diese Regel aufstellen: Regel Nr. 1 Für drei Minuten in einem Rohzustand, wenn Gesamtmesswerte > 350, dann wird eine Verstopfung erkannt. Wir haben festgestellt, dass der im offenen Modus erreichte Maximalwert einen bestimmten Wert (SPARK_VALUE) nicht überschreitet, der als 770 gefunden wird, also haben wir diese Regel hinzugefügt: Regel # 2 Wenn der Messwert > 350 ist, wird meistens eine Verstopfung erkannt.

Die Kombination beider Regeln gab uns eine einfache Möglichkeit, die Erkennungslogik wie gezeigt zu implementieren. Beachten Sie, dass der folgende Code auf Arduino bereitgestellt wurde, der dann die empfangenen Telemetrien basierend auf unserem Modell auswertet und an Himbeere sendet, wenn die Leitung verstopft oder geöffnet ist.

Schritt 11: Code

Den gesamten Code für Arduino, Raspberry & Cloud Functions finden Sie auf Github.

Für weitere Informationen können Sie diesen Link überprüfen