İçindekiler:

Tüketimi İzlemek için Otomatik Su Sebili: 6 Adım
Tüketimi İzlemek için Otomatik Su Sebili: 6 Adım

Video: Tüketimi İzlemek için Otomatik Su Sebili: 6 Adım

Video: Tüketimi İzlemek için Otomatik Su Sebili: 6 Adım
Video: Ünal turan Azad yılmaz Karşıma çıkın dedi 2024, Temmuz
Anonim
Tüketimi İzlemek için Otomatik Su Sebili
Tüketimi İzlemek için Otomatik Su Sebili
Tüketimi İzlemek için Otomatik Su Sebili
Tüketimi İzlemek için Otomatik Su Sebili

Merhaba!

Birkaç ay önce odamda bir okul ödevi için nasıl bir proje yapmak istediğimi düşünüyordum. Bana uygun ve gelecekte bana fayda sağlayacak bir şey yapmak istedim. Aniden annem odaya girdi ve yeterince su içmemekten şikayet etmeye başladı. Hemen bir epifani yaşadım. Aklıma, su tüketiminizi günlük olarak takip eden otomatik bir su sebili (sinemadaki gibi) yapma fikri geldi.

Bir Raspberry Pi, birkaç sensör, bir pompa ve çok az bilgi ile bunu olabildiğince iyi hale getirmeye çalıştım.

Tüm adımların sonunda, su şişenizi dolduran ve Raspberry Pi'nize bağlanan ve etkileşime giren çalışan bir su sebiliniz olacak. Yüzde bazında su tüketiminizi takip etmekle kalmayacak, aynı zamanda su kabınızın sıcaklığını ve su seviyesini de görme imkanına sahip olacaksınız. Son olarak, istatistiklerinizi kontrol edebileceksiniz. Bu size ilginç geliyorsa, kontrol ettiğinizden ve kendiniz denediğinizden emin olun!

GitHub deposu:

Gereçler

Mikrodenetleyiciler

Ahududu Pi 4

Sensörler ve modüller

4 sensör kullandım:

2xHC-SR04Ultrasonik Sensör

Ultrasonik sensörler, ultrasonik dalgalar kullanarak mesafeyi ölçer. Sensör kafası ultrasonik bir dalga yayar ve hedeften yansıyan dalgayı alır. Ultrasonik Sensörler, emisyon ve alım arasındaki süreyi ölçerek hedefe olan mesafeyi ölçer. Yakınlarda bir şişe olup olmadığını kontrol etmek ve tanktaki suya olan mesafeyi ölçmek için ikisini kullandım.

Veri Sayfası

1x DS18B20 Sıcaklık Sensörü

DS18B20, maxim entegresinden 1 kablolu programlanabilir bir Sıcaklık sensörüdür. Kimyasal çözeltiler, madenler veya toprak gibi zorlu ortamlarda sıcaklığı ölçmek için yaygın olarak kullanılır. Ben su tankının su sıcaklığını ölçmek için kullandım.

Veri Sayfası

1x RC522 RFID Modülü

RC522, NXP yarı iletkenlerinin MFRC522 denetleyicisine dayanan 13.56 MHz'lik bir RFID modülüdür. Modül, I2C, SPI ve UART'ı destekleyebilir ve normalde bir RFID kartı ve anahtarlık ile birlikte gönderilir. Katılım sistemlerinde ve diğer kişi/nesne tanımlama uygulamalarında yaygın olarak kullanılır. Bu projede, bir tanımlama/giriş sistemi için kullanılmaktadır.

Veri Sayfası

Ve 2 aktüatör:

1x Peristaltik Pompa 12-24V

Suyu tanktan bir su şişesine almak için peristaltik bir pompa kullandım. Çoğu pompa çok yavaştı, bu yüzden 24V güç adaptörüyle beslediğim 24V versiyonunu seçtim.

1x LCD Ekran

LCD, IP adresini ve önemli mesajları görüntülemek için kullanılır. Bir sıvı kristal ekran (LCD), polarizörlerle birleştirilmiş sıvı kristallerin ışık modülasyon özelliklerini kullanan düz panel bir ekran veya elektronik olarak modüle edilmiş başka bir optik cihazdır.

Veri Sayfası

kasa

Kasadan bahsetmişken, bir Ev deposundan malzemelerle bir DIY yaptım (benim durumumda Belçika'daki Brico). Doğru boyutta kestiğim kontrplak kullandım. Davamı nasıl yaptığımdan bir sonraki adımda bahsedeceğim, ancak ihtiyacınız olacak şeyler şunlardır:

  • 3x Kontrplak plakalar
  • 1x Küçük huni
  • 1x Su deposu (istediğiniz miktarı seçebilirsiniz, ben 10L için gittim)
  • 1x Damlama tepsisi

Tüm malzemeleri ve fiyatları ekteki ürün reçetesinde bulabilirsiniz.

Adım 1: Tüm Elektronik Cihazların Bağlanması

Tüm Elektronik Cihazların Bağlanması
Tüm Elektronik Cihazların Bağlanması
Tüm Elektronik Cihazların Bağlanması
Tüm Elektronik Cihazların Bağlanması

Artık tüm elektroniği özetlediğimize göre, onları bağlamanın zamanı geldi. Tüm elektroniklerin nasıl ve nereye bağlanması gerektiğini size göstermek için iki Fritzing devresi, bir devre tahtası ve bir şematik yaptım. Fritzing indirme bağlantısını burada bulabilirsiniz: https://fritzing.org/download/. Daha önce de bahsettiğim gibi bir Raspberry Pi kullandım ve su için bir RFID tarayıcı, iki ultrasonik sensör, bir sıcaklık sensörü, bir LCD ve bir peristaltik pompa bağladım.

Daha yakından bakmak isterseniz, iki devreyi bir PDF'ye ekledim.

2. Adım: Raspberry Pi'yi Ayarlama

Her şeyi çalıştırmak ve kontrol etmek için Raspberry Pi'mizi kullanacağız: arka uç, ön uç ve veritabanı.

Ahududu Pi otomatik olarak çalışmaz. Kullanmaya başlamak için bazı adımlardan geçmemiz gerekecek.

Adım 1: Raspbian

Yepyeni bir Raspberry Pi kullanıyorsanız, raspbian'a ihtiyacınız olacak. İndirme bağlantısı ve öğretici burada bulunabilir.

Adım 2: Görüntüyü SD'ye yazma

Artık Raspbian görüntünüze sahip olduğunuza göre, görüntü dosyasını SD karta yazmak için bir görüntü yazma yazılımına (win32diskimager'ı öneririm) ihtiyacınız olacak. Eğitimin tamamı burada bulunabilir.

3. Adım: Raspberry Pi'de Oturum Açma

"Powershell"i açın ve "ssh [email protected]" yazın. Her şey yolunda giderse sizden bir şifre isteyeceklerdir (varsayılan şifre her zaman ahudududur). Normalde, bu sizi Raspberry Pi'de oturum açmalıdır. Şimdi ayarlarımızda bazı değişiklikler yapmamız gerekecek. Terminalde sudo raspi-config yazın ve enter tuşuna basın. Yerelleştirme seçeneklerine gidin > saat dilimini değiştirin ve saat diliminizi ayarlayın. Ayrıca wi-fi ülkenizi kendi konumunuza değiştirmelisiniz. Son olarak, arabirim seçeneklerine gidin ve SPI, I2C ve 1-wire'ı etkinleştirin. Bu, sensörleri doğru kullanmak için önemli olacaktır.

4. Adım: İnternet Bağlantısını Kurma

Bir WiFi ağı kullanacağız. Ev ağınızı şu yollarla ekleyebilirsiniz:

wpa_passphrase "Ağınız" "SSID'niz" >> /etc/wpa_supplicant/wpa_supplicant.conf

Bağlantı kurmak için Pi'nizi yeniden başlatmanız gerekecek. Çalışıp çalışmadığını kontrol etmek için, bir IP adresi olup olmadığını kontrol etmek için ifconfig'i kullanabilirsiniz.

Adım 5: Web sunucusunu ve Veritabanını Ayarlama

İlk olarak, sistemi aşağıdaki komut dizisiyle güncellemek ve yükseltmek en iyisidir:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo uygun yükseltme
  3. sudo uygun güncelleme
  4. sudo uygun otomatik kaldırma

Bu yapıldıktan sonra, web sunucumuz ve veritabanımız için aşağıdaki paketlere ihtiyacımız olacak:

Apaçi

sudo apt apache2'yi yükleyin -y

PHP

sudo apt php'yi kurun

sudo apt phpMyAdmin'i kurun -y

Bir parola belirlemenizi istediğinde, güvenli bir MySQL parolası belirlemeyi unutmayın.

MariaDB

sudo apt mariadb sunucusunu kurun mariadb-client -y

sudo apt kurulumu php-mysql -y

sudo systemctl apache2.service'i yeniden başlat

Adım 6: Python kitaplıklarını yükleme

Arka uç için Python için bazı kütüphanelere ihtiyacımız olacak. Bunları pip3 kullanarak kuracağız, çünkü python3 kullanıyoruz.

pip3 mysql-connector-python'u kurun

pip3 yükleme şişesi-socketio

pip3 flask-cors yükleyin

pip3 kurulum geventi

pip3 kurulum gevent-websocket

sudo apt kurulum python3-mysql.connector -y

pip3 mfrc522'yi kurun! (RFID tarayıcıyı kullanmak için buna ihtiyacımız olacak)

Adım 7: Visual Studio Kodunun Hazırlanması

Kodu çalıştırmak için Raspberry Pi'nizi bağlamak için Visual Studio Code kullanmanızı öneririm. VSC'yi yüklemek için indirme bağlantısı burada bulunabilir.

Henüz SSH kullanarak Uzaktan Geliştirme yüklemediyseniz, bunu yapmak için gereken adımları burada bulabilirsiniz.

Adım 3: Veritabanını Oluşturma

Veritabanını Oluşturma
Veritabanını Oluşturma

Tüm sensör verilerimizi ve kullanıcı verilerimizi bir veritabanında saklayacağız.

Veritabanım 5 tablodan oluşuyor:

Cihaz

Tablo Aygıtı, aygıtın kendisine başvuran bir Aygıt Kimliğine sahiptir. DeviceName cihazın adını verir, bu durumda ultrasonik sensör, sıcaklık sensörü, … DeviceType cihazın tipini (sensör veya aktüatör) verir.

Tarih

Tablo Geçmişi, tarihin eklendiği tarih (HistoryDate) ve geçmişteki anın değeri ile birlikte tüm sensör geçmişini içerir. Ayrıca iki Yabancı Anahtarı vardır:

  • Cihaz Kimliği, belirli bir günlüğü bir Cihaza bağlamak için
  • Kullanıcı Kimliği, belirli bir kullanıcıyı bir günlüğe bağlamak için (bunun nedeni, bir RFID kullanmamız ve geçmiş günlüğünü belirli bir kullanıcıya eklemek istememizdir)

kullanıcı

Tablo Kullanıcısı, RFID tarayıcı ile bir Kullanıcı Giriş Sistemi oluşturmak için kullanılır. Takma Ad, Ad, Soyadı, Şifre ve RFID'den oluşur (bu, bir etiketin RFID numarasıdır). Her kullanıcı bir Container'a (su deposu) bağlıdır ve ayrıca ContainerID'yi bir Yabancı Anahtar olarak taşır.

Konteyner

Table Container, tüm farklı Container'lardan oluşur. Bir kimliği, bir ContainerLocation'ı vardır (bu bir işletme, ev veya başka bir şey olabilir). Son olarak, kapsayıcının sahip olduğu maksimum hacmi temsil eden bir MaxLevel'e sahiptir.

Ayarlar

Tablo Ayarlarının bir SettingsID'si vardır ve her kullanıcının DailyGoal'ını + DailyGoal'ın kullanıcı tarafından eklendiği tarihi izler. Bu, Yabancı Anahtar Kullanıcı Kimliğini açıklar.

Veritabanının bir dökümü GitHub depomda Veritabanı altında bulunabilir.

4. Adım: Arka Uç Kurulumu

Çalışan bir arka ucu olmayan bir proje yoktur.

Arka uç 4 farklı şeyden oluşur:

yardımcılar

Yardımcılar, farklı sensörler ve aktüatörler için kullanılan tüm sınıflardır. Sıcaklık sensörü (DS18B20), ultrasonik sensörlerin (HCSR05) mesafeyi ölçebilmesi ve LCD'nin ekrana mesaj yazabilmesi için bir yardımcı bulunmaktadır.

depolar

Depolar klasöründe 2 Python dosyası bulacaksınız:

  • Veritabanınızdan satırları almak için bir yardımcı olan Database.py. Veritabanını yürütmeyi ve okumayı kolaylaştırır.
  • Ana kodda (app.py) kullanılan tüm SQL sorgularını içeren DataRepository.py. Veritabanından veri almak, güncellemek veya silmek için kullanılırlar.

app.py

Bu, projenin ana arka uç kodudur. Tüm pinleri ve modları tanımlayarak kurulumu yapar ve pompanın çalışmasını sağlamak, sıcaklığı almak, kullanıcıyı almak vb. Ayrıca Veritabanından ve tüm socketio.on'lardan veri almak için kullanılan yolları da içerir. Her HTML sayfası için, her işlevin doğru zamanda çalıştığından emin olmak için farklı bir socketio.on vardır.

config.py

Bir dosyamız kaldı: config.py. Bu, Veritabanınıza bağlanmak için yapılandırma seçeneklerinin bulunduğu dosyadır. Veritabanı kimlik bilgilerinizi ayarlamayı unutmayın.

Arka uç, arka uç altındaki havuzumda bulunabilir.

Adım 5: Ön Uç Kurulumu

Ön Uç Kurulumu
Ön Uç Kurulumu
Ön Uç Kurulumu
Ön Uç Kurulumu

Ön Uç için web sunucumun AdobeXD'de nasıl görünmesi gerektiğine dair bir tasarım yaparak başladım. Logomda turuncu ve mavinin 2 farklı tonu olan renkleri kullandım. Tasarımı olabildiğince basit tutmaya çalıştım ve günün hedefinize ne kadar ulaştığınızı yüzde olarak gösteren bir su damlası oluşturdum.

GitHub depomda, Ön Uç'umu Kod > Ön Uç altında bulacaksınız. Bunu, web sunucusundan erişilebilir hale getirmek için Raspberry Pi'nizin /var/html klasörünüze yapıştırmanız önemlidir.

Farklı sayfalara yönlendiren birkaç HTML dosyasından oluşur. Ayrıca benim projem gibi görünmesi için ihtiyaç duyacağınız tüm CSS'leri içeren screen.css'imi de bulacaksınız. Son olarak, komut dosyaları altında farklı JavaScript dosyalarınız olacak. Bu komut dosyaları, Veritabanımdan veya arka ucumdan verileri göstermek için arka ucumla iletişim kurar.

Arka uç, ön uç altındaki havuzumda bulunabilir.

Adım 6: Muhafazayı Oluşturma

Muhafazayı Oluşturma
Muhafazayı Oluşturma
Muhafazayı Oluşturma
Muhafazayı Oluşturma
Muhafazayı Oluşturma
Muhafazayı Oluşturma

Benim durumumdan bahsediyorsak, iki ana kısım var:

Dış kasa

Kasayı sıfırdan kurdum. Kontrplak kalaslar kullandım ve bunları doğru boyutlarda kestim. Tüm tahtaları birbirine vidaladım ve LCD, düğme, su şişesi olup olmadığını algılamak için ultrasonik sensör ve suyu dağıtmak için huni için delikler açtım. Kasamı su ile elektronik aksamı birbirinden ayırmak için farklı bölümlere ayırdım ve kabloları su sızıntısından korumak için kablo kanalı kullandım. Ekli videoda, kasamın birçok yönünü ve nasıl yaptığımı görebilirsiniz. Ayrıca normal bir düğmeye yapıştırılmış bir düğmeyi 3D yazdırdım. Son olarak, dökülen tüm suyu toplamak için bir damlama tepsisi kullandım. Ayrıca elektroniklerime bakmak için bir yan paneli açıp kapatabilmek için menteşeler kullandım. Her zaman ikinci el bir dispenser kullanabilir veya başka malzemeler de kullanabilirsiniz.

Yapımın tam ölçümleri için, kasada kullanılan tüm plakaların boyutlarını içeren bir PDF ekledim.

Su tankı

Su deposu kolay bir iş değildi. Altında delik olan bir su tankım var, bu yüzden sızıntıyı durdurmak için bantlamak zorunda kaldım. Dört deliğe ihtiyacınız olacak: biri sıcaklık sensörü için, diğeri pompanızın hortumu için. biri borunun tankı yeniden doldurması için, diğeri ultrasonik sensör için. Bu sonuncusu için, burada bulunabilecek bir vakayı 3D yazdırdım. Bu, sensöre suya karşı daha fazla koruma sağlar. Daha sonra sensörü yerleştirmek için tankın üstüne bir dikdörtgen açtım.

Önerilen: