Mündəricat:

Kontaktsiz Su Çeşməsi: 9 Addım (Şəkillərlə birlikdə)
Kontaktsiz Su Çeşməsi: 9 Addım (Şəkillərlə birlikdə)

Video: Kontaktsiz Su Çeşməsi: 9 Addım (Şəkillərlə birlikdə)

Video: Kontaktsiz Su Çeşməsi: 9 Addım (Şəkillərlə birlikdə)
Video: Smartfonla necə NFC ödəniş etmək olar? | Technote 2024, Noyabr
Anonim
Kontaktsiz Su Çeşməsi
Kontaktsiz Su Çeşməsi

MCT tələbəsi olaraq ilk ilimin sonunda, il ərzində kurslardan topladığım bütün bacarıqları özündə birləşdirən bir layihə hazırlamağı tapşırdım.

Müəllimlərim tərəfindən qoyulan bütün tələbləri yoxlayacaq və eyni zamanda mənim üçün əyləncəli olacaq bir layihə axtarırdım. Bir mövzu axtararkən Covid-19dan ilhamlandığımı hiss edə bilmədim (Bu, dünya miqyasında yayılmağa başlamazdan əvvəl idi.) Bir yol təklif edəcəyi kimi daha az su çeşməsi/paylayıcı ilə əlaqə qurmağı seçdim. Su çıxmazdan əvvəl bəzi düymələrə toxunmadan su içmək.

Bu layihə, su çıxışı altına bir fincan və ya stəkan qoyulduğunu təyin etmək üçün bir məsafə sensoru istifadə edir, sonra çeşmə 60 saniyə (100ml / dəq) suyun çıxışına davam edəcək. Bu, daha ardıcıl etməkdir, çünki şüşənin çəkilib -çəkilmədiyini müəyyən etmək çox çətin/yavaş olduğunu sübut etdi, buna görə də bir taymer qoyuldu. Şüşəniz 100 ml su ilə doldurulduqdan sonra 5 saniyə gözləyə bilərsiniz və əgər şüşə hələ də məsafə sensoru qarşısındadırsa başqa vaxt doldurmağa davam edəcək (bu da iki fərqli doldurma arasında 5 saniyəlik bir fasilə olduğunu bildirir) maddələr).

Təchizat

Komponentlər

- 1x RaspberryPi (4-cü versiyanı istifadə etdim, amma köhnə versiyalar da işləyə bilər)- 1x S8050 tranzistoru və ya 1x PN2222 tranzistoru da işləyə bilər- 1x Fotoresistor- 1x HC-SR04 (Ultrasonik Məsafə Sensoru)- 1x RFID-RC522- 3x Fərqli rəng LEDləri (mavi, sarı, qırmızı)- 1x LCD1602- 1x Aktiv Buzzer- 1x PCF8574- 1x MCP3008- 1x Su Pompası (12v peristaltik nasos istifadə olunmuşdur, bu elementə keçid)

- 1x DC Enerji təchizatı (12v, 600mAh)- 3 nöqtəli 1x güc kərpic- 3x çörək taxtası (ehtimal ki, daha az istifadə edə bilərsiniz)- RaspberryPi GPIO sancaqları üçün T-ayaqlayıcı- T-ayaqqabı kabeli (pi ilə ayaqqabı arasında əlaqə üçün)

İstifadə olunan alətlər və materiallar

- Aşağıdakı matkap ucları olan bir matkap:

- 4 mm (vintlər üçün əvvəlcədən delik açmaq üçün) - 15 mm (məsafə sensoru üçün delik açmaq üçün)

- İstənilən tornavida- 45 mm uzunluğunda 30 vida- 20 mm-lik 6 vida- Qapı üçün 2 menteşə- Təxminən 130 sm-dən 80 sm-ə qədər MDF lövhəsi- Bir neçə fayl

Addım 1: Dövrün montajı

Dövrə yığılması
Dövrə yığılması
Dövrə yığılması
Dövrə yığılması
Dövrə yığılması
Dövrə yığılması

Dövrə üçün 2 sensor, bir məsafə sensoru və bir fotorezistor var. Məsafə sensoru, su fəvvarəsi aralığına bir fincan qoyulub -salınmadığını təyin etmək üçün istifadə olunur və isteğe bağlı olaraq bir fotorezistor əlavə etdim, bu korpusun açılmaması lazım olan hər kəs tərəfindən açıldığını aşkar etmək üçün istifadə olunur. Bunun üzərinə RFID oxuyucumuz var, bu, su anbarını doldurmaq üçün və ya başqa bir mexaniki problem üçün işi açması lazım olan bir mexaniki təsdiqləmək üçün istifadə edilə bilər.

LCD1602, aktiv buzzer və peristaltik nasosumuz olan aktiv elementlər üçün, vəziyyət açıq olduqda və ya nasos işləyərkən cihazın IP ünvanı göstəriləcəyi kimi vəziyyətin göstərilməsi üçün istifadə olunur. kimsə icazə vermədən iş açıldığında həyəcan verici bir səs çıxarmaq üçün istifadə olunur.

Aşağıdakı dövrənin çörək taxtasını və sxematik görünüşlərini əlavə etdim.

Addım 2: RaspberryPi qurmaq

RaspberryPi qurmaq üçün, Raspberry saytından görüntü proqramını yükləyəcəyik, bununla istədiyiniz Raspbian versiyasını yükləyə və SDCARD -ı sizin üçün görə bilərsiniz. Bu alət işini bitirdikdən sonra Windows Explorer -də SDCARD -ı aça bilərsiniz, RaspberryPi -nin yükləmə hissəsini görə biləcəksiniz. Burada cmdline.txt adlı bir fayl tapacağıq (bu faylı notepadda açmayın, Notepad ++ və ya başqa bir IDE -də açın). Ethernet üzərindən cihazımıza qoşula biləcəyimizdən əmin olmaq üçün bu faylın sonuna ip = 169.254.10.1 əlavə edəcəyik (faylınızın sonunda heç bir ENTER əlavə etməyinizə əmin olun, yoxsa probleminiz olacaq).

İndi SDCARD -ı RaspberryPi -yə yerləşdirə və yükləyə, Pi -ni kompüterinizə qoşa və SSH üzərindən Pi -yə qoşulmaq üçün Putty istifadə edə bilərsiniz. Putty istifadə etmək əvəzinə Pi -yə qoşulmaq üçün aşağıdakı əmri istifadə edirəm. "ssh [email protected]" bu zaman aşımına səbəb ola bilər, buna görə səbirli olun və Pi -nin açılmasını gözləyin. Şifrə istədikdən sonra "moruq" un standart parolunu dolduracağıq. Daxil olduqdan sonra pis niyyəti olan hər kəsin Raspberry Pi -yə daxil olmasını qarşısını almaq üçün bu şifrəni dəyişdirdiyinizə əmin olun.

İndi Pi-ni kodumuz üçün lazımi funksiyanı təmin etmək üçün konfiqurasiya edəcəyik. Konfiqurasiya menyusunu açmaq üçün "sudo raspi-config" istifadə edin və burada İnterfeys Seçimlərinə keçəcəyik.

Burada aşağıdakı variantları AÇIQ edəcəyik:- SPI- I2C

Pi -də simsiz internet bağlantısı qurmaq üçün bu təlimatı izləyin, bunu uğurla etdikdən sonra tələb olunan paketlərimizi quraşdıra bilərik.

Paketlər: (əmrləri burada qeyd edildiyi kimi sırayla işlədin)

Pi- sudo apt update && apt upgrade -y üçün ən son yenilikləri əldə etmək üçün aşağıdakılar

MySQL serverimizi və veb serverimizi quraşdırın- sudo apt install mariadb-server apache2

Verilənlər bazasını bu təlimatda daha sonra qurmaq üçün MySQL Workbench -dən istifadə edəcəyəm, əgər bunu istifadə etməsəniz və phpmyadmin -ə üstünlük versəniz, bunu aşağıdakı əmrlə quraşdıra bilərsiniz, başqa bir MySQL Müştəri istifadə edə bilərsiniz. verilənlər bazasını düzgün idxal edə bilirik.- sudo apt install phpmyadmin

Yuxarıda göstərilənlərin hamısını etdikdən sonra verilənlər bazamız üçün bir istifadəçi yaratmalıyıq. MySQL serverinizə daxil olmaq üçün "sudo mysql -u root" istifadə edin, burada müvafiq parol ilə db_admin adlı bir istifadəçi yaradacağıq. bu parol daha sonra təlimatlarda bir yerdə qeyd edildi. BÜTÜN İSTİFADƏLƏRİ ONLAYIN *. * QRANT SEÇİMİ İLE "dB_admin"@"%" İSTİFADƏ EDİLDİ"

MySQL terminalından çıxmaq üçün "\ q" əmrindən istifadə edin.

Python Paketleri: Davam etməzdən əvvəl hələ də bəzi python paketləri qurmalıyıq, qüsursuz bir təcrübə üçün hər şeyin olduğundan əmin olmaq üçün aşağıdakı əmri işlədin.

sudo pip3 Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev quraşdırın

Aşağıdakı MySQL -də python paketlərini birləşdirin və python3 -mysql.connector -y quraşdırın

Hər şey qaydasındadırsa, indi veb brauzerinizdə aşağıdakı ünvana sahib Pi -ni ziyarət edə bilərsiniz

Addım 3: Arxa planın qurulması

Arxa planın qurulması
Arxa planın qurulması

Burada arxa tərəfi özünüz necə qura biləcəyinizi izah edəcəyəm, əvvəlcə rar faylını aşağıdan yükləyin, müvəqqəti bir qovluğa çıxarın. Aşağıdakı etimadnamələri olan FileZilla və ya WinSCP ilə RaspberryPi -yə qoşulun:

IP: 169.254.10.1 İstifadəçi: piPassword: moruq (şifrənizi dəyişdirmisinizsə burada da edin)

Ardından açmadığınız faylları pi istifadəçisinin ev qovluğunda istədiyiniz hər hansı bir qovluğa köçürməyə davam edə bilərsiniz. Sadəlik naminə bu quruluşda bütün sənədlərimizi sənəd qovluğuna yüklədiyimizi güman edəcəyik.

Növbəti addım üçün FTP proqramınızı açıq saxlayın!

İndi SSH bağlantınızla yenidən əmr istəyinizi açın, çünki veb -serverdə bəzi dəyişikliklər etməliyik, belə ki ön uç arxa tərəflə əlaqə saxlaya bilər. Varsayılan Apache2 konfiqurasiya faylını açıb bir qədər dəyişdirəcəyik: sudo nano /etc/apache2/sites-available/000-default.conf

Yeni açdığımız konfiqurasiya faylına DocumentRoot -un altına aşağıdakı sətirləri əlavə edin: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Bir nümunə üçün əlavə edilmiş şəklə baxa bilərsiniz.

Addım 4: Ön ucun qurulması

Fayllarımızı köçürməzdən əvvəl ön uç fayllarımızı köçürməyə başlamazdan əvvəl bir şey etməliyik. Daha əvvəl qurduğunuz SSH bağlantısı ilə əmr satırınızı açın və RaspberryPi -nin kök istifadəçisinə keçmək üçün aşağıdakı əmrdən istifadə edin: "sudo su -"

Bundan sonra, kök istifadəçimizin parolunu aşağıdakı komanda ilə dəyişə bilərik: "passwd" Bu, yeni bir parol daxil etməyinizi xahiş edəcək, bunu etdikdən sonra yenidən FTP proqramınıza keçə və kök məlumatlarınızla daxil ola bilərsiniz:

IP: 169.254.10.1 İstifadəçi: rootPassword:

Rar faylını aşağıdan yükləyin və müvəqqəti bir qovluqda açın, bu faylları RaspberryPi -yə aşağıdakı qovluğa/var/www/html/köçürə bilərsiniz, bunu bitirdikdən sonra http:/ /169.254.10.1, hələ əlaqə qura bilməzsiniz, çünki arxa tərəf hələ işləmir, bunu daha sonra bu təlimatda sizə göstərəcəyəm.

Addım 5: Layihəmiz üçün Verilənlər Bazasını İdxal edin

Layihəmiz üçün Verilənlər Bazasını İdxal etmək
Layihəmiz üçün Verilənlər Bazasını İdxal etmək
Layihəmiz üçün Verilənlər Bazasını İdxal etmək
Layihəmiz üçün Verilənlər Bazasını İdxal etmək

Sevdiyiniz MySQL server idarəetmə proqramını açın və 2 -ci addımda yaratdığımız məlumatlarla Raspberry Pi -yə qoşulun.

Verilənlər bazası zibilini aşağıdan yükləyin və normalda olduğu kimi idxal edin, MySQL iş tezgahına Fayl> Aç SQL Skriptinə gedin və yüklədiyiniz verilənlər bazası boşluğunu seçin. Sonra CTRL + SHIFT + ENTER düymələrini basın və SQL skripti və quruluşu işləməlidir. üçün verilənlər bazası yaradılmalıdır.

Aşağıdakı nümunə olaraq RaspberryPi üçün istifadə etdiyim etimadnamələri və Veritabanı quruluşunun bir neçə şəklini əlavə etdim, buna baxa və hər şeyin necə işlədiyinə dair ümumi bir fikir əldə edə bilərsiniz.

Addım 6: Layihəmizə Başlayın

Layihəmizin Başlanması
Layihəmizin Başlanması
Layihəmizin Başlanması
Layihəmizin Başlanması

Layihəmizə başlamazdan əvvəl config.py faylındakı verilənlər bazası məlumatlarını dəyişdirməliyik, əgər bu təlimatın dediyi kimi təlimatlara əməl etsəniz, bunları /home/pi/Documents/Backend/src/config.py altında tapa bilərsiniz. burada db_config dəyişəninin etimadnaməsini verilənlər bazamız üçün əvvəllər yaratdığımıza uyğun olaraq dəyişdirməlisiniz. Aşağıda bu faylda görəcəyiniz bir nümunə əlavə etdim.

Bundan sonra bir.service faylı əlavə edəcəyik, bu fayl RaspberryPi başladıqda layihəmizin başladığından əmin olacaq, arxa plan fayllarını yüklədiyiniz yerə uyğun olaraq qovluğu dəyişdirdiyinizə əmin olun. Xidmət faylını yaratmaq üçün aşağıdakı əmrdən istifadə edin: sudo nano /etc/systemd/system/dispenser.serviceBu bir xidmət faylı yaradacaq və aşağıdakı kodu bu fayla yapışdıracaq.

[Bölmə] Təsvir = Su DispenserAfter = mysql.service

[Xidmət] Növ = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Quraşdır] WantedBy = multi-user.target

/Home/pi/Documents/Backend/index.py deyildiyi sətri arxa plan fayllarınızı quraşdırdığınız yerə dəyişdirin, əgər bunu düzgün etməsəniz, layihə düzgün başlamaz! Aşağıda bir nümunə faylı əlavə edəcəyəm.

Bunu etdiyinizdən və mətn redaktorundan çıxdıqdan sonra xidməti aşağıdakı əmrlərlə aktivləşdirə bilərik:- sudo systemctl daemon-reload- sudo systemctl dispenseri işə salın- sudo systemctl start dispenser

Əlavə olaraq işləyə bilərik: sudo systemctl status dispenserBu, xidmətimiz ətrafında bəzi məlumatları göstərəcək, aktivdir və ya olmursa…

Addım 7: Dava

Hal
Hal
Hal
Hal
Hal
Hal
Hal
Hal

Təbrik edirəm, az qala oradayıq, layihəm üçün istifadə etdiyim ölçüləri dəqiq göstərəcək bəzi şəkillər əlavə edəcəyəm, qalınlığı 18 mm olan MDF lövhələrdən istifadə etdim, istəsəniz fərqli bir qalınlıqdan istifadə edə bilərsiniz. Qutum sizin dizaynınız üçün bir təlimat olaraq istifadə edilə bilər və ya hazırladıqlarımı yenidən yarada bilərsiniz. (Fərqli bir MDF qalınlığından istifadə edirsinizsə, mənim rəsmlərim artıq dizaynımı hazırlamağa imkan verməyəcək, onu uyğunlaşdırdığınızdan əmin olun!) Hazırladığım panellər:- 32 sm-dən 42 sm-ə qədər 2 panel (yan panellər)- 24 sm-lik 1 panel 32 sm (alt plitə)- 16 sm-dən 24 sm-ə qədər 2 panel (LCD-nin qaldığı ön lövhə və qonşu plaka)- 28 sm-dən 24 sm-ə qədər 1 panel (ön plandan görünür)- 30 sm-dən 24 sm-ə qədər 1 panel (üst lövhə)

Addım 8: Son Məhsula heyran olun

Son Məhsula heyran olun
Son Məhsula heyran olun
Son Məhsula heyran olun
Son Məhsula heyran olun

Siz sona çatdınız və indiyə qədər hər şeyi reallığa çevirməyi bacardınız. Yalnız yoldan keçən birisinizsə, xoş gəldiniz, son addıma qədər oxuduğunuz üçün təşəkkür edirəm!

Bu layihəyə çoxlu qan, tər və göz yaşı sərf etdim, buna görə də şərh yazsanız, bunu qiymətləndirərəm, təkmilləşdirilməsi ilə bağlı hər hansı bir tənqid xoş qarşılanır!

Addım 9: Problemlər

Layihəni daha çox təkmilləşdirmələri görə bilən işləyən bir prototip olaraq indiki vəziyyətinə gətirərdim.

Arxa planın kod bazası, bir fəvvarənin əsas cəbhə rolunu oynayacağı və digər bütün çeşmələrin məlumatları və dəyişiklikləri ustanın REST api üzərində itələyəcəyi bir şəkildə, əsas qul münasibətləri mükəmməl şəkildə qurulacaq şəkildə qurulmuşdur. Kodda tətbiq olunmaq üçün nəzərdə tutulduğu, lakin zaman məhdudiyyətləri səbəbindən sonradan kəsildiyi üçün bir API token sisteminin qalıqları da var.

Kodumu Gitlab serverimə yüklədim və orada bütövlükdə koda baxa bilərsiniz:

Tövsiyə: