İçindekiler:

Drenaj Tıkanıklığı Dedektörü: 11 Adım (Resimlerle)
Drenaj Tıkanıklığı Dedektörü: 11 Adım (Resimlerle)

Video: Drenaj Tıkanıklığı Dedektörü: 11 Adım (Resimlerle)

Video: Drenaj Tıkanıklığı Dedektörü: 11 Adım (Resimlerle)
Video: Usta şoför işte yaa 2024, Temmuz
Anonim
Image
Image

Tıkanmış bir giderin sizi yavaşlatmasına izin vermeyin! Tatilimizden dönerken apartmanımızın zeminini kaplayan su karımla beni şaşırttı ve bunun temiz su bile olmadığını, her yerin boşaldığını öğrendik. Gideri ve zemini temizledikten sonra aklıma şu soru geldi: Neden olası gider tıkanıklıkları için bir alarm sistemimiz yok? Tıkanmış giderler sadece evinizi durdurmakla kalmaz, aynı zamanda ceplerinizden ek maliyetler de tüketir, HomeAdvisor'a göre tıkanmış bir gideri temizlemenin maliyeti ortalama 206 $, hasarlı halıların, ahşap mobilyaların vb. gizli maliyetlerine ek olarak. Fikrimiz, ev sahiplerinin yanı sıra şehir/bileşim bakım departmanları ve uzman hizmet sağlayıcılar gibi işletmelerin, sorumluları mümkün olduğunca erken harekete geçmeleri için uyaran ve akıllı şehirleri önemli ölçüde zenginleştirmeye katkıda bulunan verimli ve akıllı bir sisteme sahip olmalarını sağlamaktır. özellik.

Fikir Tıkanıklıkların tespiti, gaz sensörleri veya dahili mekanizmalar kullanmak gibi bir dizi teknikle yapılabilse de, ekibimiz, girişimiz olarak sesi kullanmaya odaklandı, çünkü bildiğimiz bir borunun açıldığı yere vurmanın, bundan farklı bir ses olduğunu biliyoruz. kapatılırken. Bu basit konsepte göre, tıkanmalar sırasında boru yüzeyinde oluşan ses kalıplarının yanı sıra açılmış borularda oluşan ses kalıplarını bir model eğitebilirsek, bir tıkanıklık oluşmaya başladığında proaktif olarak algılamak için modeli uygulayabiliriz ve daha sonra bazı faturaları çal.

için kredi

  • Muhammed Hasan
  • Ahmed Emam

Ayrıntılı proje Bu projede 3 aşama uygulanmaktadır: Veri toplama, Öğrenme ve tahmin.

Bu sistemi gerçek hayatta uygulamadan önce, borunun, akan suyun olduğu ve bir şekilde tıkanmayı simüle ettiğimiz zorunlu bir simülasyon ortamı yaratmamız gerekiyordu. Böylece, bir hortumumuz var, su kaynağına sahip bir su hortumu bunu küvette yapıyor ve küvet yüzeyini kullanarak tıkanıklığı temsil eden boruyu kapatıyoruz. Bu videoda ortamı nasıl oluşturduğumuzu ve model eğitimi için nasıl veri topladığımızı açıklıyoruz.

Ve bir sonraki videoda, sistem ve model için açık modda, ardından tıkanıklık modunda ve tekrar açık moda nasıl test yaptığımızı gösteriyor.

Öyleyse, uygulamamızı adım adım inceleyelim:

1. Adım: Deney

Deney
Deney
Deney
Deney
Deney
Deney
Deney
Deney

Bu senaryoda, donanım ve ses sensörümüze bağlı küçük bir su borusu kullanıyoruz. Donanım, sensör değerini okur ve Bulut'a geri gönderir. Bu, tıkalı tüp için 10 dakika, ardından bloke olmayan tüp için 10 dakika daha yapıldı.

2. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

I-Arduino

Borunun içindeki su sesini algılamak için bir ses sensörüne ihtiyacımız var. Ancak Raspberry Pi 3'ün Analog GPIO'su yok. Bu sorunu çözmek için Arduino'yu analog GPIO'ya sahip olduğu için Arduino kullanıyoruz. Bu yüzden Grove Sound sensörünü Grove Arduino Shield'e ve Shield'ı Arduino UNO 3'e bağlıyoruz. Ardından Arduino & Raspberry'i USB kablosu kullanarak bağlıyoruz. Grove Sound sensörü hakkında daha fazla bilgi almak için veri sayfasını kontrol edebilirsiniz. Veri sayfasında sensör değerlerinin nasıl okunacağını örnek bir kod bulabilirsiniz. Örnek Kod neredeyse küçük değişiklikler yapacaktır. Aşağıdaki kodda, sensörü kalkandaki A0'a bağlarız. Seri üzerine yazmak için Serial.begin() fonksiyonunu kullanıyoruz. Raspberry ile iletişim kurmak için 115200'e ayarlı baud hızı Veriler belirli eşiklerden büyükse Raspberry'ye gönderilecektir. İstenen eşik ve gecikme değerlerini seçmek için birçok deneme yapılmıştır. Eşik 400 ve Gecikme değeri 10 milisaniye olarak bulundu. Normal gürültüyü filtrelemek ve buluta yalnızca anlamlı verilerin gönderilmesini sağlamak için eşik seçilmiştir. Sensörün tüp içindeki akış sesindeki herhangi bir değişikliği hemen algılamasını sağlamak için gecikme seçilmiştir.

II- Raspberry Pi 3Raspberry üzerinde android şeyler indirmek için Android Things Console'dan en son sürümü indirebilirsiniz. Bu projede şu sürümü kullanıyoruz: OIR1.170720.017. Raspberry'ye işletim sistemi kurmak için Raspberry sitesindeki adımları takip edin, Windows için bu adımları uygulayabilirsiniz Kurulumdan sonra Raspberry'yi USB ile bilgisayarınıza bağlayabilirsiniz. Ardından bilgisayar konsolunuzda Raspberry IP almak için aşağıdaki komutu kullanın.

nmap -sn 192.168.1.*

IP'yi aldıktan sonra aşağıdaki komutu kullanarak Raspberry'nize bağlanın

adb bağlantısı

Raspberry'nizi Wifi'ye bağlamak için (SSID'nizi ve şifrenizi ekleyin)

adb başlangıç hizmetim

-n com.google.wifisetup/. WifiSetupService

-a WifiSetupService. Connect

-e ssid *****

-e parola ****

3. Adım: Google Cloud - Kayıt

Google Cloud - Kayıt
Google Cloud - Kayıt
Google Cloud - Kayıt
Google Cloud - Kayıt
Google Cloud - Kayıt
Google Cloud - Kayıt
Google Cloud - Kayıt
Google Cloud - Kayıt

Google, tüm kullanıcılara bir yıl boyunca 300$ tavan ile ücretsiz bir katman sunuyor, Google sayesinde:). Google Cloud'da yeni proje oluşturmak için ekranları takip edin

4. Adım: Google Cloud - Pub/Sub

Google Bulut - Pub/Sub
Google Bulut - Pub/Sub
Google Bulut - Pub/Sub
Google Bulut - Pub/Sub
Google Bulut - Pub/Sub
Google Bulut - Pub/Sub
Google Bulut - Pub/Sub
Google Bulut - Pub/Sub

Google Cloud Pub/Sub, bağımsız uygulamalar arasında mesaj gönderip almanıza olanak tanıyan, tümüyle yönetilen bir gerçek zamanlı mesajlaşma hizmetidir.

5. Adım: Google Cloud - IOT Çekirdeği

Google Bulut - IOT Çekirdeği
Google Bulut - IOT Çekirdeği
Google Bulut - IOT Çekirdeği
Google Bulut - IOT Çekirdeği
Google Bulut - IOT Çekirdeği
Google Bulut - IOT Çekirdeği

II- IOT CoreA, küresel olarak dağılmış cihazlardan verileri kolayca ve güvenli bir şekilde bağlamak, yönetmek ve almak için tam olarak yönetilen bir hizmettir. IOT Core hala Beta, buna erişmek için Google'a Gerekçe ile bir istekte bulunmanız gerekiyor. Talepte bulunduk, gerekçemiz bu yarışma oldu. Google onayladı, Google'a tekrar teşekkürler:). Raspberry, okumaları önceki adımda oluşturulan PubSub konusuna iletecek olan IOT Core'a sensör verilerini gönderecek

6. Adım: Google Cloud - Bulut İşlevleri

Google Cloud - Bulut İşlevleri
Google Cloud - Bulut İşlevleri
Google Cloud - Bulut İşlevleri
Google Cloud - Bulut İşlevleri

Cloud Functions, bulut hizmetlerini oluşturmak ve bağlamak için sunucusuz bir ortamdır. Bu işlev için tetikleyici, 1. adımda oluşturulan PubSup konusudur.;; Bu işlev, PubSup'ta yeni bir değer yazıldığında ve "SoundValue" Kind ile Cloud DataStore'a yazıldığında tetiklenir

7. Adım: Google Cloud - Bulut DataStore

Google Cloud Datastore, otomatik ölçeklendirme, yüksek performans ve uygulama geliştirme kolaylığı için oluşturulmuş bir NoSQL belge veritabanıdır. Cloud Datastore arabirimi, geleneksel veritabanlarıyla aynı özelliklerin çoğuna sahip olsa da, bir NoSQL veritabanı olarak veri nesneleri arasındaki ilişkileri tanımlama biçiminde onlardan farklıdır. Bulut İşlevleri sensör değerlerini DataStore'a yazdığında herhangi bir kuruluma gerek yoktur, veriler DataStore'a eklenecektir

8. Adım: Google Cloud - BigQuery

Google Bulut - BigQuery
Google Bulut - BigQuery
Google Bulut - BigQuery
Google Bulut - BigQuery
Google Bulut - BigQuery
Google Bulut - BigQuery
Google Bulut - BigQuery
Google Bulut - BigQuery

2 yineleme arasında tam olarak 1 saat farkla normal borudan 10 dakika ve bloke borudan 10 dakika numune topluyoruz. DataStore'u indirdikten sonra ve her satır için sınıflandırma eklemek için bazı manipülasyonlar yapın. Şimdi her kategori için bir tane olmak üzere 2 csv dosyamız var. En iyi uygulama olarak, önce veri CSV dosyalarını Cloud Storage'a yükleyin. Aşağıdaki ekranda yeni bir kova oluşturuyoruz ve 2 CSV dosyasını yüklüyoruz Bu kova yalnızca analiz için kullanılacağından, Çok bölgeli kova seçmenize gerek yok Ardından BigQuery'de yeni Veri Kümesi ve yeni tablo oluşturun ve 2 CSV dosyasını kovadan kovaya yükleyin yeni masa

9. Adım: Google Cloud - Data Studio

Google Bulut - Veri Stüdyosu
Google Bulut - Veri Stüdyosu
Google Bulut - Veri Stüdyosu
Google Bulut - Veri Stüdyosu
Google Bulut - Veri Stüdyosu
Google Bulut - Veri Stüdyosu

Ardından, bazı içgörüler elde etmek için Data Studio'yu kullanırız. Data Studio, BigQuery tablosundaki verileri okuyacaktır. Grafiklerden, 2 kategori arasındaki telemetri sayısı ve dakikadaki değerlerin toplamı arasındaki farkı görebiliriz. Bu öngörülere dayanarak basit bir model tasarlayabiliriz, art arda 3 dakika içinde gürültü eşiğini (400) aşan telemetri değerlerinin sayısı 350 telemetriden fazlaysa boru bloke olarak kabul edilir. ve art arda 3 dakika içinde, kıvılcım eşiğinden (720) yüksek olan telemetri sayısı değeri 10 telemetriden fazladır.

Adım 10: Tahmin Aşaması

Tahmin Aşaması
Tahmin Aşaması

Borudaki gürültüyü filtreleyen ve su akış oranlarını düşüren 350'ye ayarlanan belirli bir değeri (THRESHOLD_VALUE) aştığında bir okuma olarak kabul edilmekten söz ediyoruz.

Veri analizi, açık modda okuma sayısının 100'den az olduğunu, ancak tıkanma modunda değerlerin çok daha yüksek olduğunu (dakikada 900'e ulaştığını), ancak nadir durumlarda 100'den az olduğunu göstermiştir. Ancak, sonuç olarak bu vakalar tekrarlanmaz. ve birbirini takip eden üç dakika boyunca toplam okuma sayısı her zaman 350'yi aştı. Aynı üç dakika içinde açık mod olması toplam 300'den az olacaktır, bu kuralı güvenle koyabiliriz: Kural # 1 Toplam okumalar ise ham olarak üç dakika için > 350, ardından bir tıkanıklık algılanır. Açık modda ulaşılan maksimum değerin 770 olarak bulunan belirli bir değeri (SPARK_VALUE) geçmediğini gördük, bu yüzden şu kuralı ekledik: Kural # 2 Okuma değeri > 350 ise, çoğunlukla bir tıkanıklık algılanır.

Her iki kuralı birleştirmek, gösterildiği gibi algılama mantığını uygulamak için bize kolay bir yol sağladı. Aşağıdaki kodun Arduino'da konuşlandırılmış olduğuna dikkat edin, daha sonra alınan telemetrileri modelimize göre değerlendirir ve boru tıkalı veya açıksa ahududuya gönderir.

Adım 11: Kod

Arduino, Raspberry & Cloud Function için tüm Kodlar Github'da bulunabilir.

Daha fazla bilgi için bu bağlantıyı kontrol edebilirsiniz

Önerilen: