Daftar Isi:
- Perlengkapan
- Langkah 1: Menghubungkan Semua Elektronik
- Langkah 2: Menyiapkan Raspberry Pi
- Langkah 3: Membuat Basis Data
- Langkah 4: Menyiapkan Backend
- Langkah 5: Menyiapkan Frontend
- Langkah 6: Membuat Casing
Video: Waterdispenser Otomatis untuk Melacak Konsumsi: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Hai, yang di sana!
Beberapa bulan yang lalu, saya berada di kamar saya memikirkan proyek seperti apa yang ingin saya buat untuk tugas sekolah. Saya ingin membuat sesuatu yang cocok untuk saya dan itu akan menguntungkan saya di masa depan. Tiba-tiba, ibu saya masuk ke kamar dan mulai mengeluh tidak cukup minum air. Saya langsung mendapat pencerahan. Ide datang kepada saya untuk membuat dispenser air otomatis (seperti di bioskop) yang melacak konsumsi air Anda setiap hari.
Dengan Raspberry Pi, beberapa sensor, pompa, dan sedikit pengetahuan, saya mencoba membuatnya sebaik mungkin.
Di akhir semua langkah, Anda akan memiliki dispenser air yang berfungsi yang mengisi botol air Anda dan yang menghubungkan dan berinteraksi dengan Raspberry Pi Anda. Anda tidak hanya dapat melacak konsumsi air berdasarkan persentase, tetapi Anda juga memiliki kemungkinan untuk melihat suhu dan ketinggian air wadah air Anda. Terakhir, Anda dapat memeriksa statistik Anda. Jika ini terdengar menarik bagi Anda, pastikan untuk memeriksanya dan mencobanya sendiri!
Repositori GitHub:
Perlengkapan
Mikrokontroler
Raspberry Pi 4
Sensor dan modul
Saya menggunakan 4 sensor:
2xHC-SR04Sensor Ultrasonik
Sensor ultrasonik mengukur jarak dengan menggunakan gelombang ultrasonik. Kepala sensor memancarkan gelombang ultrasonik dan menerima gelombang yang dipantulkan kembali dari target. Sensor Ultrasonik mengukur jarak ke target dengan mengukur waktu antara emisi dan penerimaan. Saya menggunakan dua dari mereka untuk memeriksa apakah ada botol di dekatnya dan untuk mengukur jarak ke air di dalam tangki.
Lembaran data
1x DS18B20 Sensor Suhu
DS18B20 adalah sensor Suhu 1-kawat yang dapat diprogram dari maksim terintegrasi. Ini banyak digunakan untuk mengukur suhu di lingkungan yang keras seperti dalam larutan kimia, tambang atau tanah dll. Saya menggunakannya untuk mengukur suhu air tangki air.
Lembaran data
1x RC522 Modul RFID
RC522 adalah modul RFID 13,56MHz yang didasarkan pada pengontrol MFRC522 dari semikonduktor NXP. Modul dapat mendukung I2C, SPI dan UART dan biasanya dikirimkan dengan kartu RFID dan key fob. Biasanya digunakan dalam sistem kehadiran dan aplikasi identifikasi orang/objek lainnya. Dalam proyek ini, digunakan untuk sistem identifikasi/login.
Lembaran data
Dan 2 aktuator:
1x Pompa Peristaltik 12-24V
Saya menggunakan pompa peristaltik untuk mengalirkan air dari tangki ke botol air. Sebagian besar pompa terlalu lambat, jadi saya memilih versi 24V yang saya nyalakan dengan adaptor daya 24V.
1x Layar LCD
LCD digunakan untuk menampilkan alamat IP dan pesan penting. Liquid-crystal display (LCD) adalah layar panel datar atau perangkat optik termodulasi elektronik lainnya yang menggunakan sifat modulasi cahaya dari kristal cair yang dikombinasikan dengan polarizer.
Lembaran data
Selubung
Berbicara tentang casing, saya melakukan DIY dengan persediaan dari Home depot (dalam kasus saya Brico di Belgia). Saya menggunakan kayu lapis yang saya potong dengan ukuran yang tepat. Saya akan berbicara tentang bagaimana saya membuat kasus saya di langkah selanjutnya, tetapi inilah hal-hal yang Anda perlukan:
- 3x papan kayu lapis
- 1x corong kecil
- 1x Tangki air (Anda dapat memilih jumlah yang Anda inginkan, saya memilih 10L)
- 1x baki tetes
Anda dapat menemukan semua bahan dan harga di BOM terlampir.
Langkah 1: Menghubungkan Semua Elektronik
Sekarang kita telah merangkum semua elektronik, saatnya untuk menghubungkannya. Saya membuat dua sirkuit Fritzing, satu papan tempat memotong roti dan satu skema, untuk menunjukkan kepada Anda bagaimana dan di mana semua elektronik harus dihubungkan. Anda dapat menemukan tautan unduhan Fritzing di sini: https://fritzing.org/download/. Seperti disebutkan sebelumnya, saya menggunakan Raspberry Pi dan menghubungkan pemindai RFID, dua sensor ultrasonik, satu sensor suhu, LCD, dan pompa peristaltik untuk air.
Saya melampirkan dua sirkuit dalam PDF, jika Anda ingin melihatnya lebih dekat.
Langkah 2: Menyiapkan Raspberry Pi
Kami akan menggunakan Raspberry Pi kami untuk menjalankan dan mengontrol semuanya: backend, frontend, dan database.
Raspberry Pi tidak berjalan secara otomatis. Kita harus melalui beberapa langkah untuk mulai menggunakannya.
Langkah 1: Raspbian
Jika Anda menggunakan Raspberry Pi baru, Anda memerlukan raspbian. Link download dan tutorialnya bisa dilihat disini.
Langkah 2: Menulis gambar ke SD
Sekarang setelah Anda memiliki gambar Raspbian, Anda memerlukan perangkat lunak penulisan gambar (saya sarankan win32diskimager) untuk menulis file gambar ke kartu SD. Tutorial lengkapnya bisa dilihat di sini.
Langkah 3: Masuk ke Raspberry Pi
Buka "Powershell" dan ketik "ssh [email protected]". Jika semuanya berjalan dengan baik, mereka akan meminta kata sandi Anda (kata sandi default selalu raspberry). Biasanya, ini akan membuat Anda masuk ke Raspberry Pi. Sekarang kita perlu membuat beberapa perubahan pada pengaturan kita. Ketik sudo raspi-config di terminal dan tekan enter. Arahkan ke opsi pelokalan > ubah zona waktu dan atur ke zona waktu Anda. Anda juga harus mengubah negara wi-fi Anda ke lokasi Anda sendiri. Terakhir, buka opsi antarmuka dan aktifkan SPI, I2C, dan 1-wire. Ini penting untuk menggunakan sensor dengan benar.
Langkah 4: Menyiapkan Koneksi Internet
Kami akan menggunakan jaringan WiFi. Anda dapat menambahkan jaringan rumah Anda melalui:
wpa_passphrase "Jaringan Anda" "SSID Anda" >> /etc/wpa_supplicant/wpa_supplicant.conf
Anda harus me-reboot Pi Anda untuk membuat koneksi. Untuk memeriksa apakah berhasil, Anda dapat menggunakan ifconfig untuk memeriksa apakah ada alamat IP.
Langkah 5: Menyiapkan server web dan Database
Pertama, sebaiknya perbarui dan perbarui sistem dengan urutan perintah berikut:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt upgrade
- sudo apt update
- sudo apt autoremove
Setelah ini selesai, kita akan membutuhkan paket-paket berikut untuk server web dan database kita:
Apache
sudo apt install apache2 -y
PHP
sudo apt install php
sudo apt install phpMyAdmin -y
Jangan lupa untuk mengatur kata sandi MySQL yang aman, ketika diminta untuk mengatur kata sandi.
MariaDB
sudo apt install mariadb-server mariadb-client -y
sudo apt install php-mysql -y
sudo systemctl restart Apache2.service
Langkah 6: Menginstal pustaka Python
Untuk backend, kita membutuhkan beberapa library untuk Python. Kami akan menginstal ini menggunakan pip3, karena kami menggunakan python3.
pip3 instal mysql-connector-python
pip3 menginstal flask-socketio
pip3 menginstal flask-cors
pip3 menginstal gevent
pip3 instal gevent-websocket
sudo apt install python3-mysql.connector -y
pip3 instal mfrc522! (kita akan membutuhkan ini untuk menggunakan pemindai RFID)
Langkah 7: Mempersiapkan Kode Visual Studio
Untuk menjalankan kode, saya sarankan menggunakan Visual Studio Code untuk menghubungkan Raspberry Pi Anda. Tautan unduhan untuk menginstal VSC dapat ditemukan di sini.
Jika Anda belum menginstal Remote Development menggunakan SSH, Anda dapat menemukan langkah-langkah untuk melakukannya di sini.
Langkah 3: Membuat Basis Data
Kami akan menyimpan semua data sensor dan data pengguna kami dalam database.
Database saya terdiri dari 5 tabel:
Perangkat
Perangkat Tabel memiliki DeviceID, yang merujuk ke perangkat itu sendiri. DeviceName memberikan nama perangkat, dalam hal ini sensor ultrasonik, sensor suhu, … DeviceType memberikan jenis perangkat (sensor atau aktuator).
Sejarah
Tabel Sejarah berisi semua sejarah sensor, bersama dengan tanggal (HistoryDate) sejarah ditambahkan dan nilai momen dalam sejarah. Ini juga memiliki dua Kunci Asing:
- DeviceID, untuk menautkan log tertentu ke Perangkat
- UserID, untuk menautkan pengguna tertentu ke log (ini karena kami menggunakan RFID, dan kami ingin menambahkan log riwayat ke satu pengguna tertentu)
Pengguna
Tabel Pengguna digunakan untuk membuat Sistem Login Pengguna dengan pemindai RFID. Ini terdiri dari Nickname, FirstName, LastName, Password dan RFID (ini adalah nomor RFID dari sebuah tag). Setiap pengguna ditautkan ke Container (tangki air) dan juga membawa ContainerID sebagai Foreign Key.
Wadah
Table Container terdiri dari semua Container yang berbeda. Ini memiliki ID, ContainerLocation (ini bisa berupa perusahaan, rumah, atau apa pun). Terakhir, ia memiliki MaxLevel yang berarti volume maksimum yang dimiliki wadah.
Pengaturan
Pengaturan Tabel memiliki ID Pengaturan, dan melacak DailyGoal setiap pengguna + tanggal DailyGoal ditambahkan oleh pengguna. Ini menjelaskan UserID Kunci Asing.
Dump database dapat ditemukan di repositori GitHub saya di bawah Database.
Langkah 4: Menyiapkan Backend
Tidak ada proyek tanpa backend yang berfungsi.
Backend terdiri dari 4 hal yang berbeda:
pembantu
Helper adalah semua kelas yang digunakan untuk sensor dan aktuator yang berbeda. Ada pembantu untuk sensor suhu (DS18B20), untuk sensor ultrasonik (HCSR05) untuk dapat mengukur jarak dan untuk LCD untuk dapat menulis pesan ke layar.
tempat penyimpanan
Di folder repositori, Anda akan menemukan 2 file Python:
- Database.py yang merupakan pembantu untuk mengeluarkan baris dari database Anda. Itu membuat lebih mudah untuk mengeksekusi dan membaca database.
- DataRepository.py yang berisi semua kueri SQL, yang digunakan dalam kode utama (app.py). Mereka digunakan untuk mendapatkan, memperbarui atau menghapus data dari database.
app.py
Ini adalah kode backend utama proyek. Itu melakukan pengaturan dengan mendefinisikan semua pin dan mode dan berisi kode untuk membuat pompa bekerja, mendapatkan suhu, mendapatkan pengguna dan sebagainya. Ini juga berisi rute yang digunakan untuk mengambil data dari Database dan semua socketio.on. Untuk setiap halaman HTML adalah socketio.on yang berbeda untuk memastikan setiap fungsi bekerja pada waktu yang tepat.
config.py
Kami memiliki satu file tersisa: config.py. Ini adalah file dengan opsi konfigurasi untuk terhubung dengan Database Anda. Jangan lupa untuk mengatur kredensial Database Anda.
Backend dapat ditemukan di repositori saya di bawah Backend.
Langkah 5: Menyiapkan Frontend
Untuk Frontend, saya mulai dengan membuat desain seperti apa tampilan server web saya di AdobeXD. Saya menggunakan warna di Logo saya, yaitu oranye dan 2 warna biru yang berbeda. Saya mencoba untuk menjaga desain sesederhana mungkin dan membuat tetesan air yang menunjukkan persentase sejauh mana Anda telah mencapai tujuan Anda hari itu.
Di repositori GitHub saya, Anda akan menemukan Frontend saya di bawah Code > Frontend. Penting bahwa Anda menempelkan ini di folder /var/html Raspberry Pi Anda agar dapat diakses dari server web.
Ini terdiri dari beberapa file HTML, yang mengarah ke halaman yang berbeda. Anda juga akan menemukan screen.css saya dengan semua CSS yang Anda perlukan agar terlihat seperti proyek saya. Terakhir, Anda akan memiliki file JavaScript yang berbeda di bawah skrip. Skrip ini berkomunikasi dengan backend saya untuk menampilkan data dari Database atau backend saya.
Backend dapat ditemukan di repositori saya di bawah Frontend.
Langkah 6: Membuat Casing
Jika kita berbicara tentang kasus saya, ada dua bagian utama:
casing luar
Saya membangun kasing dari awal. Saya menggunakan papan kayu lapis dan menggergajinya dalam ukuran yang benar. Saya memasang semua papan bersama-sama dan mengebor lubang untuk LCD, tombol, sensor ultrasonik untuk mendeteksi apakah ada botol air dan corong untuk mendistribusikan air. Saya membagi kasing saya menjadi beberapa bagian untuk memisahkan air dan barang elektronik dan saya menggunakan baki kabel untuk melindungi kabel dari kebocoran air. Dalam video terlampir, Anda dapat melihat sebagian besar aspek casing saya dan bagaimana saya membuatnya. Saya juga mencetak tombol 3D, yang direkatkan ke tombol normal. Akhirnya, saya menggunakan nampan tetes untuk menampung semua air yang tumpah. Saya juga menggunakan engsel untuk dapat membuka dan menutup panel samping untuk melihat barang elektronik saya. Anda selalu dapat menggunakan dispenser bekas atau Anda juga dapat menggunakan bahan lain.
Untuk pengukuran yang tepat dari bangunan saya, saya melampirkan PDF dengan semua ukuran pelat yang digunakan dalam kasing.
Tangki air
Tangki air bukanlah pekerjaan yang mudah. Saya mendapat tangki air dengan lubang di bagian bawah, jadi saya harus merekatkannya untuk menghentikan kebocoran. Anda memerlukan empat lubang: satu untuk sensor suhu, satu untuk tabung pompa Anda. satu untuk tabung untuk mengisi ulang tangki dan satu untuk sensor ultrasonik. Untuk yang terakhir ini, saya mencetak kasing 3D, yang dapat ditemukan di sini. Ini memberi sensor lebih banyak perlindungan terhadap air. Saya kemudian mengebor persegi panjang di bagian atas tangki, untuk mengistirahatkan sensor.
Direkomendasikan:
Mainan Beralih-Adaptasi: Memanjat Tangga Melacak Mainan: 7 Langkah
Switch-Adapt Toys: Climbing Stairs Track Toy: Adaptasi mainan membuka jalan baru dan solusi khusus untuk memungkinkan anak-anak dengan kemampuan motorik terbatas atau cacat perkembangan berinteraksi dengan mainan secara mandiri. Dalam banyak kasus, anak-anak yang membutuhkan mainan yang disesuaikan tidak dapat
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85: 7 Langkah
Mengurangi Konsumsi Daya Baterai untuk Digispark ATtiny85: atau: Menjalankan Arduino dengan sel koin 2032 selama 2 tahun.Menggunakan Papan Arduino Digispark Anda di luar kotak dengan program Arduino, ia menarik 20 mA pada 5 volt.Dengan bank daya 5 volt 2000 mAh hanya akan berjalan selama 4 hari
Kepala Mr Wallplate Berputar untuk Melacak Anda: 9 Langkah (dengan Gambar)
Kepala Mr. Wallplate Berputar untuk Melacak Anda: Ini adalah versi yang lebih canggih dari Robot Ilusi Mata Mr. Wallplate https://www.instructables.com/id/Mr-Wallplates-Eye-Illusion. Sensor ultrasonik memungkinkan kepala Mr. Wallplate untuk melacak Anda saat Anda berjalan di depannya. Prosesnya dapat diringkas
Melacak Variasi Akselerasi Dengan Raspberry Pi dan MMA7455 Menggunakan Python: 6 Langkah
Melacak Variasi Akselerasi Dengan Raspberry Pi dan MMA7455 Menggunakan Python: Saya tidak tersandung, saya sedang menguji gravitasi. Masih berfungsi… Sebuah representasi dari pesawat ulang-alik yang dipercepat menjelaskan bahwa jam di titik tertinggi pesawat ulang-alik akan memilih lebih cepat daripada jam di pangkalan karena ekspansi waktu gravitasi. Beberapa
Bagaimana Mengukur Konsumsi Daya Modul Komunikasi Nirkabel dengan Benar di Era Konsumsi Daya Rendah?: 6 Langkah
Bagaimana Mengukur Konsumsi Daya Modul Komunikasi Nirkabel dengan Benar di Era Konsumsi Daya Rendah?: Konsumsi daya rendah merupakan konsep yang sangat penting dalam Internet of Things. Sebagian besar node IoT perlu ditenagai oleh baterai. Hanya dengan mengukur konsumsi daya modul nirkabel dengan benar, kami dapat memperkirakan secara akurat berapa banyak baterai yang