Sisukord:

Automaatne veejaotur tarbimise jälgimiseks: 6 sammu
Automaatne veejaotur tarbimise jälgimiseks: 6 sammu

Video: Automaatne veejaotur tarbimise jälgimiseks: 6 sammu

Video: Automaatne veejaotur tarbimise jälgimiseks: 6 sammu
Video: AENO nutikas veekeetja EK1S | Toote omadused 2024, Juuli
Anonim
Automaatne veejaotur tarbimise jälgimiseks
Automaatne veejaotur tarbimise jälgimiseks
Automaatne veejaotur tarbimise jälgimiseks
Automaatne veejaotur tarbimise jälgimiseks

Tere!

Paar kuud tagasi olin oma toas ja mõtlesin, millist projekti ma koolitöö jaoks teha tahan. Tahtsin teha midagi, mis mulle sobiks ja mis mulle tulevikus kasuks tuleks. Äkitselt astus ema tuppa ja hakkas kurtma, et ei joo piisavalt vett. Mul oli kohe kolmekuningapäev. Mul tuli mõte teha automaatne veejaotur (nagu kinosaalis), mis jälgib teie veetarbimist igapäevaselt.

Raspberry Pi, mõne anduri, pumba ja vähese teadmisega proovisin seda võimalikult hästi teha.

Kõigi toimingute lõpus on teil toimiv veeanum, mis täidab teie veepudeli ning ühendab teie Raspberry Pi ja suhtleb sellega. Saate mitte ainult jälgida oma veetarbimist protsendi alusel, vaid saate vaadata ka oma veenõu temperatuuri ja veetaset. Lõpuks saate oma statistikat kontrollida. Kui see tundub teile huvitav, vaadake seda kindlasti ja proovige ise!

GitHubi hoidla:

Tarvikud

Mikrokontrollerid

Vaarika Pi 4

Andurid ja moodulid

Kasutasin 4 andurit:

2xHC-SR04 ultraheliandur

Ultraheli andurid mõõdavad kaugust ultrahelilainete abil. Anduripea kiirgab ultrahelilainet ja võtab vastu laine, mis peegeldub sihtmärgist tagasi. Ultraheli andurid mõõdavad kaugust sihtmärgini, mõõtes aega kiirguse ja vastuvõtu vahel. Kasutasin neist kahte, et kontrollida, kas läheduses on pudel, ja mõõta paagis oleva vee kaugust.

Andmeleht

1x DS18B20 temperatuuriandur

DS18B20 on 1-juhtmeline programmeeritav temperatuuriandur maksimaalselt integreeritud. Seda kasutatakse laialdaselt temperatuuri mõõtmiseks rasketes keskkondades, näiteks keemilistes lahustes, kaevandustes või pinnases jne. Ma kasutasin seda veepaagi veetemperatuuri mõõtmiseks.

Andmeleht

1x RC522 RFID -moodul

RC522 on 13,56 MHz RFID -moodul, mis põhineb NXP pooljuhtide MFRC522 kontrolleril. Moodul toetab I2C, SPI ja UART ning tavaliselt tarnitakse koos RFID -kaardi ja võtmehoidjaga. Seda kasutatakse tavaliselt osavõtusüsteemides ja muudes isikute/objektide tuvastamise rakendustes. Selles projektis kasutatakse seda identifitseerimis-/sisselogimissüsteemi jaoks.

Andmeleht

Ja 2 täiturmehhanismi:

1x peristaltiline pump 12-24V

Ma kasutasin peristaltilist pumpa, et viia vesi paagist veepudelisse. Enamik pumbasid olid liiga aeglased, nii et valisin 24 V versiooni, mida toidan 24 V toiteadapteriga.

1x LCD ekraan

LCD -ekraani kasutatakse IP -aadressi ja oluliste teadete kuvamiseks. Vedelkristallkuvar (LCD) on lameekraan või muu elektrooniliselt moduleeritud optiline seade, mis kasutab vedelkristallide valgust moduleerivaid omadusi koos polarisaatoritega.

Andmeleht

Korpus

Korpusest rääkides tegin DIY koos Home Depo varudega (minu puhul Brico Belgias). Kasutasin vineeri, mille lõikasin paraja suurusega. Ma räägin sellest, kuidas ma oma juhtumi tegin, kuid siin on vaja järgmisi asju:

  • 3x vineerist plangud
  • 1x väike lehter
  • 1x veepaak (saate valida, millist kogust soovite, mina läksin 10 liitri peale)
  • 1x tilgakandik

Kõik materjalid ja hinnad leiate lisatud tootekirjeldusest.

Samm: kogu elektroonika ühendamine

Kogu elektroonika ühendamine
Kogu elektroonika ühendamine
Kogu elektroonika ühendamine
Kogu elektroonika ühendamine

Nüüd, kui oleme kogu elektroonika kokku võtnud, on aeg need ühendada. Tegin kaks Fritzingi vooluahelat, ühe leivalaua ja ühe skeemi, et näidata teile, kuidas ja kuhu kogu elektroonika ühendada. Fritzingi allalaadimislingi leiate siit: https://fritzing.org/download/. Nagu varem mainitud, kasutasin ma Raspberry Pi ja ühendasin vee jaoks RFID -skanneri, kaks ultraheliandurit, ühe temperatuurianduri, LCD -ekraani ja peristaltilise pumba.

Lisasin need kaks vooluringi PDF -failina, kui soovite seda lähemalt uurida.

2. samm: seadistage Raspberry Pi

Kasutame oma Raspberry Pi -d, et juhtida ja juhtida kõike: taustaprogrammi, kasutajaliidest ja andmebaasi.

Raspberry Pi ei tööta automaatselt. Selle kasutamise alustamiseks peame läbima mõned sammud.

Samm: Raspbian

Kui kasutate uhiuut Raspberry Pi, vajate raspbiani. Allalaadimislingi ja õpetuse leiate siit.

Samm: pildi kirjutamine SD -le

Nüüd, kui teil on oma Raspbiani pilt, vajate pildifaili SD -kaardile kirjutamiseks pilti kirjutavat tarkvara (soovitan win32diskimager). Täieliku õpetuse leiate siit.

Samm: logige sisse Raspberry Pi -sse

Avage "Powershell" ja tippige "ssh [email protected]". Kui kõik läheb õigesti, küsivad nad teilt parooli (vaikimisi parool on alati vaarikas). Tavaliselt peaks see teid Raspberry Pi sisse logima. Nüüd peame oma seadeid muutma. Tippige terminali sudo raspi-config ja vajutage sisestusklahvi. Liikuge lokaliseerimisvalikutele> muutke ajavööndit ja määrake see oma ajavööndiks. Samuti peaksite muutma oma WiFi-riigi oma asukohaks. Lõpuks minge liidese valikutesse ja lubage SPI, I2C ja 1-juhe. See on oluline andurite õigeks kasutamiseks.

Samm: Interneti -ühenduse seadistamine

Kasutame WiFi -võrku. Koduvõrgu saate lisada järgmiselt.

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

Ühenduse loomiseks peate oma Pi taaskäivitama. Et kontrollida, kas see töötas, saate ifconfig abil kontrollida, kas IP -aadress on olemas.

Samm: veebiserveri ja andmebaasi seadistamine

Esiteks on parem süsteemi uuendada ja täiendada järgmise käsujärjega:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt uuendus
  3. sudo apt värskendus
  4. sudo apt autoremove

Kui see on tehtud, vajame oma veebiserveri ja andmebaasi jaoks järgmisi pakette:

Apache

sudo apt install apache2 -y

PHP

sudo apt install php

sudo apt install phpMyAdmin -y

Ärge unustage määrata turvalist MySQL -i parooli, kui see küsib parooli.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php -mysql -y

sudo systemctl taaskäivitage apache2.service

Samm: Pythoni teekide installimine

Taustprogrammi jaoks vajame Pythoni jaoks mõnda raamatukogu. Paigaldame need pip3 abil, kuna kasutame python3.

pip3 installige mysql-connector-python

pip3 paigaldage kolb-pistikupesa

pip3 paigaldage kolvid

pip3 install gevent

pip3 installige gevent-websocket

sudo apt install python3 -mysql.connector -y

pip3 paigaldage mfrc522! (seda vajame RFID -skanneri kasutamiseks)

Samm: Visual Studio koodi ettevalmistamine

Koodi käitamiseks soovitan Raspberry Pi ühendamiseks kasutada Visual Studio Code'i. Allalaadimislingi VSC installimiseks leiate siit.

Kui teil pole veel SSH abil kaugarendust installitud, leiate selle tegemiseks vajalikud sammud siit.

3. samm: andmebaasi loomine

Andmebaasi loomine
Andmebaasi loomine

Salvestame kõik andurite andmed ja kasutajaandmed andmebaasi.

Minu andmebaas koosneb viiest tabelist:

Seade

Tabeliseadmel on seadme ID, mis viitab seadmele endale. DeviceName annab seadme nime, antud juhul ultraheli anduri, temperatuurianduri,… DeviceType annab seadme tüübi (andur või täiturmehhanism).

Ajalugu

Tabeli ajalugu sisaldab kogu andurite ajalugu koos de date'iga (HistoryDate) ajalugu lisati ja ajaloo hetke väärtus. Sellel on ka kaks välisvõtit:

  • DeviceID, konkreetse logi seadmega linkimiseks
  • UserID, et siduda konkreetne kasutaja logiga (seda seetõttu, et kasutame RFID -d ja soovime lisada ajaloologi ühele konkreetsele kasutajale)

Kasutaja

Tabeli kasutajat kasutatakse RFID -skanneriga kasutaja sisselogimissüsteemi loomiseks. See koosneb hüüdnimest, eesnimest, perekonnanimest, paroolist ja RFID -st (see on märgendi RFID -number). Iga kasutaja on lingitud konteineriga (veemahutiga) ja kannab ka ContainerID välisvõti.

Konteiner

Lauakonteiner koosneb erinevatest konteineritest. Sellel on ID, ContainerLocation (see võib olla ettevõte, kodu või midagi muud). Lõpuks on sellel MaxLevel, mis tähistab konteineri maksimaalset mahtu.

Seaded

Tabeli seadistustel on seadete ID ja see jälgib iga kasutaja DailyGoali + kuupäeva, mil kasutaja DailyGoali lisas. See selgitab välisvõtme kasutajatunnust.

Andmebaasi prügimäe leiate minu GitHubi hoidlast andmebaasi alt.

Samm: taustaprogrammi seadistamine

Pole ühtegi projekti ilma töötava taustata.

Taustaprogramm koosneb neljast erinevast asjast:

abilised

Abimehed on kõik klassid, mida kasutatakse erinevate andurite ja täiturmehhanismide jaoks. Temperatuurianduril (DS18B20), ultrahelianduritel (HCSR05) on abivahend kauguse mõõtmiseks ja LCD -ekraanil saab sõnumeid kirjutada.

hoidlad

Hoidlate kaustast leiate 2 Pythoni faili:

  • Database.py, mis on abiline ridade eemaldamiseks andmebaasist. See hõlbustab andmebaasi täitmist ja lugemist.
  • DataRepository.py, mis sisaldab kõiki SQL -päringuid, mida kasutatakse põhikoodis (app.py). Neid kasutatakse andmebaasi andmete hankimiseks, värskendamiseks või kustutamiseks.

app.py

See on projekti peamine taustaprogramm. See teeb seadistamise, määrates kindlaks kõik tihvtid ja režiimid ning sisaldab koodi pumba tööle panemiseks, temperatuuri saamiseks, kasutaja hankimiseks ja nii edasi. See sisaldab ka marsruute, mida kasutatakse andmebaasist andmete hankimiseks ja kõikidest pistikupesadest. Iga HTML -lehe jaoks on erinev socketio.on, et veenduda, et iga funktsioon töötab õigel ajal.

config.py

Meil on jäänud üks fail: config.py. See on fail koos andmebaasiga ühenduse loomise konfiguratsioonivalikutega. Ärge unustage seadistada oma andmebaasi mandaati.

Taustaprogrammi leiate minu hoidlast taustaprogrammi alt.

Samm: kasutajaliidese seadistamine

Esiplaani seadistamine
Esiplaani seadistamine
Esiplaani seadistamine
Esiplaani seadistamine

Esialgu jaoks tegin ma disaini sellest, milline peaks minu veebiserver AdobeXD -s välja nägema. Kasutasin oma logo värve, mis on oranžid ja 2 erinevat sinist tooni. Püüdsin hoida disaini võimalikult lihtsana ja lõin veepiisa, mis näitab protsenti, mil määral olete oma päeva eesmärgi saavutanud.

Minu GitHubi hoidlast leiate minu kasutajaliidese koodist> Frontend. Oluline on see kleepida oma Raspberry Pi kausta /var /html, et muuta see veebiserverist juurdepääsetavaks.

See koosneb paarist HTML -failist, mis viivad erinevatele lehtedele. Samuti leiate minu screen.css koos kõigi CSS -idega, mida vajate, et see näeks välja nagu minu projekt. Lõpuks on teil skriptide all erinevad JavaScripti failid. Need skriptid suhtlevad minu taustaprogrammiga, et näidata andmeid minu andmebaasist või taustaprogrammist.

Taustaprogrammi leiate minu hoidlast kasutajaliidese alt.

6. samm: korpuse loomine

Korpuse loomine
Korpuse loomine
Korpuse loomine
Korpuse loomine
Korpuse loomine
Korpuse loomine

Kui me räägime minu juhtumist, siis on kaks peamist osa:

Väljaspool korpust

Ehitasin korpuse nullist. Kasutasin vineerplaate ja saagisin õiges suuruses. Keerasin kõik plangud kokku ja puurisin augud LCD -ekraanile, nupule, ultraheliandurile, et tuvastada, kas veepudel on kohal, ja lehtri vee jaotamiseks. Jagasin oma ümbrise erinevatesse osadesse, et vesi ja elektroonika oleksid eraldatud, ja kasutasin kaablialust, et kaitsta kaableid vee lekke eest. Lisatud videos näete enamikku minu ümbrise aspekte ja seda, kuidas ma selle tegin. Trükkisin ka 3D -nupu, mis on liimitud tavalisele nupule. Lõpuks kasutasin tilkumisalust kogu mahavoolanud vee püüdmiseks. Kasutasin ka hinged, et saaksin oma elektroonika vaatamiseks külgpaneeli avada ja sulgeda. Võite alati kasutada kasutatud jaoturit või kasutada ka muid materjale.

Ehitise täpsete mõõtmiste jaoks lisasin PDF -faili, millel on kõik korpuses kasutatud plaatide suurused.

Veepaak

Veepaak polnud kerge töö. Sain veepaagi, mille põhjas oli auk, nii et pidin selle lekkima, et leke peatada. Teil on vaja neli auku: üks temperatuurianduri jaoks, teine pumba torude jaoks. üks toru jaoks paagi täitmiseks ja teine ultrahelianduri jaoks. Viimase jaoks printisin 3D jaoks selle jaoks korpuse, mille leiate siit. See annab andurile rohkem kaitset vee eest. Seejärel puurisin paagi ülaossa ristküliku, et andur peal püsida.

Soovitan: