Talaan ng mga Nilalaman:

Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo: 6 na Hakbang
Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo: 6 na Hakbang

Video: Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo: 6 na Hakbang

Video: Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo: 6 na Hakbang
Video: A Brief History of the Nissan Z 2024, Hulyo
Anonim
Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo
Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo
Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo
Awtomatikong Waterdispenser upang Subaybayan ang Pagkonsumo

Kumusta!

Ilang buwan na ang nakalilipas, nasa silid ako ng pag-iisip tungkol sa kung anong uri ng proyekto ang nais kong gawin para sa isang takdang-aralin sa paaralan. Nais kong gumawa ng isang bagay na akma sa akin at na makikinabang sa akin sa hinaharap. Bigla, pumasok ang aking ina sa silid at nagsimulang magreklamo tungkol sa hindi pag-inom ng sapat na tubig. Agad akong nagkaroon ng epiphany. Ang ideya ay dumating sa akin upang gumawa ng isang awtomatikong waterdispenser (tulad ng sa sinehan) na sumusubaybay sa iyong pagkonsumo ng tubig sa araw-araw.

Sa pamamagitan ng isang Raspberry Pi, ilang sensor, isang bomba, at kaunting kaalaman, sinubukan kong gawin itong kasing ganda hangga't maaari.

Sa pagtatapos ng lahat ng mga hakbang, magkakaroon ka ng isang gumaganang waterdispenser na pumupuno sa iyong waterbottle at kumokonekta at nakikipag-ugnay sa iyong Raspberry Pi. Hindi mo lamang masusubaybayan ang iyong pagkonsumo ng tubig batay sa isang porsyento, ngunit magkakaroon ka rin ng posibilidad na tingnan ang temperatura at antas ng tubig ng iyong lalagyan ng tubig. Panghuli, magagawa mong suriin ang iyong mga istatistika. Kung nakakainteres ito sa iyo, tiyaking suriin ito at subukan ito sa iyong sarili!

Ang GitHub repository:

Mga gamit

Mga Microcontroller

Raspberry Pi 4

Mga sensor at module

Gumamit ako ng 4 na sensor:

2xHC-SR04Ultrasonic Sensor

Sinusukat ng mga sensor ng ultrasonic ang distansya sa pamamagitan ng paggamit ng mga ultrasonikong alon. Ang ulo ng sensor ay nagpapalabas ng isang ultrasonic wave at natatanggap ang alon na sumasalamin pabalik mula sa target. Sinusukat ng mga Ultrasonic Sensor ang distansya sa target sa pamamagitan ng pagsukat ng oras sa pagitan ng paglabas at pagtanggap. Ginamit ko ang dalawa sa kanila upang suriin kung mayroong isang bote sa malapit at upang sukatin ang distansya sa tubig sa tank.

Datasheet

1x DS18B20 Temperatura Sensor

Ang DS18B20 ay isang 1-wire programmable Temperature sensor mula sa pinakamataas na isinama. Malawakang ginagamit ito upang masukat ang temperatura sa matitigas na kapaligiran tulad ng mga solusyon sa kemikal, mga mina o lupa atbp. Ginamit ko ito upang masukat ang watertemperature ng tangke ng tubig.

Datasheet

1x RC522 RFID Module

Ang RC522 ay isang 13.56MHz RFID module na batay sa MFRC522 controller mula sa NXP semiconductors. Maaaring suportahan ng module ang I2C, SPI at UART at karaniwang ipinadala sa isang RFID card at key fob. Karaniwan itong ginagamit sa mga system ng pagdalo at iba pang mga aplikasyon ng pagkakakilanlan ng tao / bagay. Sa proyektong ito, ginagamit ito para sa isang pagkakakilanlan / pag-login system.

Datasheet

At 2 mga actuator:

1x Peristaltic Pump 12-24V

Gumamit ako ng peristaltic pump upang makuha ang tubig mula sa tanke sa isang bote ng tubig. Karamihan sa mga bomba ay masyadong mabagal, kaya't nagpunta ako para sa isang 24V na bersyon na pinapagana ko sa isang 24V power adapter.

1x LCD Display

Ginagamit ang LCD upang ipakita ang IP address at mahahalagang mensahe. Ang isang likidong-kristal na display (LCD) ay isang flat-panel display o iba pang electronically modulated optical device na gumagamit ng light-modulate na mga katangian ng mga likidong kristal na sinamahan ng mga polarizer.

Datasheet

Casing

Pinag-uusapan ang tungkol sa pambalot, gumawa ako ng isang DIY na may mga supply mula sa isang Home depot (sa aking kaso ang Brico sa Belgium). Gumamit ako ng playwud na pinutol ko sa tamang sukat. Pinag-uusapan ko kung paano ko nagawa ang aking kaso sa isang karagdagang hakbang, ngunit narito ang mga bagay na kakailanganin mo:

  • 3x Mga tabla ng playwud
  • 1x Maliit na funnel
  • 1x Water tank (maaari kang pumili kung aling halaga ang gusto mo, nagpunta ako para sa 10L)
  • 1x Drip tray

Maaari mong makita ang lahat ng mga materyales at pagpepresyo sa naka-attach na BOM.

Hakbang 1: Pagkonekta sa Lahat ng Elektronika

Pagkonekta sa Lahat ng Elektronika
Pagkonekta sa Lahat ng Elektronika
Pagkonekta sa Lahat ng Elektronika
Pagkonekta sa Lahat ng Elektronika

Ngayon na naayos na namin ang lahat ng electronics, oras na upang ikonekta ang mga ito. Gumawa ako ng dalawang Fritzing circuit, isang breadboard at isang eskematiko, upang maipakita sa iyo kung paano at saan dapat maiugnay ang lahat ng electronics. Mahahanap mo rito ang link sa pag-download sa Fritzing: https://fritzing.org/download/. Tulad ng nabanggit dati, gumamit ako ng isang Raspberry Pi at kumonekta sa isang RFID scanner, dalawang mga ultrasonic sensor, isang temperatura sensor, isang LCD at isang peristaltic pump para sa tubig.

Ikinabit ko ang dalawang mga circuit sa isang PDF, kung nais mong tingnan ito nang mas malapit.

Hakbang 2: Pag-set up ng Raspberry Pi

Gagamitin namin ang aming Raspberry Pi upang patakbuhin at kontrolin ang lahat: backend, frontend at database.

Ang isang Raspberry Pi ay hindi awtomatikong tatakbo. Kailangan nating dumaan sa ilang mga hakbang upang masimulang gamitin ito.

Hakbang 1: Raspbian

Kung gumagamit ka ng isang bagong Raspberry Pi, kakailanganin mo ng raspbian. Ang link sa pag-download at tutorial ay matatagpuan dito.

Hakbang 2: Pagsulat ng imahe sa SD

Ngayon na mayroon ka ng iyong imahe na Raspbian, kakailanganin mo ang isang software ng pagsulat ng imahe (inirerekumenda ko ang win32diskimager) upang isulat ang file ng imahe sa SD card. Ang buong tutorial ay matatagpuan dito.

Hakbang 3: Pag-log in sa Raspberry Pi

Buksan ang "Powershell" at i-type ang "ssh [email protected]". Kung tama ang lahat, hihilingin ka nila para sa isang password (palaging raspberry ang default na password). Karaniwan, ito ay dapat na mag-log sa iyo sa Raspberry Pi. Ngayon kakailanganin naming gumawa ng ilang mga pagbabago sa aming mga setting. I-type ang sudo raspi-config sa terminal at pindutin ang enter. Mag-navigate sa mga pagpipilian sa pag-localize> baguhin ang timezone at itakda ito sa iyong time zone. Dapat mo ring palitan ang iyong wi-fi na bansa sa iyong sariling lokasyon. Panghuli, pumunta sa mga pagpipilian sa interfacing at paganahin ang SPI, I2C at 1-wire. Mahalaga ito upang magamit nang tama ang mga sensor.

Hakbang 4: Pag-set up ng Koneksyon sa Internet

Gumagamit kami ng isang WiFi network. Maaari mong idagdag ang iyong home network sa pamamagitan ng:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Kailangan mong i-reboot ang iyong Pi upang makakonekta. Upang suriin kung ito ay gumagana, maaari mong gamitin ang ifconfig upang suriin kung mayroong isang IP address.

Hakbang 5: Pag-set up ng webserver at Database

Una, pinakamahusay na i-update at i-upgrade ang system gamit ang sumusunod na pagkakasunud-sunod ng mga utos:

  1. sudo apt dist-upgrade --auto-alisin -y
  2. sudo apt mag-upgrade
  3. sudo apt update
  4. sudo apt autoremove

Kapag tapos na ito, kakailanganin namin ang mga sumusunod na package para sa aming webserver at database:

Apache

sudo apt i-install ang apache2 -y

PHP

sudo apt install php

sudo apt i-install ang phpMyAdmin -y

Huwag kalimutang magtakda ng isang ligtas na MySQL password, kapag humiling ito na magtakda ng isang password.

MariaDB

sudo apt i-install ang mariadb-server mariadb-client -y

sudo apt i-install ang php-MySQL -y

sudo systemctl restart apache2.service

Hakbang 6: Pag-install ng mga aklatan ng Python

Para sa backend, kakailanganin namin ang ilang mga aklatan para sa Python. I-install namin ang mga ito gamit ang pip3, dahil gumagamit kami ng python3.

pip3 i-install ang MySQL-Connector-Python

pip3 i-install ang flask-socketio

pip3 i-install ang flask-cors

pip3 i-install ang gevent

pip3 i-install ang gevent-websocket

sudo apt i-install ang python3-mysql.connector -y

pip3 i-install ang mfrc522! (kakailanganin namin ito upang magamit ang RFID scanner)

Hakbang 7: Paghahanda ng Visual Studio Code

Para sa pagpapatakbo ng code, inirerekumenda ko ang paggamit ng Visual Studio Code upang ikonekta ang iyong Raspberry Pi. Ang link sa pag-download upang mai-install ang VSC ay matatagpuan dito.

Kung wala kang naka-install na Remote Development gamit ang SSH, mahahanap mo ang mga hakbang upang magawa ito dito.

Hakbang 3: Paglikha ng Database

Paglikha ng Database
Paglikha ng Database

Iimbak namin ang lahat ng aming data ng sensor at data ng gumagamit sa isang database.

Ang aking database ay binubuo ng 5 mga talahanayan:

Aparato

Ang Table Device ay mayroong DeviceID, na tumutukoy sa mismong aparato. Ibinibigay ng DeviceName ang pangalan ng aparato, sa kasong ito ang ultrasonic sensor, temperatura sensor,… Ibinibigay ng DeviceType ang uri ng aparato (sensor o actuator).

Kasaysayan

Naglalaman ang Kasaysayan ng Talahanayan ng lahat ng kasaysayan ng sensor, kasama ang de date (HistoryDate) naidagdag ang kasaysayan at ang halaga ng sandali sa kasaysayan. Mayroon din itong dalawang Foreign Keys:

  • DeviceID, upang mai-link ang isang tukoy na pag-log sa isang Device
  • Ang UserID, upang mai-link ang isang tukoy na gumagamit sa isang log (ito ay dahil gumagamit kami ng isang RFID, at nais naming idagdag ang log ng kasaysayan sa isang tukoy na gumagamit)

Gumagamit

Ginamit ang Talahanayan ng Gumagamit upang lumikha ng isang User Login System na may RFID scanner. Binubuo ito ng isang Palayaw, FirstName, LastName, Password at RFID (ito ang numero ng RFID ng isang tag). Ang bawat gumagamit ay naka-link sa isang Container (watertank) at dinadala ang ContainerID bilang isang Foreign Key.

Lalagyan

Ang Table Container ay binubuo ng lahat ng iba't ibang Mga lalagyan. Mayroon itong ID, isang ContainerLocation (maaari itong isang negosyo, bahay o anumang bagay). Panghuli, mayroon itong isang MaxLevel na nangangahulugang max na dami ng lalagyan.

Mga setting

Ang Mga Setting ng Talahanayan ay may isang SettingID, at sinusubaybayan ang DailyGoal ng bawat gumagamit + ang petsa na ang DailyGoal ay idinagdag ng gumagamit. Ipinapaliwanag nito ang Foreign Key UserID.

Ang isang pagtatapon ng database ay matatagpuan sa aking GitHub repository sa ilalim ng Database.

Hakbang 4: Pag-set up ng Backend

Walang isang proyekto nang walang gumaganang backend.

Ang backend ay binubuo ng 4 na magkakaibang mga bagay:

mga katulong

Ang mga tumutulong ay lahat ng mga klase na ginagamit para sa iba't ibang mga sensor at actuator. Mayroong isang helper para sa sensor ng temperatura (DS18B20), para sa mga ultrasonic sensor (HCSR05) na masusukat ang distansya at upang ang LCD ay maaaring magsulat ng mga mensahe sa screen.

mga repository

Sa folder ng mga repository, mahahanap mo ang 2 mga file ng Python:

  • Database.py na kung saan ay isang helper upang makakuha ng mga hilera mula sa iyong database. Ginagawa nitong mas madali upang maipatupad at mabasa ang database.
  • Ang DataRepository.py na naglalaman ng lahat ng mga query sa SQL, na magagamit sa pangunahing code (app.py). Ginagamit ang mga ito para sa pagkuha, pag-update o pagtanggal ng data mula sa database.

app.py

Ito ang pangunahing backend code ng proyekto. Ginagawa nito ang pag-setup sa pamamagitan ng pagtukoy sa lahat ng mga pin at mode at naglalaman ng code para sa paggana ng pump, pagkuha ng temperatura, pagkuha ng gumagamit at iba pa. Naglalaman din ito ng mga ruta na ginagamit upang makuha ang data mula sa Database at lahat ng socketio.on's. Para sa bawat pahina ng HTML ay isang iba't ibang socketio.on upang matiyak na ang bawat pagpapaandar ay gumagana sa tamang oras.

config.py

Mayroon kaming natitirang isang file: config.py. Ito ang file na may mga pagpipilian sa pagsasaayos upang kumonekta sa iyong Database. Huwag kalimutang itakda ang iyong mga kredensyal sa Database.

Ang backend ay matatagpuan sa aking imbakan sa ilalim ng Backend.

Hakbang 5: Pag-set up ng Frontend

Pag-set up ng Frontend
Pag-set up ng Frontend
Pag-set up ng Frontend
Pag-set up ng Frontend

Para sa Frontend, nagsimula ako sa pamamagitan ng paggawa ng isang disenyo ng kung ano ang dapat hitsura ng aking webserver sa AdobeXD. Ginamit ko ang mga kulay sa aking Logo, na kulay kahel at 2 magkakaibang mga kulay ng asul. Sinubukan kong panatilihing simple ang disenyo hangga't maaari at lumikha ng isang patak ng tubig na nagpapakita ng porsyento sa kung hanggang saan mo nakamit ang iyong hangarin ng araw.

Sa aking GitHub repository, mahahanap mo ang aking Frontend sa ilalim ng Code> Frontend. Mahalagang i-paste mo ito sa iyong / var / html folder ng iyong Raspberry Pi upang gawin itong accesible mula sa webserver.

Binubuo ito ng isang pares ng mga HTML file, na humahantong sa iba't ibang mga pahina. Mahahanap mo rin ang aking screen.css kasama ang lahat ng CSS na kakailanganin mo upang gawin itong hitsura ng aking proyekto. Panghuli, magkakaroon ka ng iba't ibang mga JavaScript file sa ilalim ng mga script. Ang mga script na ito ay nakikipag-usap sa aking backend upang ipakita ang data mula sa aking Database o backend.

Ang backend ay matatagpuan sa aking lalagyan sa ilalim ng Frontend.

Hakbang 6: Paglikha ng Casing

Paglikha ng Casing
Paglikha ng Casing
Paglikha ng Casing
Paglikha ng Casing
Paglikha ng Casing
Paglikha ng Casing

Kung pinag-uusapan natin ang tungkol sa aking kaso, mayroong dalawang pangunahing bahagi:

Sa labas ng pambalot

Itinayo ko ang kaso mula sa simula. Gumamit ako ng mga tabla ng playwud at pinaglalagari ang mga ito sa tamang sukat. Pinagsama ko ang lahat ng mga tabla at nag-drill ng mga butas para sa LCD, ang pindutan, ang sensor ng ultrasonic upang makita kung mayroong isang watter na bote na naroroon at ang funnel upang ipamahagi ang tubig. Inilahad ko ang aking kaso sa iba't ibang mga seksyon upang mapanatili ang pagkakahiwalay ng tubig at electronics at gumamit ako ng isang tray ng cable upang protektahan ang mga kable mula sa pagtulo ng tubig. Sa kalakip na video, makikita mo ang karamihan sa mga aspeto ng aking pambalot at kung paano ko ito nagawa. Nag-print din ako ng 3D ng isang pindutan, na nakadikit sa isang normal na pindutan. Sa wakas, gumamit ako ng drip tray upang mahabol ang lahat ng nabuhos na tubig. Gumamit din ako ng mga bisagra upang mabuksan at maisara ang isang panel ng gilid upang tingnan ang aking electronics. Maaari mong palaging gumamit ng pangalawang-dispenser o maaari mo ring gamitin ang iba pang mga materyales.

Para sa eksaktong sukat ng aking built, nakakabit ako ng isang PDF na may lahat ng laki ng mga plate na ginamit sa kaso.

Tangke ng tubig

Ang tangke ng tubig ay hindi isang madaling trabaho. Nakuha ko ang isang watertank na may butas sa ilalim, kaya kailangan kong i-tape ito upang matigil ang pagtulo. Kakailanganin mo ang apat na butas: isa para sa sensor ng temperatura, isa para sa tubing ng iyong bomba. isa para sa tubing upang muling punan ang tangke at isa para sa ultrasonic sensor. Para sa huling ito, nag-print ako ng 3D ng isang kaso para dito, na maaaring matagpuan dito. Nagbibigay ito sa sensor ng higit na proteksyon laban sa tubig. Pagkatapos ay nag-drill ako ng isang rektanggulo sa tuktok ng tangke, upang mapahinga ang sensor.

Inirerekumendang: