İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
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ı
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:
- sudo apt dist-upgrade --auto-remove -y
- sudo uygun yükseltme
- sudo uygun güncelleme
- 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
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ç 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
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:
Uzaktan Sulama Sistemini Çalıştırmak ve İzlemek İçin Mikrodenetleyici Kullanımı: 4 Adım
Uzaktan Sulama Sistemini Çalıştırmak ve İzlemek için Mikrodenetleyicilerin Kullanımı: Düşük maliyetli otomatik sulama sistemi için çiftçiler ve sera operatörleri. Bu projede, toprak çok kuruduğunda insan müdahalesi olmadan bitkileri otomatik olarak sulamak için bir mikro denetleyici ile elektronik bir toprak nem sensörü entegre ediyoruz
Düşük Güç Tüketimi Çağında Kablosuz Haberleşme Modüllerinin Güç Tüketimi Nasıl Doğru Ölçülür?: 6 Adım
Düşük Güç Tüketimi Çağında Kablosuz Haberleşme Modüllerinin Güç Tüketimi Nasıl Doğru Ölçülür?: Düşük güç tüketimi, Nesnelerin İnterneti'nde son derece önemli bir kavramdır. Çoğu IoT düğümünün pillerle çalıştırılması gerekir. Yalnızca kablosuz modülün güç tüketimini doğru bir şekilde ölçerek ne kadar pil kullandığımı doğru bir şekilde tahmin edebiliriz
Esp8266 Kullanarak Aletleri Kontrol Etmek ve Havayı İzlemek İçin Bir IoT Cihazı Nasıl Yapılır: 5 Adım
Esp8266 Kullanarak Cihazları Kontrol Etmek ve Havayı İzlemek İçin Bir IoT Cihazı Nasıl Yapılır: Nesnelerin İnterneti (IoT), fiziksel cihazların ("bağlı cihazlar" ve "akıllı cihazlar" olarak da anılır), binaların, ve elektronik, yazılım, sensörler, aktüatörler ve
Ayak Pedal Kontrollü 5 Galon Su Sebili: 3 Adım
Ayak Pedal Kontrollü 5 Galon Su Sebili: Yaşadığım yer gibi bazı ülkelerde (Türkiye), bir kaptan su dağıtmak için el pompalarında sıkıntı yaşıyoruz. Bazı el pompaları hantaldır ve küçük çocukların gerekli gücü sağlamada sorunları vardır. Bu yüzden bir ayak kullanmayı düşündüm
Ağ Üzerinden Video İzlemek için HP T5700 İnce İstemci Kullanma: 9 Adım
Ağ Üzerinden Video İzlemek için HP T5700 İnce İstemci Kullanma: Bu Eğitilebilir Kitapta, Ağınızda erişilebilen Video Dosyalarını izlemenizi sağlayacak Küçük Set üstü kutusunun nasıl yapıldığını göstereceğim. VLC'yi bir HP T5700 ince istemcinin kalıcı flash sürücüsüne yükleyerek Sadece birkaç dakikalık s