İçindekiler:

Temassız Su Çeşmesi: 9 Adım (Resimli)
Temassız Su Çeşmesi: 9 Adım (Resimli)

Video: Temassız Su Çeşmesi: 9 Adım (Resimli)

Video: Temassız Su Çeşmesi: 9 Adım (Resimli)
Video: Ünal turan Azad yılmaz Karşıma çıkın dedi 2024, Temmuz
Anonim
Temassız Su Çeşmesi
Temassız Su Çeşmesi

Bir MCT öğrencisi olarak ilk yılın sonunda, yıl boyunca kurslardan edindiğim tüm becerileri içeren bir proje yapmakla görevlendirildim.

Öğretmenlerim tarafından belirlenen tüm gereksinimleri kontrol edecek ve aynı zamanda benim için eğlenceli olacak bir proje arıyordum. Bir konu ararken, Covid-19'dan ilham aldığımı hissetmeden edemedim (Bu, dünya çapında bir salgına gitmeden hemen önceydi.) Temassız bir su çeşmesi / sebilini seçtim, çünkü bir yol sunacak. su çıkmadan önce bazı düğmelere dokunmadan su içmek.

Bu proje, su çıkışının altına bir bardak veya bardak yerleştirilip yerleştirilmediğini algılamak için bir mesafe sensörü kullanır, fıskiye daha sonra 60 saniye boyunca (100ml/dakika) su çıkışına devam eder. Bu, daha tutarlı hale getirmek içindir, çünkü camın çekilip çekilmediğini tespit etmek, bir görevin çok zor/yavaş olduğunu kanıtladı, bu nedenle bir zamanlayıcı yerleştirildi. Bardağınız 100ml su ile doldurulduktan sonra 5 saniye bekleyebilirsiniz ve bardak hala mesafe sensörünün önündeyse başka bir süre doldurmaya geçecektir (bu da iki farklı doldurma arasında 5 saniyelik bir zaman aşımı olduğu anlamına gelir). öğeler).

Gereçler

Bileşenler

- 1x RaspberryPi (4. sürümü kullandım ama eski sürümler de çalışabilir)- 1x S8050 transistör veya 1x PN2222 transistör de çalışabilir- 1x Fotodirenç- 1x HC-SR04 (Ultrasonik Mesafe Sensörü)- 1x RFID-RC522- 3x Farklı renkler LED'ler (mavi, sarı, kırmızı)- 1x LCD1602- 1x Aktif Buzzer- 1x PCF8574- 1x MCP3008- 1x Su Pompası (12v peristaltik pompa kullanıldı, bu öğeye bağlantı)

- 1x DC Güç kaynağı (12v, 600mAh) - 3 noktalı 1x elektrikli tuğla - 3x devre tahtası (muhtemelen daha az kullanabilirsiniz) - RaspberryPi GPIO pinleri için T-ayakkabı kablosu (pi ve ayakkabıcı arasında bağlantı için)

Kullanılan malzeme ve araçlar

- Aşağıdaki matkap uçlarına sahip bir matkap:

- 4mm (vidalar için önceden delik açmak için) - 15mm (mesafe sensörü için delikler açmak için)

- Herhangi bir tornavida - 45 mm uzunluğunda 30 vida - 20 mm'lik 6 vida - Kapı için 2 menteşe - Yaklaşık 130cm x 80cm MDF levha - Birkaç dosya

Adım 1: Devrenin Montajı

Devrenin Montajı
Devrenin Montajı
Devrenin Montajı
Devrenin Montajı
Devrenin Montajı
Devrenin Montajı

Devre için 2 sensörümüz var, bir mesafe sensörü ve bir fotodirenç. Mesafe sensörü, çeşmenin menziline bir bardak konup konulmadığını algılamak için kullanılıyor ve isteğe bağlı olarak bir fotorezistör ekledim, bu, kasanın açmaması gereken biri tarafından açılıp açılmadığını algılamak için kullanılıyor. Üstüne üstlük bir RFID okuyucumuz var, bu, su deposunu yeniden doldurmak için kasayı açması gereken bir tamircinin kimliğini doğrulamak veya başka bir mekanik sorun için kullanılabilir.

LCD1602, aktif buzzer ve peristaltik pompaya sahip olduğumuz aktif elemanlar için, LCD, kasanın açık olup olmadığı veya pompanın çalıştığı gibi durumu görüntülemek için kullanılır ve ayrıca cihazın IP adresi gösterilir, sesli uyarı verilir. Birisi yetkilendirmeden dava açıldığında endişe verici bir ses çıkarmak için kullanılır.

Aşağıda devrenin breadboard ve şematik görünümlerini ekledim.

Adım 2: RaspberryPi'mizi Ayarlama

RaspberryPi'mizi kurmak için Raspberry sitesinden görüntüleme yazılımını indireceğiz, bununla istediğiniz Raspbian sürümünü indirebilir ve SDCARD'ınızı sizin için görüntüleyebilirsiniz. Bu araç işini yaptıktan sonra Windows Gezgini'nde SDCARD'ı açabilirsiniz, RaspberryPi'nizin önyükleme bölümünü görebileceksiniz. Burada cmdline.txt adında bir dosya bulacağız (bu dosyayı not defterinde açmayın, Notepad++ veya başka bir IDE ile açın). Cihazımıza ethernet üzerinden bağlanabileceğimizden emin olmak için bu dosyanın sonuna ip=169.254.10.1 ekleyeceğiz (dosyanızın sonuna ENTER eklemediğinizden emin olun yoksa sorun yaşarsınız).

Artık SDCARD'ınızı RaspberryPi'nize yerleştirebilir ve önyükleyebilir, Pi'yi bilgisayarınıza bağlayabilir ve SSH üzerinden Pi'nize bağlanmak için Putty'yi kullanabilirsiniz. Putty kullanmak yerine Pi'me bağlanmak için aşağıdaki komutu kullanıyorum. "ssh [email protected]"bu zaman aşımına uğrayabilir, bu yüzden sabırlı olun ve Pi'nin açılmasını bekleyin. Bir şifre sorulduğunda, "ahududu" varsayılan şifresini dolduracağız. Raspberry Pi'nize kötü niyetli kişilerin erişmesini önlemek için giriş yaptıktan sonra bu şifreyi değiştirdiğinizden emin olun.

Şimdi Pi'mizi kodumuz için gerekli işlevselliği sağlayacak şekilde yapılandıracağız. Yapılandırma menüsünü açmak için "sudo raspi-config" kullanın ve burada Arayüz Seçenekleri'ne gideceğiz.

Burada aşağıdaki seçenekleri AÇIK duruma getireceğiz: - SPI- I2C

Pi'nizde kablosuz bir internet bağlantısı kurmak için bu kılavuzu izleyin, bunu başarıyla yaptıktan sonra gerekli paketlerimizi kurabiliriz.

Paketler: (komutları burada belirtildiği sırayla çalıştırın)

Pisudo apt update && apt upgrade -y için en son güncellemeleri almak için aşağıdakiler

MySQL sunucumuzu ve web sunucumuzu kurun- sudo apt install mariadb-server apache2

Veritabanını bu kılavuzun ilerleyen kısımlarında kurmak için MySQL Workbench kullanacağım, bunu kullanmıyorsanız ve phpmyadmin'i tercih ederseniz, bunu aşağıdaki komutla yükleyebilirsiniz, istediğiniz sürece başka bir MySQL İstemcisini kullanmakta özgürsünüz. 'veritabanını düzgün bir şekilde içe aktarabiliyoruz.- sudo apt install phpmyadmin

Yukarıdakilerin hepsini yaptıktan sonra veritabanımız için bir kullanıcı oluşturmamız gerekiyor. MySQL sunucunuza giriş yapmak için "sudo mysql -u root" kullanın, burada db_admin adında ilgili şifresi ile bir kullanıcı oluşturacağız, sakla bu şifre talimatların bir yerine not edilmiştir. *.* ÜZERİNE TÜM AYRICALIKLARI "db_admin"@"%" ÜZERİNE GRANT SEÇENEĞİ İLE "ŞifrenizBuraya" TARAFINDAN TANIMLANIR;

MySQL terminalinden çıkmak için "\q" komutunu kullanın.

Python Paketleri: Devam etmeden önce hala bazı python paketleri kurmamız gerekiyor, kusursuz bir deneyim için her şeyin orada olduğundan emin olmak için aşağıdaki komutu çalıştırın.

sudo pip3 Flask Flask-Cors'u kurun Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Aşağıdaki MySQL connect python packagesudo apt install python3-mysql.connector -y'nin yanı sıra

Her şey yolunda giderse, Pi'nizi web tarayıcınızda şu adresle ziyaret edebilirsiniz:

3. Adım: Arka Uç Kurulumu

Arka Uç Kurulumu
Arka Uç Kurulumu

Burada arka ucu kendiniz nasıl kurabileceğinizi anlatacağım, önce rar dosyasını aşağıdan indirin, rar dosyasını geçici bir dizine açın. RaspberryPi'nize FileZilla veya WinSCP ile aşağıdaki kimlik bilgileriyle bağlanın:

IP: 169.254.10.1Kullanıcı: piPassword: ahududu (şifreyi değiştirdiyseniz burada da yapın)

Daha sonra, pi kullanıcısının ana dizininde istediğiniz herhangi bir dizine unrarrdığınız dosyaları aktarmaya devam edebilirsiniz. Basitlik adına, bu kurulumda tüm dosyalarımızı belge dizini altına yüklediğimizi varsayacağız.

Bir sonraki adım için FTP programınızı açık tutun!

Şimdi komut isteminizi SSH bağlantınızla tekrar açın çünkü ön ucun arka uçla iletişim kurabilmesi için web sunucusunda bazı değişiklikler yapmamız gerekecek. Varsayılan Apache2 yapılandırma dosyasını açıp biraz değiştireceğiz:sudo nano /etc/apache2/sites-available/000-default.conf

Yeni açtığımız yapılandırma dosyasında DocumentRoot'un altına aşağıdaki satırları ekleyin:ProxyPass /api/ https://127.0.0.1:5000/api/ProxyPassReverse /api/

Örnek olması açısından ekteki görseli inceleyebilirsiniz.

Adım 4: Ön Uç Kurulumu

Dosyalarımızı aktarmadan önce ön uç dosyalarımızı aktarmaya başlamadan önce bir şeyler yapmamız gerekecek. Daha önce yaptığınız SSH bağlantısı ile komut isteminizi açın ve RaspberryPi'mizin kök kullanıcısına geçmek için aşağıdaki komutu kullanın: "sudo su -"

Bundan sonra aşağıdaki komutla root kullanıcımızın şifresini değiştirebiliriz: "passwd"Bu sizden yeni bir şifre girmenizi isteyecektir, bunu yaptıktan sonra FTP programınıza geri dönebilir ve root kimlik bilgilerinizle giriş yapabilirsiniz:

IP: 169.254.10.1Kullanıcı: rootParola:

Rar dosyasını aşağıdan indirin ve geçici bir klasörde açın, bu dosyaları RaspberryPi'nize aşağıdaki /var/www/html/ dizinine taşıyabilirsiniz, bunu yaptıktan sonra http:/ adresindeki ön ucu ziyaret edebilirsiniz. /169.254.10.1, arka uç henüz çalışmadığı için henüz etkileşim kuramazsınız, bunun nasıl yapılacağını bu kılavuzda daha sonra göstereceğim.

Adım 5: Projemiz İçin Veritabanını İçe Aktarma

Projemiz İçin Veritabanını İçe Aktarma
Projemiz İçin Veritabanını İçe Aktarma
Projemiz İçin Veritabanını İçe Aktarmak
Projemiz İçin Veritabanını İçe Aktarmak

Favori MySQL sunucu yönetim programınızı açın ve 2. Adımda oluşturduğumuz kimlik bilgileriyle Raspberry Pi'nize bağlanın.

Veritabanı dökümünü aşağıdan indirin ve normalde yaptığınız gibi içe aktarın, MySQL tezgahında Dosya > SQL Komut Dosyasını Aç seçeneğine gidin ve indirdiğiniz veritabanı dökümünü seçin. Ardından CTRL + SHIFT + ENTER tuşlarına basın ve SQL betiği çalıştırılmalı ve yapı veritabanı için oluşturulmalıdır.

Aşağıdaki örnek olarak RaspberryPi'm için kullandığım kimlik bilgilerini ve Veritabanı yapısının birkaç resmini ekledim, ona bir göz atabilir ve her şeyin nasıl çalıştığına dair genel bir fikir edinebilirsiniz.

Adım 6: Projemizi Başlatmak

Projemizi Başlatmak
Projemizi Başlatmak
Projemizi Başlatmak
Projemizi Başlatmak

Projemizi başlatmadan önce config.py dosyasındaki veritabanı kimlik bilgilerini değiştirmemiz gerekiyor, talimatları tam olarak bu kılavuzda belirtildiği gibi izlediyseniz, bunları /home/pi/Documents/Backend/src/config.py altında bulabilirsiniz. burada, db_config değişkeninin kimlik bilgilerini, veritabanımız için daha önce oluşturduğumuzlarla eşleştirmek için değiştirmeniz gerekir. Aşağıda bu dosyada göreceğiniz şeyin bir örneğini ekledim.

Bundan sonra bir.service dosyası ekleyeceğiz bu dosya RaspberryPi başladığında projemizin başlamasını sağlayacak, arka uç dosyalarını kurduğunuz dizini uygun şekilde değiştirdiğinizden emin olun. Hizmet dosyasını oluşturmak için aşağıdaki komutu kullanın: sudo nano /etc/systemd/system/dispenser.serviceBu, bir hizmet dosyası oluşturacak ve aşağıdaki kodu kopyalayıp bu dosyaya yapıştıracaktır.

[Unit]Description=Su SebiliAfter=mysql.service

[Service]Type=simpleRestart=alwaysRestartSec=1User=piExecStart=/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Yükle]WantedBy=çok kullanıcılı.target

/home/pi/Documents/Backend/index.py yazan satırı, arka uç dosyalarınızı kurduğunuz yere değiştirin, bunu doğru yapmazsanız proje doğru başlatılmaz! Aşağıya bir örnek dosya ekleyeceğim.

Bunu yaptıktan ve metin düzenleyiciden çıktıktan sonra aşağıdaki komutlarla hizmeti etkinleştirebiliriz:- sudo systemctl daemon-reload- sudo systemctl dispenser etkinleştir- sudo systemctl start dispenser

Ve ek olarak şunları çalıştırabiliriz:sudo systemctl status dispenserBu, hizmetimizin etkin olup olmadığıyla ilgili bazı bilgileri gösterecektir, …

Adım 7: Vaka

Dosya
Dosya
Dosya
Dosya
Dosya
Dosya
Dosya
Dosya

Tebrikler neredeyse geldik, projem için kullandığım ölçüleri tam olarak gösterecek resimler ekleyeceğim, 18mm kalınlığında MDF levhalar kullandım, isteğe bağlı olarak farklı bir kalınlıkta kullanabilirsiniz. Kasam, sizinkini tasarlamak için bir kılavuz olarak kullanılabilir veya benim yaptığımı yeniden oluşturabilirsiniz. (Farklı kalınlıkta MDF kullanırsanız, çizimlerim artık tasarımımı yapmanıza izin vermeyecektir, uyarladığınızdan emin olun!)Yaptığım panolar:- 2 pano 32cm x 42cm (yan panolar)- 1 pano 24cm x 32cm (alt plaka)- 2 panel 16cm x 24cm (LCD'nin kaldığı ön plaka ve komşu plaka) - 1 panel 28cm x 24cm (önden orta plaka) - 1 panel 30cm x 24cm (üst plaka)

8. Adım: Nihai Ürüne hayran kalın

Nihai Ürüne hayran kalın
Nihai Ürüne hayran kalın
Nihai Ürüne hayran kalın
Nihai Ürüne hayran kalın

Sona ulaştınız ve şimdiye kadar umarım her şeyi gerçeğe dönüştürmeyi başardınız. Eğer sadece yoldan geçen biriyseniz, ayrıca hoş geldiniz, son adıma kadar okuduğunuz için teşekkür ederim!

Bu projeye çok kan, ter ve gözyaşı harcadım, bu yüzden bir yorum bırakırsanız minnettar olurum, onu geliştirmek için herhangi bir eleştiriye açığım!

9. Adım: Sorunlar

Projeyi mevcut durumuna, çok daha fazla iyileştirme görebilen çalışan bir prototip olarak koyardım.

Arka ucun kod tabanı, bir çeşmenin ana ön uç olarak hareket edeceği ve diğer tüm çeşmelerin veriyi ve değişiklikleri efendinin REST api'si üzerinden ileteceği bir ana bağımlı ilişkisi mükemmel bir şekilde kurulabilecek şekilde yapılandırılmıştır. Ayrıca, uygulanması amaçlandığı, ancak zaman kısıtlamaları nedeniyle daha sonra kesildiği için kodda bir API belirteç sisteminin kalıntıları da vardır.

Kodumu Gitlab sunucuma yükledim ve orada kodun tamamına göz atabilirsiniz:https://git.damon.sh/Yimura/project-1

Önerilen: