Isi kandungan:

Air Mancur Tanpa Sentuhan: 9 Langkah (dengan Gambar)
Air Mancur Tanpa Sentuhan: 9 Langkah (dengan Gambar)

Video: Air Mancur Tanpa Sentuhan: 9 Langkah (dengan Gambar)

Video: Air Mancur Tanpa Sentuhan: 9 Langkah (dengan Gambar)
Video: Adakah sebab ini Diana Danielle mahu berpisah... 2024, Julai
Anonim
Pancutan Air Tanpa Hubungan
Pancutan Air Tanpa Hubungan

Untuk akhir tahun pertama saya sebagai pelajar MCT saya ditugaskan untuk membuat projek yang mengandungi semua kemahiran yang saya peroleh dari kursus sepanjang tahun.

Saya mencari projek yang akan memeriksa semua syarat yang ditetapkan oleh guru saya dan pada masa yang sama menyenangkan untuk saya buat. Semasa mencari subjek, saya tidak dapat menahan diri daripada merasa terinspirasi oleh Covid-19 (Ini tepat sebelum menjangkiti wabak di seluruh dunia.) Saya memilih untuk menghubungi lebih sedikit air pancut / dispenser, kerana ia akan ditawarkan minum air tanpa menyentuh beberapa butang sebelum air keluar.

Projek ini menggunakan sensor jarak untuk mengesan jika cawan atau gelas telah diletakkan di bawah output air, air pancut kemudian akan mengeluarkan air selama 60 saat (100ml / minit). Ini untuk menjadikannya lebih konsisten kerana mengesan jika kaca telah ditarik terbukti terlalu sukar / lambat untuk tugas itulah sebabnya pemasa dipasang. Setelah gelas anda diisi dengan 100ml air, anda boleh menunggu selama 5 saat dan jika gelas masih di hadapan sensor jarak, ia akan terus mengisi masa yang lain (ini bermakna terdapat juga masa tamat 5 saat antara mengisi dua yang berbeza barang).

Bekalan

Komponen

- 1x RaspberryPi (Saya menggunakan versi ke-4 tetapi versi yang lebih lama mungkin berfungsi juga) - 1x S8050 transistor atau 1x PN2222 transistor mungkin berfungsi juga- 1x Fotoresistor- 1x HC-SR04 (Sensor Jarak Ultrasonik) - 1x RFID-RC522- 3x Berbeza LED warna (biru, kuning, merah) - 1x LCD1602- 1x Buzzer Aktif- 1x PCF8574- 1x MCP3008- 1x Pam Air (Pam peristaltik 12v telah digunakan, pautan ke item ini)

- 1x DC Power supply (12v, 600mAh) - 1x bata kuasa dengan 3 tempat - 3x papan roti (anda mungkin boleh menggunakan lebih sedikit) - T-cobbler untuk pin RaspberryPi GPIO- Kabel T-cobbler (untuk menghubungkan antara pi dan tukang sepatu)

Bahan dan alat yang digunakan

- Gerudi dengan bit gerudi berikut:

- 4mm (untuk lubang pra-gerudi untuk skru) - 15mm (untuk mengebor lubang untuk sensor jarak)

- Mana-mana pemutar skru- 30 skru 45mm panjang- 6 skru 20mm- 2 engsel untuk pintu- Plat MDF sekitar 130cm x 80cm- Beberapa fail

Langkah 1: Memasang Litar

Memasang Litar
Memasang Litar
Memasang Litar
Memasang Litar
Memasang Litar
Memasang Litar

Untuk litar kami mempunyai 2 sensor, sensor jarak dan fotoresistor. Sensor jarak digunakan untuk mengesan jika cawan telah dimasukkan ke dalam air pancut dan secara opsional saya menambahkan fotoresistor, yang ini digunakan untuk mengesan jika selongsong telah dibuka oleh orang yang tidak seharusnya membukanya. Selain itu, kita mempunyai pembaca RFID, ini dapat digunakan untuk mengesahkan mekanik yang perlu membuka casing untuk mengisi semula takungan air atau untuk masalah mekanik lain.

Untuk elemen aktif yang kita miliki LCD1602, buzzer aktif dan pam peristaltik, LCD digunakan untuk memaparkan status seperti jika casing terbuka atau pam sedang berjalan serta alamat IP peranti akan ditunjukkan, buzzer adalah digunakan untuk mengeluarkan suara yang membimbangkan ketika kotak itu dibuka tanpa ada yang membenarkannya.

Saya telah menambah paparan papan roti dan skema litar di bawah.

Langkah 2: Menyiapkan RaspberryPi Kami

Untuk menyediakan RaspberryPi kami, kami akan memuat turun perisian pengimejan dari laman Raspberry, dengan ini anda boleh memuat turun versi Raspbian yang anda mahukan dan gambar SDCARD anda untuk anda. Setelah alat ini berjaya, anda dapat membuka SDCARD di Windows Explorer, anda akan dapat melihat partisi boot RaspberryPi anda. Di sini kita akan menemui fail bernama cmdline.txt (jangan buka fail ini di notepad, buka di Notepad ++ atau IDE lain). Kami akan menambahkan ip = 169.254.10.1 di hujung fail ini untuk memastikan kami dapat menyambung ke peranti kami melalui ethernet (pastikan anda tidak menambahkan ENTER pada akhir fail anda atau anda akan menghadapi masalah).

Sekarang anda boleh meletakkan SDCARD anda di RaspberryPi anda dan boot, sambungkan Pi ke komputer anda dan gunakan Putty untuk menyambung ke Pi anda melalui SSH. Saya menggunakan arahan berikut untuk menyambung ke Pi saya dan bukannya menggunakan Putty. "ssh [email protected]" ini mungkin tamat masa, jadi bersabarlah dan tunggu sehingga Pi dimuat. Setelah diminta kata laluan, kami akan memasukkan kata laluan lalai "raspberry". Pastikan untuk menukar kata laluan ini setelah log masuk untuk mengelakkan orang yang tidak berniat mengakses Raspberry Pi anda.

Kami sekarang akan mengkonfigurasi Pi kami untuk menyediakan fungsi yang diperlukan untuk kod kami. Gunakan "sudo raspi-config" untuk membuka menu konfigurasi dan di sini kita akan pergi ke Interfacing Options.

Di bawah ini kita akan menukar pilihan berikut AKTIF: - SPI- I2C

Ikuti panduan ini untuk menyediakan sambungan internet tanpa wayar pada Pi anda, setelah berjaya melakukan ini, kami dapat memasang pakej yang kami perlukan.

Pakej: (jalankan perintah mengikut urutan seperti yang dinyatakan di sini)

Berikut ini untuk mendapatkan kemas kini terkini untuk kemas kini Pi- sudo apt kami && apt upgrade -y

Pasang pelayan MySQL dan pelayan laman web kami - sudo apt pasang mariadb-server apache2

Saya akan menggunakan MySQL Workbench untuk menyiapkan pangkalan data kemudian dalam panduan ini, jika anda tidak menggunakan ini dan lebih suka phpmyadmin anda boleh memasangnya dengan arahan berikut, anda bebas untuk menggunakan Pelanggan MySQL lain selagi anda dapat mengimport pangkalan data dengan betul. - sudo pasang phpmyadmin

Setelah anda melakukan semua perkara di atas, kami perlu membuat pengguna untuk pangkalan data kami. Gunakan "sudo mysql -u root" untuk log masuk ke pelayan MySQL anda, di sini kami akan membuat pengguna bernama db_admin dengan kata laluan masing-masing, simpan kata laluan ini dicatatkan di suatu tempat kemudian dalam arahannya. MEMBERIKAN SEMUA KEISTIMEWAAN AKTIF *. * KE "db_admin" @ "%" DIKENALI OLEH "Kata Sandi Anda Di Sini" DENGAN PILIHAN PEMBERIAN;

Gunakan perintah "\ q" untuk keluar dari terminal MySQL.

Pakej Python: Kami masih perlu memasang beberapa pakej python sebelum meneruskan, jalankan arahan di bawah ini untuk memastikan semuanya ada untuk pengalaman yang sempurna.

sudo pip3 pasang Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Serta MySQL berikut pakej python sambungkan juga untuk memasang python3-mysql.connector -y

Sekiranya semuanya betul, anda kini boleh mengunjungi Pi di browser web anda dengan alamat berikut

Langkah 3: Menyiapkan Backend

Menyiapkan Backend
Menyiapkan Backend

Di sini saya akan menerangkan bagaimana anda boleh menyiapkan backend sendiri, memuat turun fail rar dari bawah terlebih dahulu, membatalkannya ke beberapa direktori sementara. Sambungkan ke RaspberryPi anda dengan FileZilla atau WinSCP dengan kelayakan berikut:

IP: 169.254.10.1Pengguna: piPassword: raspberry (jika anda menukar kata laluan lakukan di sini juga)

Anda kemudian boleh meneruskan untuk memindahkan fail yang anda batalkan penghapusannya ke direktori yang anda mahukan di direktori utama pengguna pi. Demi kesederhanaan kami akan menganggap dalam penyediaan ini bahawa kami telah memuat naik semua fail kami di bawah direktori dokumen.

Pastikan program FTP anda terbuka untuk langkah seterusnya!

Sekarang buka prompt arahan anda lagi dengan sambungan SSH anda kerana kita perlu melakukan beberapa perubahan pada pelayan web sehingga frontend dapat berkomunikasi dengan backend. Kami akan membuka fail konfigurasi Apache2 lalai dan mengubahnya sedikit: sudo nano /etc/apache2/sites-available/000-default.conf

Tambahkan baris berikut di bawah DocumentRoot dalam fail konfigurasi yang baru kita buka: ProxyPass / api / https://127.0.0.1:5000/api/ProxyPassReverse / api /

Anda boleh melihat gambar yang dilampirkan sebagai contoh.

Langkah 4: Menyiapkan Frontend

Sebelum memindahkan fail kami, kami harus melakukan sesuatu sebelum kami mula memindahkan fail frontend kami. Buka command prompt anda dengan sambungan SSH yang anda buat sebelumnya dan gunakan arahan di bawah ini untuk beralih ke pengguna root RaspberryPi kami: "sudo su -"

Selepas ini kami dapat menukar kata laluan pengguna root kami dengan perintah berikut: "passwd" Ini akan meminta anda memasukkan kata laluan baru, setelah anda melakukan ini, anda boleh beralih kembali ke program FTP anda dan log masuk dengan kelayakan root anda:

IP: 169.254.10.1Pengguna: rootPassword:

Muat turun fail rar dari bawah dan hapus pada folder sementara, anda boleh memindahkan fail-fail ini ke RaspberryPi anda ke direktori berikut / var / www / html /, setelah anda selesai, anda boleh mengunjungi frontend di http: / / 169.254.10.1, anda belum dapat berinteraksi kerana backend masih belum berjalan, saya akan tunjukkan kemudian dalam panduan ini cara melakukannya.

Langkah 5: Mengimport Pangkalan Data untuk Projek Kami

Mengimport Pangkalan Data untuk Projek Kami
Mengimport Pangkalan Data untuk Projek Kami
Mengimport Pangkalan Data untuk Projek Kami
Mengimport Pangkalan Data untuk Projek Kami

Buka program pengurusan pelayan MySQL kegemaran anda dan sambungkan ke Raspberry Pi anda dengan kelayakan yang kami buat pada Langkah 2.

Muat turun lambakan pangkalan data dari bawah dan import seperti biasa, meja kerja MySQL anda akan pergi ke Fail> Buka Skrip SQL dan pilih dump pangkalan data yang anda muat turun. Kemudian tekan CTRL + SHIFT + ENTER dan skrip SQL harus dijalankan dan strukturnya untuk pangkalan data harus dibuat.

Saya menambah bukti yang saya gunakan untuk RaspberryPi saya sebagai contoh di bawah serta beberapa gambar struktur Pangkalan Data, anda boleh melihatnya dan mencuba dan mendapatkan idea umum tentang bagaimana semuanya berfungsi.

Langkah 6: Memulakan Projek Kami

Memulakan Projek Kami
Memulakan Projek Kami
Memulakan Projek Kami
Memulakan Projek Kami

Sebelum memulakan projek kami, kami perlu menukar kelayakan pangkalan data dalam fail config.py, jika anda mengikuti arahan seperti yang dinyatakan dalam panduan ini, anda boleh mendapatkannya di bawah /home/pi/Documents/Backend/src/config.py di sini anda perlu menukar kelayakan pemboleh ubah db_config agar sesuai dengan yang kami buat sebelumnya untuk pangkalan data kami. Saya telah menambahkan contoh yang akan anda lihat dalam fail ini di bawah.

Selepas itu, kami akan menambahkan fail.service fail ini akan memastikan projek kami bermula ketika RaspberryPi bermula, pastikan anda mengubah direktori dengan tepat di mana anda memasang fail backend. Gunakan arahan berikut untuk membuat fail perkhidmatan: sudo nano /etc/systemd/system/dispenser.serviceIni akan membuat fail perkhidmatan dan menyalin tampal kod di bawah ini ke dalam fail ini.

[Unit] Penerangan = Water DispenserAfter = mysql.service

[Perkhidmatan] Jenis = simpleRestart = selaluRestartSec = 1Pengguna = piExecStart = / usr / bin / python3 /home/pi/Documents/Backend/index.py

[Pasang] WantedBy = multi-user.target

Ubah suai garis yang tertulis /home/pi/Documents/Backend/index.py ke tempat anda memasang fail backend anda, jika anda tidak melakukan ini dengan betul, projek tidak akan dimulakan dengan betul! Saya akan menambah fail contoh di bawah.

Setelah anda melakukannya dan keluar dari editor teks, kami dapat mengaktifkan perkhidmatan dengan perintah berikut: - sudo systemctl daemon-reload- sudo systemctl enabled dispenser- sudo systemctl start dispenser

Sebagai tambahan, kami boleh menjalankan: dispoer status sudo systemctlIni akan menunjukkan beberapa maklumat di sekitar perkhidmatan kami, jika ia aktif atau tidak,…

Langkah 7: Kesnya

Kes itu
Kes itu
Kes itu
Kes itu
Kes itu
Kes itu
Kes itu
Kes itu

Tahniah kami hampir sampai di sana, saya akan menambahkan beberapa gambar yang akan menunjukkan dengan tepat dimensi yang saya gunakan untuk projek saya, saya menggunakan plat MDF setebal 18mm, anda boleh menggunakan ketebalan yang berbeza. Selongsong saya boleh dijadikan panduan untuk merancang sendiri atau anda boleh membuat semula apa yang saya buat. (Sekiranya anda menggunakan ketebalan MDF yang berbeza, gambar saya tidak akan membenarkan anda membuat reka bentuk saya, pastikan untuk menyesuaikannya!) Panel yang saya buat: - 2 panel 32cm x 42cm (panel sisi) - 1 panel 24cm oleh 32cm (plat bawah) - 2 panel 16cm x 24cm (plat depan tempat LCD berada dan plat sebelah) - 1 panel 28cm x 24cm (plat tengah dilihat dari depan) - 1 panel 30cm x 24cm (plat atas)

Langkah 8: Kagumi Produk Akhir

Kagumi Produk Akhir
Kagumi Produk Akhir
Kagumi Produk Akhir
Kagumi Produk Akhir

Anda telah sampai ke penghujungnya dan sekarang semoga berjaya menjadikan keseluruhan perkara menjadi kenyataan. Sekiranya anda hanya seorang yang suka membaca, selamat datang, saya mengucapkan terima kasih kerana membaca sehingga langkah terakhir!

Saya menghabiskan banyak darah, keringat dan air mata untuk projek ini, jadi saya akan menghargainya jika anda memberikan komen, sebarang kritikan untuk memperbaikinya adalah dialu-alukan!

Langkah 9: Masalahnya

Saya akan meletakkan projek ini dalam keadaan sekarang sebagai prototaip yang dapat melihat peningkatan yang lebih banyak.

Pangkalan kod backend disusun sedemikian rupa sehingga hubungan tuan hamba dapat dibuat dengan sempurna di mana satu mata air akan bertindak sebagai frontend utama dan semua mata air lain akan mendorong data dan perubahan di atas api REST master. Terdapat juga sisa-sisa sistem token API dalam kod kerana ini dimaksudkan untuk dilaksanakan tetapi dipotong kemudian karena kesuntukan waktu.

Saya telah memuat naik kod saya ke pelayan Gitlab saya dan di sana anda dapat melihat kodnya secara keseluruhan:

Disyorkan: