Daftar Isi:

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

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

Video: Air Mancur Tanpa Kontak: 9 Langkah (dengan Gambar)
Video: Air mancur tanpa listrik‼️#shorts 2024, Juli
Anonim
Air Mancur Tanpa Kontak
Air Mancur Tanpa Kontak

Untuk akhir tahun pertama saya sebagai mahasiswa MCT, saya ditugaskan untuk membuat proyek yang berisi semua keterampilan yang saya ambil dari kursus sepanjang tahun.

Saya sedang mencari proyek yang akan memeriksa semua persyaratan yang ditetapkan oleh guru saya dan pada saat yang sama menyenangkan untuk saya buat. Ketika mencari subjek, saya tidak bisa tidak merasa terinspirasi oleh Covid-19 (Ini tepat sebelum wabah menyebar ke seluruh dunia.) Saya memilih air mancur/dispenser tanpa kontak, karena akan menawarkan cara minum air tanpa menyentuh beberapa tombol sebelum air keluar.

Proyek ini menggunakan sensor jarak untuk mendeteksi jika cangkir atau gelas telah ditempatkan di bawah keluaran air, air mancur kemudian akan melanjutkan ke keluaran air selama 60 detik (100ml / menit). Ini untuk membuatnya lebih konsisten karena mendeteksi jika kaca telah ditarik terbukti terlalu sulit / lambat dari tugas itulah sebabnya pengatur waktu dipasang. Setelah gelas anda terisi 100ml air anda bisa menunggu selama 5 detik dan jika gelas masih berada didepan sensor jarak maka akan dilanjutkan pengisian lain waktu (ini berarti juga terdapat timeout 5 detik antara pengisian dua yang berbeda item).

Perlengkapan

Komponen

- 1x RaspberryPi (Saya menggunakan versi ke-4 tetapi versi yang lebih lama mungkin berfungsi dengan baik) - 1x transistor S8050 atau 1x transistor PN2222 mungkin berfungsi dengan baik- 1x Photoresistor- 1x HC-SR04 (Sensor Jarak Ultrasonik)- 1x RFID-RC522- 3x Berbeda warna LED (biru, kuning, merah)- 1x LCD1602- 1x Buzzer Aktif- 1x PCF8574- 1x MCP3008- 1x Pompa Air (Pompa peristaltik 12v digunakan, link ke item ini)

- 1x DC Power supply (12v, 600mAh)- 1x power brick dengan 3 tempat- 3x breadboards (Anda mungkin bisa menggunakan lebih sedikit)- T-cobbler untuk pin RaspberryPi GPIO- Kabel T-cobbler (untuk menghubungkan antara pi dan tukang sepatu)

Bahan dan alat yang digunakan

- Bor dengan mata bor berikut:

- 4mm (untuk mengebor lubang untuk sekrup) - 15mm (untuk mengebor lubang untuk sensor jarak)

- Obeng apa saja- 30 sekrup dengan panjang 45mm- 6 sekrup 20mm- 2 engsel untuk pintu- Sepiring MDF berukuran sekitar 130cm x 80cm- Beberapa file

Langkah 1: Merakit Sirkuit

Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit

Untuk rangkaian kami memiliki 2 sensor, sensor jarak dan fotoresistor. Sensor jarak digunakan untuk mendeteksi jika cangkir telah dimasukkan ke dalam jangkauan air mancur dan opsional saya menambahkan fotoresistor, yang satu ini digunakan untuk mendeteksi jika casing telah dibuka oleh orang yang tidak seharusnya membukanya. Selain itu kami memiliki pembaca RFID yang dapat digunakan untuk mengautentikasi mekanik yang perlu membuka kasing untuk mengisi ulang reservoir air atau untuk masalah mekanis lainnya.

Untuk elemen aktif kami memiliki LCD1602, buzzer aktif dan pompa peristaltik, LCD digunakan untuk menampilkan status seperti jika kasing terbuka atau pompa sedang berjalan serta alamat IP perangkat akan ditampilkan, bel berbunyi digunakan untuk membuat suara yang mengkhawatirkan ketika kasing dibuka tanpa seseorang yang mengizinkannya.

Saya telah menambahkan tampilan papan tempat memotong roti dan skema rangkaian di bawah ini.

Langkah 2: Menyiapkan RaspberryPi Our

Untuk mengatur RaspberryPi kami, kami akan mengunduh perangkat lunak pencitraan dari situs Raspberry, dengan ini Anda dapat mengunduh versi Raspbian yang Anda inginkan dan gambar SDCARD Anda untuk Anda. Setelah alat ini melakukan tugasnya, Anda dapat membuka SDCARD di Windows Explorer, Anda akan dapat melihat partisi boot RaspberryPi Anda. Di sini kita akan menemukan file bernama cmdline.txt (jangan buka file ini di notepad, buka di Notepad++ atau IDE lainnya). Kami akan menambahkan ip=169.254.10.1 di akhir file ini untuk memastikan kami dapat terhubung ke perangkat kami melalui ethernet (pastikan Anda tidak menambahkan ENTER di akhir file Anda atau Anda akan mengalami masalah).

Sekarang Anda dapat meletakkan SDCARD Anda di RaspberryPi Anda dan mem-boot-nya, sambungkan Pi ke komputer Anda dan gunakan Putty untuk terhubung ke Pi Anda melalui SSH. Saya menggunakan perintah berikut untuk terhubung ke Pi saya daripada menggunakan Putty. "ssh [email protected]"ini mungkin timeout, jadi bersabarlah dan tunggu Pi untuk boot. Setelah diminta kata sandi, kami akan mengisi kata sandi default "raspberry". Pastikan untuk mengubah kata sandi ini setelah masuk untuk mencegah siapa pun yang berniat jahat mengakses Raspberry Pi Anda.

Kami sekarang akan mengkonfigurasi Pi kami untuk menyediakan fungsionalitas yang diperlukan untuk kode kami. Gunakan "sudo raspi-config" untuk membuka menu konfigurasi dan di sini kita akan pergi ke Opsi Antarmuka.

Di bawah sini kami akan mengaktifkan opsi berikut: - SPI- I2C

Ikuti panduan ini untuk mengatur koneksi internet nirkabel di Pi Anda, setelah Anda berhasil melakukan ini, kami dapat menginstal paket yang kami butuhkan.

Paket: (jalankan perintah dalam urutan seperti yang dicatat di sini)

Berikut ini untuk mendapatkan pembaruan terbaru untuk Pi- sudo apt update && apt upgrade -y

Instal server MySQL dan server web kami- sudo apt install mariadb-server apache2

Saya akan menggunakan MySQL Workbench untuk mengatur database nanti dalam panduan ini, jika Anda tidak menggunakan ini dan lebih suka phpmyadmin, Anda dapat menginstal ini dengan perintah berikut, Anda bebas menggunakan Klien MySQL lainnya serta selama Anda 'dapat mengimpor database dengan benar.- sudo apt install phpmyadmin

Setelah Anda melakukan semua hal di atas, kita perlu membuat pengguna untuk database kita. Gunakan "sudo mysql -u root" untuk masuk ke server MySQL Anda, di sini kita akan membuat pengguna bernama db_admin dengan kata sandinya masing-masing, simpan kata sandi ini dicatat di suatu tempat untuk nanti dalam instruksi. BERIKAN SEMUA HAK ISTIMEWA PADA *.* KEPADA "db_admin"@"%" DIIDENTIFIKASI OLEH "Kata Sandi AndaDi Sini" DENGAN GRANT OPTION;

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

Paket Python: Kami masih perlu menginstal beberapa paket python sebelum melanjutkan, jalankan perintah di bawah ini untuk memastikan semuanya ada untuk pengalaman yang sempurna.

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

Serta MySQL berikut menghubungkan paket pythonudo apt install python3-mysql.connector -y

Jika semuanya berjalan dengan baik, Anda sekarang dapat mengunjungi Pi Anda di browser web Anda dengan alamat berikut

Langkah 3: Menyiapkan Backend

Menyiapkan Backend
Menyiapkan Backend

Di sini saya akan menjelaskan bagaimana Anda dapat mengatur backend sendiri, pertama-tama unduh file rar dari bawah, unrar ke beberapa direktori sementara. Hubungkan ke RaspberryPi Anda dengan FileZilla atau WinSCP dengan kredensial berikut:

IP: 169.254.10.1User: piPassword: raspberry (jika Anda mengubah kata sandi, lakukan juga di sini)

Anda kemudian dapat melanjutkan untuk mentransfer file yang Anda hapus ke direktori mana pun yang Anda inginkan di direktori home pengguna pi. Demi kesederhanaan, kami akan mengasumsikan dalam pengaturan ini bahwa kami telah mengunggah semua file kami di bawah direktori dokumen.

Biarkan program FTP Anda terbuka untuk langkah selanjutnya!

Sekarang buka command prompt Anda lagi dengan koneksi SSH Anda karena kita perlu melakukan beberapa perubahan pada server web sehingga frontend dapat berkomunikasi dengan backend. Kita akan membuka file konfigurasi Apache2 default dan memodifikasinya sedikit: sudo nano /etc/Apache2/sites-available/000-default.conf

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

Anda dapat melihat gambar terlampir untuk contoh.

Langkah 4: Menyiapkan Frontend

Sebelum mentransfer file kami, kami harus melakukan sesuatu sebelum kami dapat mulai mentransfer file frontend kami. Buka command prompt Anda dengan koneksi SSH yang Anda buat sebelumnya dan gunakan perintah di bawah ini untuk beralih ke pengguna root RaspberryPi kami: "sudo su -"

Setelah ini kami dapat mengubah kata sandi pengguna root kami dengan perintah berikut: "passwd"Ini akan meminta Anda untuk memasukkan kata sandi baru, setelah Anda melakukan ini, Anda dapat beralih kembali ke program FTP Anda dan masuk dengan kredensial root Anda:

IP: 169.254.10.1Pengguna: rootPassword:

Unduh file rar dari bawah dan unrar di folder sementara, Anda dapat memindahkan file-file ini ke RaspberryPi Anda ke direktori berikut /var/www/html/, setelah selesai Anda dapat mengunjungi frontend di http:/ /169.254.10.1, Anda belum dapat berinteraksi karena backend belum berjalan, saya akan menunjukkan kepada Anda nanti dalam panduan ini cara melakukannya.

Langkah 5: Mengimpor Database untuk Proyek Kami

Mengimpor Database untuk Proyek Kami
Mengimpor Database untuk Proyek Kami
Mengimpor Database untuk Proyek Kami
Mengimpor Database untuk Proyek Kami

Buka program manajemen server MySQL favorit Anda dan sambungkan ke Raspberry Pi Anda dengan kredensial yang kami buat di Langkah 2.

Unduh dump database dari bawah dan impor seperti biasa, meja kerja MySQL Anda akan pergi ke File> Open SQL Script dan pilih dump database yang Anda unduh. Kemudian tekan CTRL + SHIFT + ENTER dan skrip SQL harus dijalankan dan strukturnya untuk database harus dibuat.

Saya menambahkan kredensial yang saya gunakan untuk RaspberryPi saya sebagai contoh di bawah ini serta beberapa gambar struktur Database, Anda dapat melihatnya dan mencoba dan mendapatkan gambaran umum tentang cara kerja semuanya.

Langkah 6: Memulai Proyek Kami

Memulai Proyek Kami
Memulai Proyek Kami
Memulai Proyek Kami
Memulai Proyek Kami

Sebelum kami dapat memulai proyek kami, kami perlu mengubah kredensial basis data di file config.py, jika Anda mengikuti instruksi persis seperti yang dikatakan panduan ini maka Anda dapat menemukannya di bawah /home/pi/Documents/Backend/src/config.py di sini Anda perlu mengubah kredensial variabel db_config agar sesuai dengan yang kita buat sebelumnya untuk database kita. Saya telah menambahkan contoh dari apa yang akan Anda lihat dalam file di bawah ini.

Setelah itu Anda, kami akan menambahkan file.service file ini akan memastikan proyek kami dimulai ketika RaspberryPi dimulai, pastikan Anda mengubah direktori dengan tepat tempat Anda menginstal file backend. Gunakan perintah berikut untuk membuat file layanan: sudo nano /etc/systemd/system/dispenser.serviceIni akan membuat file layanan dan salin tempel kode di bawah ini ke dalam file ini.

[Unit]Deskripsi=DispenserAirAfter=mysql.service

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

[Instal]WantedBy=multi-pengguna.target

Ubah baris di mana dikatakan /home/pi/Documents/Backend/index.py ke tempat Anda menginstal file backend Anda, jika Anda tidak melakukan ini dengan benar, proyek tidak akan dimulai dengan benar! Saya akan menambahkan contoh file di bawah ini.

Setelah Anda selesai melakukannya dan keluar dari editor teks, kami dapat mengaktifkan layanan dengan perintah berikut:- sudo systemctl daemon-reload- sudo systemctl enable dispenser- sudo systemctl start dispenser

Dan sebagai tambahan kita bisa menjalankan: sudo systemctl status dispenserIni akan menampilkan beberapa informasi seputar layanan kita, apakah aktif atau tidak, …

Langkah 7: Kasus

Kasus
Kasus
Kasus
Kasus
Kasus
Kasus
Kasus
Kasus

Selamat kita hampir sampai, saya akan menambahkan beberapa gambar yang secara akurat akan menunjukkan dimensi yang saya gunakan untuk proyek saya, saya menggunakan pelat MDF setebal 18mm, Anda dapat menggunakan ketebalan yang berbeda secara opsional. Casing saya dapat digunakan sebagai pedoman untuk mendesain milik Anda atau Anda dapat membuat ulang apa yang saya buat. (Jika Anda menggunakan ketebalan MDF yang berbeda, gambar saya tidak lagi memungkinkan Anda membuat desain saya, pastikan untuk menyesuaikannya!)Panel yang saya buat:- 2 panel berukuran 32cm kali 42cm (panel samping)- 1 panel berukuran 24cm kali 32cm (pelat bawah)- 2 panel berukuran 16cm kali 24cm (pelat depan tempat LCD tetap dan pelat di sebelahnya)- 1 panel berukuran 28cm kali 24cm (pelat tengah dilihat dari depan)- 1 panel berukuran 30cm kali 24cm (pelat atas)

Langkah 8: Kagumi Produk Akhir

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

Anda telah mencapai akhir dan sekarang mudah-mudahan berhasil membuat semuanya menjadi kenyataan. Jika Anda hanya seorang pejalan kaki yang membaca, juga selamat datang, saya berterima kasih telah membaca sampai langkah terakhir!

Saya menghabiskan banyak darah, keringat, dan air mata untuk proyek ini, jadi saya akan sangat menghargai jika Anda meninggalkan komentar, kritik apa pun untuk memperbaikinya dipersilakan!

Langkah 9: Masalah

Saya akan menempatkan proyek dalam kondisi saat ini sebagai prototipe kerja yang dapat melihat lebih banyak peningkatan.

Basis kode backend disusun sedemikian rupa sehingga hubungan master slave dapat dibuat dengan sempurna di mana satu air mancur akan bertindak sebagai frontend utama dan semua air mancur lainnya akan mendorong data dan perubahan melalui REST api master. Ada juga sisa-sisa sistem token API dalam kode karena ini dimaksudkan untuk diterapkan tetapi dipotong nanti karena kendala waktu.

Saya telah mengunggah kode saya ke server Gitlab saya dan di sana Anda dapat melihat kode secara keseluruhan:

Direkomendasikan: