Inhaltsverzeichnis:
- Schritt 1: Das Experiment
- Schritt 2: Hardware
- Schritt 3: Google Cloud - Registrierung
- Schritt 4: Google Cloud – Pub/Sub
- Schritt 5: Google Cloud - IOT-Kern
- Schritt 6: Google Cloud – Cloud-Funktionen
- Schritt 7: Google Cloud – Cloud DataStore
- Schritt 8: Google Cloud – BigQuery
- Schritt 9: Google Cloud – Data Studio
- Schritt 10: Vorhersagephase
- Schritt 11: Code
Video: Abflussverstopfungsdetektor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
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
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
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 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 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
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
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
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
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
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