Cuprins:

Detector de înfundare de scurgere: 11 pași (cu imagini)
Detector de înfundare de scurgere: 11 pași (cu imagini)

Video: Detector de înfundare de scurgere: 11 pași (cu imagini)

Video: Detector de înfundare de scurgere: 11 pași (cu imagini)
Video: Desfundare scurgere bucatarie 2024, Iulie
Anonim
Image
Image

Nu lăsați o scurgere înfundată să vă încetinească! Întorcându-ne din vacanță, eu și soția mea am fost surprinși de apa care acoperea podeaua apartamentului nostru și am aflat că nici măcar nu este apă curată, este scurgută peste tot. După ce am curățat scurgerea și am curățat podeaua, am avut această întrebare: de ce nu avem un sistem de alarmă pentru potențiali saboți de scurgere? Scurgerile înfundate nu numai că vă pot opri casa, dar vor consuma costuri suplimentare din buzunare, în medie 206 dolari reprezintă costul curățării unei scurgeri înfundate conform HomeAdvisor, pe lângă costurile ascunse ale covoarelor deteriorate, mobilierului din lemn, etc. Ideea noastră este de a permite proprietarilor de case, precum și întreprinderilor, cum ar fi departamentele de întreținere a orașelor / compușilor și furnizorilor de servicii specializați, să aibă un sistem eficient și inteligent care să avertizeze pe oricine este responsabil cât mai curând posibil să ia măsuri, ceea ce contribuie la îmbogățirea orașelor inteligente cu un caracteristică.

Ideea Deși detectarea saboților se poate face printr-o serie de tehnici, cum ar fi utilizarea senzorilor de gaz sau a mecanismelor interne, echipa noastră s-a concentrat pe utilizarea sunetului ca intrare, deoarece știm că lovirea unui tub unde este deschis este un sunet diferit de cel întâmplat când este închis. Conform acestui concept simplu, dacă putem instrui un model, modelele sonore care apar pe suprafața tubului în timpul înfundărilor, precum și acele modele apar în țevi deschise, putem aplica modelul pentru a detecta în mod proactiv când un înfundare începe să compună și atunci sună câteva facturi.

Credite pentru

  • Mohamed Hassan
  • Ahmed Emam

Proiect în detaliu 3 faze sunt implementate în acest proiect: Colectarea datelor, Învățare și predicție.

Înainte de a aplica acest sistem în viața reală, trebuia să creăm un mediu de simulare forțat, unde să avem conducta, apa curentă și cumva să simulăm înfundarea. Deci, avem un tub, un furtun de apă cu o sursă de apă care face acest lucru în cadă și folosind suprafața cuvei pentru a închide tubul care reprezintă înfundarea. În acest videoclip, vă explicăm cum am construit mediul și cum am colectat date pentru modelul de formare.

Și în următorul videoclip, care arată cum am făcut testarea sistemului și a modelului, în modul deschis, apoi în modul înfundare și înapoi în modul deschis, totuși

Deci, să explorăm implementarea noastră pas cu pas:

Pasul 1: Experimentul

Experimentul
Experimentul
Experimentul
Experimentul
Experimentul
Experimentul
Experimentul
Experimentul

În acest scenariu folosim o conductă mică de apă conectată la senzorul nostru hardware și de sunet. Hardware citește valoarea senzorului și o trimite înapoi în Cloud. Acest lucru a fost făcut timp de 10 minute pentru tubul blocat, apoi încă 10 min pentru tubul care nu este blocat.

Pasul 2: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

I- Arduino

Pentru a detecta sunetul apei din interiorul conductei avem nevoie de un senzor de sunet. Cu toate acestea, Raspberry Pi 3 nu are GPIO analogic. Pentru a rezolva această problemă, folosim Arduino, deoarece Arduino are GPIO analog. Așadar, conectăm senzorul Grove Sound la ecranul Grove Arduino și conectăm Shield la Arduino UNO 3. Apoi conectăm Arduino și Raspberry folosind un cablu USB. Pentru a obține mai multe informații despre senzorul Grove Sound, puteți verifica fișa tehnică a acestuia. Puteți găsi în fișa tehnică un exemplu de cod cum să citiți valorile senzorului. Codul de eșantionare este aproape de utilizare cu mici modificări. În codul de mai jos conectăm senzorul la A0 în ecran. Pentru a scrie pe serial, folosim funcția Serial.begin (). Pentru a comunica cu Raspberry baud rate setat la 115200 Datele vor fi trimise către Raspberry dacă este mai mare decât un anumit prag pentru a reduce zgomotul. Au fost făcute multe încercări pentru a alege valorile de prag și întârziere dorite. Pragul a fost găsit 400 și valoarea întârzierii a fost de 10 milisecunde. Pragul a fost ales pentru a filtra zgomotul normal și pentru a se asigura că numai datele semnificative vor fi trimise către nor. Întârzierea a fost aleasă pentru a se asigura că senzorul a detectat imediat orice modificare a sunetului de curgere în interiorul tubului.

II- Raspberry Pi 3 Pentru a descărca lucruri Android pe Raspberry, puteți descărca cea mai recentă versiune din Android Things Console. În acest proiect folosim versiunea: OIR1.170720.017. urmați pașii de pe site-ul Raspberry pentru a instala sistemul de operare pe raspberry, pentru Windows puteți utiliza acești pași După instalare, puteți conecta Raspberry la computer folosind USB. Apoi, în consola computerului, utilizați comanda de mai jos pentru a obține Raspberry IP

nmap -sn 192.168.1. *

După ce obțineți adresa IP, conectați-vă la Raspberry folosind comanda de mai jos

conectare adb

Pentru a vă conecta Raspberry la Wifi (adăugați SSID-ul și parola)

adb am startservice

-n com.google.wifisetup /. WifiSetupService

-un WifiSetupService. Connect

-e ssid *****

-e expresie de acces ****

Pasul 3: Google Cloud - Înregistrare

Google Cloud - Înregistrare
Google Cloud - Înregistrare
Google Cloud - Înregistrare
Google Cloud - Înregistrare
Google Cloud - Înregistrare
Google Cloud - Înregistrare
Google Cloud - Înregistrare
Google Cloud - Înregistrare

Google oferă un nivel gratuit pentru toți utilizatorii timp de un an cu un plafon de 300 $, Mulțumesc lui Google:). Urmăriți ecranele pentru a crea un proiect nou în Google Cloud

Pasul 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 este un serviciu de mesagerie în timp real complet gestionat, care vă permite să trimiteți și să primiți mesaje între aplicații independente.

Pasul 5: Google Cloud - IOT Core

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

II- IOT Core Un serviciu complet gestionat pentru a conecta, gestiona și ingera cu ușurință și siguranță date de pe dispozitive dispersate la nivel global. IOT Core este încă beta, pentru a avea acces la acesta, trebuie să faceți o solicitare cu Justificare către Google. Am făcut cererea, justificarea noastră a fost acest concurs. Aprobat de Google, Mulțumesc din nou lui Google:). Raspberry va trimite datele senzorului către IOT Core, care va transmite citirile către subiectul PubSub creat în pasul anterior

Pasul 6: Google Cloud - Funcții Cloud

Google Cloud - Funcții Cloud
Google Cloud - Funcții Cloud
Google Cloud - Funcții Cloud
Google Cloud - Funcții Cloud

Cloud Functions este un mediu fără server pentru a construi și conecta servicii cloud. Declanșatorul pentru această funcție este subiectul PubSup creat la pasul 1.;; Această funcție va fi declanșată atunci când o nouă valoare este scrisă în PubSup și o scrie în Cloud DataStore cu Kind "SoundValue"

Pasul 7: Google Cloud - Cloud DataStore

Google Cloud Datastore este o bază de date de documente NoSQL construită pentru scalare automată, performanță ridicată și ușurință în dezvoltarea aplicațiilor. În timp ce interfața Cloud Datastore are multe dintre aceleași caracteristici ca și bazele de date tradiționale, ca bază de date NoSQL diferă de acestea prin modul în care descrie relațiile dintre obiectele de date. Nu este nevoie de nicio configurare, deoarece odată ce funcțiile cloud scriu valorile senzorului în DataStore, datele vor fi adăugate în DataStore

Pasul 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

Adunăm un eșantion la 10 min de conducta normală și 10 min de la conducta blocată cu diferență exact de 1 oră între cele 2 iterații. După descărcarea datelor DataStore și faceți o manipulare pentru a adăuga clasificare pentru fiecare rând. Acum avem 2 fișiere CSV câte unul pentru fiecare categorie. Ca cea mai bună practică, încărcați mai întâi fișiere CSV de date în Cloud Storage. În ecranul de mai jos creăm o nouă bucket și încărcăm cele 2 fișiere CSVs Deoarece acest bucket va fi folosit doar pentru analiză, nu este nevoie să alegeți bucket multi-regional Apoi creați set de date nou și tabel nou în BigQuery și încărcați fișierul 2 CSV din bucket în noua masă

Pasul 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

Apoi, folosim Data Studio pentru a desena câteva informații. Data Studio va citi datele din tabelul BigQuery. Din grafice putem vedea diferența dintre 2 categorii în numărul de telemetrii și suma valorilor pe minut. Pe baza acestor informații, putem proiecta un model simplu, conducta este considerată blocată dacă în 3 minute succesive, numărul de valori de telemetrie care sunt mai mari decât pragul de zgomot (400) este mai mare de 350 de telemetrii. iar în 3 minute succesive, valoarea telemetriilor care este mai mare decât pragul scânteii (720) este mai mare de 10 telemetrii.

Pasul 10: Faza de predicție

Faza de predicție
Faza de predicție

Ne referim la o citire, atunci când depășește o anumită valoare (THRESHOLD_VALUE) care a fost setată la 350, care filtrează zgomotul și debitele de apă mai mici în tub, de la a fi considerată o citire

Analiza datelor a arătat că în modul deschis numărul de citiri este mai mic de 100, dar în modul de înfundare, valorile sunt mult mai mari (au ajuns la 900 pe minut), dar în cazuri rare au fost și mai mici de 100. Cu toate acestea, aceste cazuri nu se repetă în consecință, și timp de trei minute, numărul total de citiri a depășit întotdeauna 350. Având modul deschis în aceleași trei minute va însuma mai puțin de 300, am putea pune cu încredere această regulă: Regula nr. > 350, apoi se detectează o înfundare. Am constatat că valoarea maximă atinsă în modul deschis nu depășește o anumită valoare (SPARK_VALUE) care se dovedește a fi 770, așa că am adăugat această regulă: Regula # 2 Dacă valoarea de citire> 350, atunci se detectează în mare parte o înfundare.

Combinând ambele reguli, ne-a oferit o modalitate ușoară de a implementa logica de detectare, așa cum se arată. Observați că codul de mai jos a fost implementat pe Arduino, care apoi evaluează telemetriile primite pe baza modelului nostru și le trimite către zmeură dacă conducta este înfundată sau deschisă.

Pasul 11: Cod

Toate codurile pentru funcția Arduino, Raspberry și Cloud pot fi găsite pe Github.

Pentru mai multe informații puteți verifica acest link

Recomandat: