Isi kandungan:

Waterpispenser Automatik untuk Mengesan Penggunaan: 6 Langkah
Waterpispenser Automatik untuk Mengesan Penggunaan: 6 Langkah

Video: Waterpispenser Automatik untuk Mengesan Penggunaan: 6 Langkah

Video: Waterpispenser Automatik untuk Mengesan Penggunaan: 6 Langkah
Video: Консультант от бога Tg: cadrolikk 2024, Julai
Anonim
Waterpispenser Automatik untuk Mengesan Penggunaan
Waterpispenser Automatik untuk Mengesan Penggunaan
Waterdispenser Automatik untuk Mengesan Penggunaan
Waterdispenser Automatik untuk Mengesan Penggunaan

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

Menyambungkan Semua Elektronik
Menyambungkan Semua Elektronik
Menyambungkan Semua Elektronik
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:

  1. sudo apt dist-upgrade --auto-remove -y
  2. peningkatan sudo apt
  3. sudo apt kemas kini
  4. 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

Membuat Pangkalan Data
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

Menetapkan Frontend
Menetapkan Frontend
Menetapkan Frontend
Menetapkan 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

Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
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: