
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:00


Hai!
Beberapa bulan yang lalu, saya berada di bilik saya memikirkan jenis projek yang ingin saya buat untuk tugasan sekolah. Saya ingin membuat sesuatu yang sesuai dengan saya dan yang akan memberi manfaat kepada saya pada masa akan datang. Tiba-tiba, ibu saya memasuki bilik dan mula mengeluh kerana tidak minum air secukupnya. Saya segera mendapat pencerahan. Idea datang kepada saya untuk membuat peredam air automatik (seperti di pawagam) yang mengesan penggunaan air anda setiap hari.
Dengan Raspberry Pi, beberapa sensor, pam, dan sedikit pengetahuan, saya cuba menjadikannya sebaik mungkin.
Pada akhir semua langkah, anda akan mempunyai alat penyedut air yang berfungsi untuk mengisi botol air anda dan yang menghubungkan dan berinteraksi dengan Raspberry Pi anda. Anda bukan sahaja dapat melacak penggunaan air anda berdasarkan peratusan, tetapi anda juga berpeluang melihat suhu dan paras air bekas air anda. Akhirnya, anda dapat menyemak statistik anda. Sekiranya ini menarik bagi anda, pastikan anda memeriksanya dan mencubanya sendiri!
Repositori GitHub:
Bekalan
Pengawal mikro
Raspberry Pi 4
Sensor dan modul
Saya menggunakan 4 sensor:
Sensor Ultrasonik 2xHC-SR04
Sensor ultrasonik mengukur jarak dengan menggunakan gelombang ultrasonik. Kepala sensor memancarkan gelombang ultrasonik dan menerima gelombang yang dipantulkan kembali dari sasaran. Sensor Ultrasonik mengukur jarak ke sasaran dengan mengukur masa antara pelepasan dan penerimaan. Saya menggunakan dua daripadanya untuk memeriksa apakah ada botol di dekatnya dan untuk mengukur jarak ke air di dalam tangki.
Lembaran data
Sensor Suhu 1x DS18B20
DS18B20 adalah sensor Suhu 1-wayar yang dapat diprogramkan dari gabungan maksim. Ia digunakan secara meluas untuk mengukur suhu di persekitaran yang keras seperti dalam larutan kimia, lombong atau tanah dll. Saya menggunakannya untuk mengukur suhu air tangki air.
Lembaran data
Modul RFID 1x RC522
RC522 adalah modul RFID 13.56MHz yang berdasarkan pengawal MFRC522 dari semikonduktor NXP. Modul ini dapat menyokong I2C, SPI dan UART dan biasanya dihantar dengan kad RFID dan kunci fob. Ini biasanya digunakan dalam sistem kehadiran dan aplikasi pengenalan orang / objek lain. Dalam projek ini, ia digunakan untuk sistem pengenalan / log masuk.
Lembaran data
Dan 2 penggerak:
1x Pam Peristaltik 12-24V
Saya menggunakan pam peristaltik untuk mendapatkan air dari tangki ke botol air. Sebilangan besar pam terlalu perlahan, jadi saya menggunakan versi 24V yang saya gunakan dengan penyesuai kuasa 24V.
Paparan LCD 1x
LCD digunakan untuk memaparkan alamat IP dan mesej penting. Paparan kristal cecair (LCD) adalah paparan panel rata atau peranti optik modulasi elektronik lain yang menggunakan sifat pemodulatan cahaya kristal cair yang digabungkan dengan polarisasi.
Lembaran data
Selongsong
Bercakap mengenai selongsong itu, saya membuat DIY dengan bekalan dari depot Home (dalam kes saya Brico di Belgium). Saya menggunakan papan lapis yang saya potong dengan ukuran yang betul. Saya akan bercakap tentang bagaimana saya membuat kes saya dalam langkah lebih jauh, tetapi berikut adalah perkara yang anda perlukan:
- Papan lapis 3x
- Corong kecil 1x
- Tangki air 1x (anda boleh memilih jumlah yang anda mahukan, saya menggunakan 10L)
- Dulang titisan 1x
Anda boleh mendapatkan semua bahan dan harga di BOM yang dilampirkan.
Langkah 1: Menyambungkan Semua Elektronik


Sekarang kita telah merangkum semua elektronik, sudah tiba masanya untuk menghubungkannya. Saya membuat dua litar Fritzing, satu papan roti dan satu skema, untuk menunjukkan kepada anda bagaimana dan di mana semua elektronik harus disambungkan. Anda boleh mendapatkan pautan muat turun ke Fritzing di sini: https://fritzing.org/download/. Seperti disebutkan sebelumnya, saya menggunakan Raspberry Pi dan menghubungkan pengimbas RFID, dua sensor ultrasonik, satu sensor suhu, LCD dan pam peristaltik untuk air.
Saya melampirkan dua litar dalam PDF, jika anda ingin melihatnya dengan lebih dekat.
Langkah 2: Menyiapkan Raspberry Pi
Kami akan menggunakan Raspberry Pi kami untuk menjalankan dan mengawal semuanya: backend, frontend dan database.
Raspberry Pi tidak berjalan secara automatik. Kita mesti melalui beberapa langkah untuk mula menggunakannya.
Langkah 1: Raspbian
Sekiranya anda menggunakan Raspberry Pi yang baru, anda memerlukan raspbian. Pautan muat turun dan tutorial boleh didapati di sini.
Langkah 2: Menulis gambar ke SD
Setelah anda mempunyai imej Raspbian, anda memerlukan perisian penulisan gambar (saya cadangkan win32diskimager) untuk menulis fail gambar ke kad SD. Tutorial lengkap boleh didapati di sini.
Langkah 3: Log masuk ke Raspberry Pi
Buka "Powershell" dan ketik "ssh [email protected]". Sekiranya semuanya betul, mereka akan meminta kata laluan (kata laluan lalai adalah raspberry). Biasanya, ini mesti memasukkan anda ke Raspberry Pi. Sekarang kita perlu membuat beberapa perubahan pada tetapan kita. Ketik sudo raspi-config di terminal dan tekan enter. Navigasi ke pilihan penyetempatan> ubah zon waktu dan tetapkan ke zon waktu anda. Anda juga harus menukar negara wi-fi ke lokasi anda sendiri. Akhirnya, pergi ke pilihan antara muka dan aktifkan SPI, I2C dan 1-wire. Ini penting untuk menggunakan sensor dengan betul.
Langkah 4: Menyiapkan Sambungan Internet
Kami akan menggunakan rangkaian WiFi. Anda boleh menambahkan rangkaian rumah anda melalui:
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Anda perlu menghidupkan semula Pi anda untuk membuat sambungan. Untuk memeriksa sama ada ia berfungsi, anda boleh menggunakan ifconfig untuk memeriksa sama ada terdapat alamat IP.
Langkah 5: Menyiapkan pelayan web dan Pangkalan Data
Pertama, lebih baik mengemas kini dan menaik taraf sistem dengan urutan perintah berikut:
- sudo apt dist-upgrade --auto-remove -y
- peningkatan sudo apt
- sudo apt kemas kini
- sudo apt autoremove
Setelah ini selesai, kami memerlukan pakej berikut untuk pelayan web dan pangkalan data kami:
Apache
sudo apt install apache2 -y
PHP
sudo apt pasang php
sudo apt pasang phpMyAdmin -y
Jangan lupa untuk menetapkan kata laluan MySQL yang selamat, ketika meminta untuk menetapkan kata laluan.
MariaDB
sudo apt pasang mariadb-server mariadb-client -y
sudo apt pasang php-mysql -y
sudo systemctl mulakan semula apache2.service
Langkah 6: Memasang perpustakaan Python
Untuk backend, kami memerlukan beberapa perpustakaan untuk Python. Kami akan memasangnya menggunakan pip3, kerana kami menggunakan python3.
pip3 pasang mysql-connector-python
pip3 memasang flask-socketio
pip3 memasang termos-cors
pip3 pasang gevent
pip3 memasang gevent-websocket
sudo apt pasang python3-mysql.connector -y
pip3 pasang mfrc522! (kami memerlukannya untuk menggunakan pengimbas RFID)
Langkah 7: Menyiapkan Kod Visual Studio
Untuk menjalankan kod, saya cadangkan menggunakan Visual Studio Code untuk menyambungkan Raspberry Pi anda. Pautan muat turun untuk memasang VSC boleh didapati di sini.
Sekiranya anda belum memasang Pembangunan Jauh menggunakan SSH, anda boleh mendapatkan langkah-langkah untuk melakukannya di sini.
Langkah 3: Membuat Pangkalan Data

Kami akan menyimpan semua data sensor dan data pengguna kami dalam pangkalan data.
Pangkalan data saya terdiri daripada 5 jadual:
Peranti
Table Device mempunyai DeviceID, yang merujuk kepada peranti itu sendiri. DeviceName memberikan nama perangkat, dalam hal ini sensor ultrasonik, sensor suhu,… DeviceType memberikan jenis perangkat (sensor atau penggerak).
Sejarah
Sejarah Jadual mengandungi semua sejarah sensor, bersama dengan tarikh (HistoryDate) sejarah ditambahkan dan nilai momen dalam sejarah. Ia juga mempunyai dua Kunci Asing:
- DeviceID, untuk menghubungkan log tertentu ke Peranti
- UserID, untuk menghubungkan pengguna tertentu ke log (ini kerana kami menggunakan RFID, dan kami ingin menambahkan log sejarah ke satu pengguna tertentu)
Pengguna
Pengguna Jadual digunakan untuk membuat Sistem Log masuk Pengguna dengan pengimbas RFID. Ia terdiri daripada nama samaran, nama pertama, nama belakang, kata laluan dan RFID (ini adalah nombor RFID dari tag). Setiap pengguna dihubungkan ke Container (watertank) dan juga membawa ContainerID sebagai Kunci Asing.
Bekas
Table Container terdiri daripada semua Container yang berbeza. Ia mempunyai ID, ContainerLocation (ini boleh menjadi syarikat, rumah atau apa sahaja). Terakhir, ia mempunyai MaxLevel yang bermaksud volume maksimum yang dimiliki oleh bekas.
Tetapan
Jadual Tetapan mempunyai SettingsID, dan menjejaki DailyGoal setiap pengguna + tarikh DailyGoal ditambahkan oleh pengguna. Ini menerangkan ID Pengguna Asing.
Lambakan pangkalan data boleh didapati di repositori GitHub saya di bawah Pangkalan Data.
Langkah 4: Menyiapkan Backend
Tidak ada projek tanpa backend yang berfungsi.
Bahagian belakang terdiri daripada 4 perkara yang berbeza:
pembantu
Pembantu adalah semua kelas yang digunakan untuk sensor dan penggerak yang berbeza. Terdapat pembantu untuk sensor suhu (DS18B20), untuk sensor ultrasonik (HCSR05) dapat mengukur jarak dan untuk LCD dapat menulis mesej ke layar.
repositori
Di folder repositori, anda akan menemui 2 fail Python:
- Database.py yang merupakan pembantu untuk mengeluarkan baris dari pangkalan data anda. Ini memudahkan pelaksanaan dan membaca pangkalan data.
- DataRepository.py yang mengandungi semua pertanyaan SQL, yang digunakan dalam kod utama (app.py). Mereka digunakan untuk mendapatkan, mengemas kini atau menghapus data dari pangkalan data.
app.py
Ini adalah kod backend utama projek. Ia melakukan penyiapan dengan menentukan semua pin dan mod dan mengandungi kod untuk membuat pam berfungsi, mendapatkan suhu, mendapatkan pengguna dan sebagainya. Ini juga berisi rute yang digunakan untuk mengambil data dari Pangkalan Data dan semua socketio.on. Untuk setiap halaman HTML adalah socketio.on yang berbeza untuk memastikan setiap fungsi berfungsi pada waktu yang tepat.
config.py
Kami mempunyai satu fail yang tersisa: config.py. Ini adalah fail dengan pilihan konfigurasi untuk berhubung dengan Pangkalan Data anda. Jangan lupa untuk menetapkan kelayakan Pangkalan Data anda.
Backend boleh didapati di repositori saya di bawah Backend.
Langkah 5: Menyiapkan Frontend


Untuk Frontend, saya memulakan dengan membuat reka bentuk seperti apa pelayan web saya di AdobeXD. Saya menggunakan warna dalam Logo saya, yang berwarna oren dan 2 warna biru yang berbeza. Saya berusaha memastikan reka bentuknya sesederhana mungkin dan membuat titisan air yang menunjukkan peratusan sejauh mana anda telah mencapai matlamat anda hari ini.
Di repositori GitHub saya, anda akan menemui Frontend saya di bawah Code> Frontend. Penting untuk anda memasukkannya ke dalam folder / var / html Raspberry Pi anda untuk membuatnya dapat diakses dari pelayan web.
Ini terdiri daripada beberapa fail HTML, yang membawa ke halaman yang berbeza. Anda juga akan menemui screen.css saya dengan semua CSS yang anda perlukan untuk menjadikannya seperti projek saya. Terakhir, Anda akan mempunyai fail JavaScript yang berbeza di bawah skrip. Skrip ini berkomunikasi dengan backend saya untuk menunjukkan data dari Pangkalan Data atau backend saya.
Bahagian belakang boleh didapati di repositori saya di bawah Frontend.
Langkah 6: Membuat Selongsong



Sekiranya kita membicarakan kes saya, ada dua bahagian utama:
Selongsong luar
Saya membina kes itu dari awal. Saya menggunakan papan lapis dan menggergaji dengan ukuran yang betul. Saya menyatukan semua papan bersama dan menggerudi lubang untuk LCD, butang, sensor ultrasonik untuk mengesan sama ada terdapat botol watter dan corong untuk mengedarkan air. Saya membahagikan kes saya ke bahagian yang berbeza untuk memastikan air dan elektronik terpisah dan saya menggunakan dulang kabel untuk melindungi kabel dari kebocoran air. Dalam video yang dilampirkan, anda dapat melihat kebanyakan aspek selongsong saya dan bagaimana saya membuatnya. Saya juga 3D mencetak butang, yang terpaku pada butang biasa. Akhirnya, saya menggunakan dulang titisan untuk menangkap semua air yang tumpah. Saya juga menggunakan engsel untuk membuka dan menutup panel sisi untuk melihat elektronik saya. Anda selalu boleh menggunakan dispenser terpakai atau anda juga boleh menggunakan bahan lain.
Untuk ukuran yang tepat dari binaan saya, saya melampirkan PDF dengan semua ukuran plat yang digunakan dalam casing tersebut.
Tangki air
Tangki air bukanlah kerja yang mudah. Saya mendapat tangki air dengan lubang di bahagian bawah, jadi saya harus merekamnya untuk menghentikan kebocoran. Anda memerlukan empat lubang: satu untuk sensor suhu, satu untuk pemasangan pam anda. satu untuk tiub untuk mengisi semula tangki dan satu lagi untuk sensor ultrasonik. Untuk yang terakhir ini, saya 3D mencetak casing untuknya, yang boleh didapati di sini. Ini memberi sensor lebih banyak perlindungan terhadap air. Saya kemudian menggerudi sebuah segi empat tepat di bahagian atas tangki, untuk menghidupkan sensor.
Disyorkan:
Stesen Minyak untuk Mengesan CO: 5 Langkah

Stesen Minyak untuk Mengesan CO: Karbon monoksida (CO) adalah gas yang sangat berbahaya, kerana tidak berbau, tidak terasa. Anda tidak dapat melihatnya, atau mengesannya dengan hidung. Matlamat saya adalah membina pengesan CO sederhana. Pertama, saya mengesan sejumlah kecil gas itu di rumah saya. Itulah sebabnya
Hab NMEA / AIS Murah - RS232 ke Jambatan Wifi untuk Penggunaan Onboard: 6 Langkah

Hab NMEA / AIS Murah - RS232 ke Jambatan Wifi untuk Penggunaan Onboard: Kemas kini 9 Januari 2021 - Menambah sambungan TCP tambahan dan menggunakan semula sambungan terakhir jika lebih banyak pelanggan menyambung Kemas kini 13 Disember 2020 - Menambah versi konfigurasi kod untuk kapal dengan penghala yang adaPengenalan NMEA ini / Jambatan AIS RS232 ke WiFi adalah
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85: 7 Langkah

Mengurangkan Penggunaan Kuasa Bateri untuk Digispark ATtiny85: atau: Menjalankan Arduino dengan sel duit syiling 2032 selama 2 tahun. Menggunakan Digispark Arduino Board dari kotak dengan program Arduino, ia menarik 20 mA pada 5 volt. Dengan bank kuasa 5 volt 2000 mAh ia hanya akan berjalan selama 4 hari
Menggunakan Radio untuk Mengesan Kilat: 4 Langkah

Menggunakan Radio untuk Mengesan Kilat: Radio kecil dapat digunakan lebih daripada sekadar mendengar muzik atau sukan. Semua radio (walaupun radio AM sahaja yang murah) boleh digunakan untuk mengesan kilat dan fenomena atmosfera lain. Dengan telinga terlatih, seseorang dapat menentukan sama ada kilat bergerak
Bagaimana Mengukur Penggunaan Modul Komunikasi Tanpa Wayar dengan Betul di Era Penggunaan Daya Rendah ?: 6 Langkah

Bagaimana Mengukur Penggunaan Tenaga Modul Komunikasi Tanpa Wayar dengan Betul di Era Penggunaan Daya Rendah?: Penggunaan tenaga yang rendah adalah konsep yang sangat penting dalam Internet Perkara. Sebilangan besar nod IoT perlu dikuasakan oleh bateri. Hanya dengan mengukur penggunaan kuasa modul wayarles dengan tepat, kita dapat mengira dengan tepat berapa bateri saya