Turinys:

Drenažo užsikimšimo detektorius: 11 žingsnių (su nuotraukomis)
Drenažo užsikimšimo detektorius: 11 žingsnių (su nuotraukomis)

Video: Drenažo užsikimšimo detektorius: 11 žingsnių (su nuotraukomis)

Video: Drenažo užsikimšimo detektorius: 11 žingsnių (su nuotraukomis)
Video: 🧨 Čia surinktos visos Volvo XC90 silpnybės ir problemos. Subtitrai! 2024, Liepa
Anonim
Image
Image

Neleiskite, kad užsikimšęs kanalizacija jus sulėtintų! Grįžę iš mūsų atostogų, mane su žmona nustebino vanduo, dengiantis mūsų buto grindis, ir sužinojome, kad tai net ne švarus vanduo, o visur nutekėjęs vanduo. Išvalius kanalizaciją ir išvalius grindis, iškilo toks klausimas: kodėl neturime signalizacijos sistemos dėl galimų kanalizacijos užsikimšimų? Užsikimšę kanalizacija ne tik gali sustabdyti jūsų namus, bet ir sutaupys papildomų išlaidų iš jūsų kišenių, vidutiniškai 206 USD yra išlaidos užsikimšusiam kanalizacijai išvalyti, pasak „HomeAdvisor“, be paslėptų sugadintų kilimų, medinių baldų ir kt. Mūsų idėja yra leisti namų savininkams ir tokioms įmonėms, kaip miesto ir (arba) kompleksų priežiūros skyriai ir specializuoti paslaugų teikėjai turėti veiksmingą ir protingą sistemą, kuri kuo anksčiau įspėtų atsakingus asmenis imtis veiksmų, o tai prisidėtų prie išmaniųjų miestų praturtinimo svarbiu dalyku. ypatybė.

Nors užsikimšimus galima aptikti įvairiais metodais, pvz., Naudojant dujų jutiklius ar vidinius mechanizmus, mūsų komanda sutelkė dėmesį į tai, kad kaip įvestį naudotų garsą, nes žinome, kad beldimas į vamzdį, kuriame jis atidarytas, skiriasi nuo to, kas atsitiko kai uždaromas. Pagal šią paprastą koncepciją, jei galime išmokyti modelį garso modelius, atsirandančius ant vamzdžio paviršiaus užsikimšimų metu, taip pat tuos modelius, kurie atsiranda atidarytose vamzdžiuose, tada galime pritaikyti modelį, kad jis galėtų aktyviai aptikti, kada pradeda formuotis užsikimšimas, ir tada paskambinti kai kuriomis sąskaitomis.

Kreditai

  • Mohamedas Hassanas
  • Ahmedas Emas

Šiame projekte įgyvendinami 3 etapai: duomenų rinkimas, mokymasis ir prognozavimas.

Prieš pradėdami taikyti šią sistemą realiame gyvenime, turėjome sukurti priverstinę modeliavimo aplinką, kurioje turime vamzdį, tekantį vandenį ir kažkaip imituoti užsikimšimą. Taigi, mes gavome vamzdelį, vandens žarną su vandens šaltiniu, tai darydami vonioje, ir naudodami vonios paviršių uždaryti vamzdelį, kuris reiškia užsikimšimą. Šiame vaizdo įraše paaiškiname, kaip sukūrėme aplinką ir kaip surinkome duomenis modelio mokymui.

Ir šiame kitame vaizdo įraše, parodančiame, kaip mes atlikome sistemos ir modelio bandymus atviru režimu, tada užkimšimo režimu ir atgal į atvirą režimą

Taigi, žingsnis po žingsnio panagrinėkime mūsų įgyvendinimą:

1 žingsnis: eksperimentas

Eksperimentas
Eksperimentas
Eksperimentas
Eksperimentas
Eksperimentas
Eksperimentas
Eksperimentas
Eksperimentas

Šiuo atveju mes naudojame mažą vandens vamzdį, prijungtą prie mūsų aparatūros ir garso jutiklio. Aparatūra nuskaito jutiklio vertę ir siunčia ją atgal į „Cloud“. Tai buvo padaryta 10 minučių užblokuotam vamzdžiui, tada dar 10 minučių - neužblokuotam vamzdžiui.

2 žingsnis: Aparatūra

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Aš- Arduino

Norint aptikti vandens garsą vamzdžio viduje, mums reikia garso jutiklio. Tačiau „Raspberry Pi 3“neturi analoginio GPIO. Norėdami išspręsti šią problemą, naudojame „Arduino“, nes „Arduino“turi analoginį GPIO. Taigi mes prijungiame „Grove Sound“jutiklį prie „Grove Arduino“skydo ir prijungiame „Shield“prie „Arduino UNO 3.“Tada prijungiame „Arduino & Raspberry“naudodami USB kabelį. Norėdami gauti daugiau informacijos apie „Grove Sound“jutiklį, galite patikrinti jo duomenų lapą. Duomenų lape galite rasti pavyzdinį kodą, kaip nuskaityti jutiklio vertes. Pavyzdinis kodas beveik naudojamas mažiems pakeitimams. Žemiau esančiame kode mes prijungiame jutiklį prie A0 skydelyje. Norėdami rašyti serijiniu būdu, naudojame funkciją Serial.begin (). Norint bendrauti su „Raspberry“duomenų perdavimo sparta, nustatyta kaip 115200, „Raspberry“bus siunčiami duomenys, jei jis yra didesnis nei tam tikra riba, kad būtų sumažintas triukšmas. Buvo atlikta daug bandymų, kad būtų pasirinktos norimos slenksčio ir uždelsimo vertės. Nustatyta, kad slenkstis yra 400, o atidėjimo vertė - 10 milisekundžių. Slenkstis pasirinktas norint filtruoti įprastą triukšmą ir užtikrinti, kad į debesį būtų siunčiami tik prasmingi duomenys. Užlaikymas buvo pasirinktas toli, kad būtų užtikrinta, jog jutiklis nedelsdamas aptinka bet kokius srauto garso pokyčius vamzdžio viduje.

II- Raspberry Pi 3 Jei norite atsisiųsti „Android“failus iš Raspberry, galite atsisiųsti naujausią versiją iš „Android Things Console“. Šiame projekte naudojame versiją: OIR1.170720.017. atlikite „Raspberry“svetainės veiksmus, kad įdiegtumėte operacinę sistemą „avietėje“, „Windows“galite naudoti šiuos veiksmus. Įdiegę galite prijungti „Raspberry“prie kompiuterio naudodami USB. Tada kompiuterio konsolėje naudokite žemiau esančią komandą, kad gautumėte Raspberry IP

nmap -sn 192.168.1.*

Gavę IP, prisijunkite prie „Raspberry“naudodami žemiau esančią komandą

adb prisijungti

Norėdami prijungti „Raspberry“prie „Wifi“(pridėkite SSID ir slaptažodį)

adb am startservice

-n com.google.wifisetup/. WifiSetupService

-a „WifiSetupService. Connect“

-e ssid *****

-slaptafrazė ****

3 veiksmas: „Google Cloud“- registracija

„Google Cloud“- registracija
„Google Cloud“- registracija
„Google Cloud“- registracija
„Google Cloud“- registracija
„Google Cloud“- registracija
„Google Cloud“- registracija
„Google Cloud“- registracija
„Google Cloud“- registracija

„Google“siūlo nemokamą pakopą visiems vartotojams vieneriems metams, kurių viršutinė riba yra 300 USD, ačiū „Google“:). Sekite ekranus, kad sukurtumėte naują projektą „Google Cloud“

4 veiksmas: „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“yra visiškai valdoma realaus laiko pranešimų paslauga, leidžianti siųsti ir gauti pranešimus tarp nepriklausomų programų.

5 veiksmas: „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 CoreA“visiškai valdoma paslauga, skirta lengvai ir saugiai prijungti, valdyti ir priimti duomenis iš visame pasaulyje išsklaidytų įrenginių. „IOT Core“vis dar yra beta versija, kad galėtumėte ją pasiekti, turite pateikti „Google“užklausą su pagrindimu. Mes pateikėme prašymą, mūsų pateisinimas buvo šis konkursas. „Google“patvirtino, ačiū „Google“dar kartą:). „Raspberry“siųs jutiklio duomenis į „IOT Core“, kuri persiųs rodmenis į „PubSub“temą, sukurtą ankstesniame žingsnyje

6 veiksmas: „Google Cloud“- debesies funkcijos

„Google Cloud“- debesies funkcijos
„Google Cloud“- debesies funkcijos
„Google Cloud“- debesies funkcijos
„Google Cloud“- debesies funkcijos

„Cloud Functions“yra aplinka be serverių, skirta kurti ir prijungti debesies paslaugas. Šios funkcijos paleidiklis yra „PubSup“tema, sukurta atliekant 1 veiksmą.;; Ši funkcija bus suaktyvinta, kai „PubSup“parašys naują vertę ir įrašys ją į „Cloud DataStore“su rūšimi „SoundValue“

7 veiksmas: „Google Cloud“- „Cloud DataStore“

„Google Cloud Datastore“yra „NoSQL“dokumentų duomenų bazė, sukurta automatiniam mastelio keitimui, dideliam našumui ir paprastam programų kūrimui. Nors „Cloud Datastore“sąsaja turi daug tų pačių funkcijų, kaip ir tradicinės duomenų bazės, kaip „NoSQL“duomenų bazė ji skiriasi nuo jų tuo, kaip apibūdina ryšius tarp duomenų objektų. Nereikia jokių sąrankų, nes kai „Cloud Functions“įrašys jutiklio reikšmes į „DataStore“, duomenys bus pridėti prie „DataStore“

8 veiksmas: „Google Cloud“- „BigQuery“

„Google“debesis - „BigQuery“
„Google“debesis - „BigQuery“
„Google“debesis - „BigQuery“
„Google“debesis - „BigQuery“
„Google“debesis - „BigQuery“
„Google“debesis - „BigQuery“
„Google Cloud“- „BigQuery“
„Google Cloud“- „BigQuery“

Mes paimame mėginį 10 minučių nuo įprasto vamzdžio ir 10 minučių nuo užblokuoto vamzdžio, o skirtumas tarp 1 kartojimo yra lygiai 1 valanda. Atsisiuntę duomenis „DataStore“ir atlikite tam tikras manipuliacijas, kad pridėtumėte kiekvienos eilutės klasifikaciją. Dabar turime 2 csv failus po vieną kiekvienai kategorijai. Kaip geriausia praktika, pirmiausia įkelkite CSV failus į „Cloud Storage“. Žemiau esančiame ekrane sukuriame naują grupę ir įkeliame 2 CSV failus naują stalą

9 veiksmas: „Google Cloud“- „Data Studio“

„Google Cloud“- duomenų studija
„Google Cloud“- duomenų studija
„Google Cloud“- duomenų studija
„Google Cloud“- duomenų studija
„Google Cloud“- duomenų studija
„Google Cloud“- duomenų studija

Tada mes naudojame „Data Studio“, kad sudarytume įžvalgas. „Data Studio“skaitys duomenis iš „BigQuery“lentelės. Iš grafikų matome skirtumą tarp 2 kategorijų telemetrijos skaičiaus ir verčių sumos per minutę. Remdamiesi šiomis įžvalgomis, galime sukurti paprastą modelį, vamzdis laikomas užblokuotu, jei per 3 minutes iš eilės telemetrijos verčių, kurios yra didesnės nei triukšmo riba (400), skaičius yra didesnis nei 350 telemetrijų. ir per 3 minutes iš eilės telemetrijos vertės, didesnės už kibirkšties slenkstį (720), yra daugiau nei 10 telemetrijos.

10 žingsnis: prognozavimo etapas

Prognozavimo etapas
Prognozavimo etapas

Turime omenyje rodmenis, kai jis viršija tam tikrą vertę (THRESHOLD_VALUE), kuri buvo nustatyta į 350 ir kuri filtruoja triukšmą ir mažina vandens srautą vamzdyje, o ne laikoma rodmeniu

Duomenų analizė parodė, kad atviruoju režimu rodmenų skaičius yra mažesnis nei 100, tačiau užkimšimo režimu reikšmės yra daug didesnės (pasiekė 900 per minutę), tačiau retais atvejais taip pat buvo mažesnės nei 100. Tačiau šie atvejai dėl to nepasikartoja, o tris minutes iš eilės bendras rodmenų skaičius visada viršijo 350. Jei atidarius režimą per tas pačias tris minutes, suma bus mažesnė nei 300, galėtume užtikrintai išdėstyti šią taisyklę: 1 taisyklė. > 350, tada aptinkamas užsikimšimas. Mes nustatėme, kad didžiausia pasiekta vertė atviruoju režimu neviršija tam tikros vertės (SPARK_VALUE), kuri, kaip nustatyta, yra 770, todėl pridėjome šią taisyklę: 2 taisyklė. Jei skaitymo vertė> 350, dažniausiai aptinkamas užsikimšimas.

Sujungus abi taisykles, atsirado paprastas būdas įgyvendinti aptikimo logiką, kaip parodyta. Atkreipkite dėmesį, kad žemiau esantis kodas buvo įdiegtas „Arduino“, kuris tada įvertina gautas telemetrijas pagal mūsų modelį ir siunčia avietėms, jei vamzdis užsikimšęs ar atidarytas.

11 žingsnis: kodas

Visą „Arduino“, „Raspberry“ir „Cloud Function“kodą galite rasti „Github“.

Norėdami gauti daugiau informacijos, galite patikrinti šią nuorodą

Rekomenduojamas: