Sadržaj:

Automatski dozator vode za praćenje potrošnje: 6 koraka
Automatski dozator vode za praćenje potrošnje: 6 koraka

Video: Automatski dozator vode za praćenje potrošnje: 6 koraka

Video: Automatski dozator vode za praćenje potrošnje: 6 koraka
Video: Robopac Robot Worker.wmv 2024, Studeni
Anonim
Automatski dozator vode za praćenje potrošnje
Automatski dozator vode za praćenje potrošnje
Automatski dozator vode za praćenje potrošnje
Automatski dozator vode za praćenje potrošnje

Bok tamo!

Prije nekoliko mjeseci bio sam u svojoj sobi i razmišljao o tome kakav projekt želim napraviti za školski zadatak. Htio sam napraviti nešto što mi odgovara i što će mi koristiti u budućnosti. Odjednom je mama ušla u sobu i počela se žaliti da ne pije dovoljno vode. Odmah sam imao bogojavljenje. Došla mi je ideja da napravim automatski dozator vode (kao u kinu) koji svakodnevno prati vašu potrošnju vode.

Uz Raspberry Pi, nekoliko senzora, pumpu i malo znanja pokušao sam ovo učiniti što boljim.

Na kraju svih koraka imat ćete radni dozator za vodu koji vam puni bocu za vodu i koji se povezuje i komunicira s vašim Raspberry Pi. Ne samo da ćete moći pratiti svoju potrošnju vode na temelju postotka, već ćete također imati priliku vidjeti temperaturu i razinu vode u spremniku za vodu. Konačno, moći ćete provjeriti svoju statistiku. Ako vam ovo zvuči zanimljivo, svakako provjerite i probajte sami!

Spremište GitHub:

Pribor

Mikrokontroleri

Malina Pi 4

Senzori i moduli

Koristio sam 4 senzora:

2xHC-SR04Ultrazvučni senzor

Ultrazvučni senzori mjere udaljenost pomoću ultrazvučnih valova. Senzorska glava emitira ultrazvučni val i prima val reflektiran natrag od mete. Ultrazvučni senzori mjere udaljenost do cilja mjereći vrijeme između emisije i prijema. Koristio sam dvije od njih da provjerim postoji li u blizini boca i izmjerim udaljenost do vode u spremniku.

Tehnički list

1x senzor temperature DS18B20

DS18B20 je 1-žični programabilni temperaturni osjetnik koji se može programirati i integriran je. Široko se koristi za mjerenje temperature u teškim okruženjima, poput kemijskih otopina, rudnika ili tla, itd. Koristio sam ga za mjerenje temperature vode u spremniku za vodu.

Tehnički list

1x RFID modul RC522

RC522 je RFID modul od 13,56 MHz koji se temelji na kontroleru MFRC522 iz poluvodiča NXP. Modul podržava I2C, SPI i UART i obično se isporučuje s RFID karticom i privjeskom za ključeve. Obično se koristi u sustavima prisutnosti i drugim aplikacijama za identifikaciju osoba/predmeta. U ovom projektu koristi se za sustav identifikacije/prijave.

Tehnički list

I 2 pokretača:

1x Peristaltička pumpa 12-24V

Koristio sam peristaltičku pumpu da vodu iz spremnika dovedem u bocu s vodom. Većina crpki bile su presporo, pa sam se odlučio za 24V verziju koju napajam pomoću 24V adaptera za napajanje.

1x LCD zaslon

LCD se koristi za prikaz IP adrese i važnih poruka. Zaslon s tekućim kristalima (LCD) je zaslon ravnog ekrana ili drugi elektronički modulirani optički uređaj koji koristi svjetlo modulirajuća svojstva tekućih kristala u kombinaciji s polarizatorima.

Tehnički list

Kućište

Kad smo već kod kućišta, uradila sam sam sa zalihama iz kućnog skladišta (u mom slučaju Brico u Belgiji). Koristio sam šperploču koju sam izrezao na odgovarajuću veličinu. Govorit ću o tome kako sam iznio svoj slučaj u daljnjem koraku, ali evo što će vam trebati:

  • 3x daske od šperploče
  • 1x Mali lijevak
  • 1x spremnik vode (možete izabrati koju količinu želite, ja sam uzeo 10L)
  • 1x posuda za kapanje

Sve materijale i cijene možete pronaći u priloženoj specifikaciji.

Korak 1: Spajanje sve elektronike

Spajanje sve elektronike
Spajanje sve elektronike
Spajanje sve elektronike
Spajanje sve elektronike

Sada kada smo saželi svu elektroniku, vrijeme je da ih povežemo. Napravio sam dva kruga Fritzinga, jednu ploču i jednu shemu, kako bih vam pokazao kako i gdje treba spojiti svu elektroniku. Link za preuzimanje Fritzinga možete pronaći ovdje: https://fritzing.org/download/. Kao što je već spomenuto, upotrijebio sam Raspberry Pi i spojio RFID skener, dva ultrazvučna senzora, jedan temperaturni senzor, LCD i peristaltičku pumpu za vodu.

Priložio sam dva kruga u PDF, ako ga želite bolje pogledati.

Korak 2: Postavljanje Raspberry Pi

Koristit ćemo naš Raspberry Pi za pokretanje i kontrolu svega: pozadine, sučelja i baze podataka.

Raspberry Pi se ne pokreće automatski. Morat ćemo proći neke korake da bismo ga počeli koristiti.

Korak 1: Raspbian

Ako koristite potpuno novi Raspberry Pi, trebat će vam raspbian. Link za preuzimanje i vodič mogu se pronaći ovdje.

Korak 2: Zapisivanje slike na SD

Sada kada imate Raspbian sliku, trebat će vam softver za pisanje slika (preporučujem win32diskimager) za pisanje slikovne datoteke na SD karticu. Cijeli vodič može se pronaći ovdje.

Korak 3: Prijava na Raspberry Pi

Otvorite "Powershell" i upišite "ssh [email protected]". Ako sve bude kako treba, od vas će tražiti lozinku (zadana lozinka uvijek je malina). Normalno, ovo bi vas trebalo prijaviti na Raspberry Pi. Sada ćemo morati unijeti neke promjene u naše postavke. Upišite sudo raspi-config u terminal i pritisnite enter. Idite na opcije lokalizacije> promijenite vremensku zonu i postavite je na svoju vremensku zonu. Također biste trebali promijeniti svoju Wi-Fi državu na svoju lokaciju. Na kraju, idite na opcije sučelja i omogućite SPI, I2C i 1-žicu. Za ispravnu uporabu senzora bit će važno.

Korak 4: Postavljanje internetske veze

Koristit ćemo WiFi mrežu. Kućnu mrežu možete dodati putem:

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

Morat ćete ponovno pokrenuti Pi da biste uspostavili vezu. Da biste provjerili radi li, pomoću ifconfig provjerite postoji li IP adresa.

Korak 5: Postavljanje web poslužitelja i baze podataka

Prvo je najbolje ažurirati i nadograditi sustav sljedećim nizom naredbi:

  1. sudo apt dist-upgrade --auto-ukloni -y
  2. sudo apt nadogradnja
  3. sudo apt ažuriranje
  4. sudo apt autoremove

Nakon što to učinimo, trebat će nam sljedeći paketi za naš web poslužitelj i bazu podataka:

Apač

sudo apt install apache2 -y

PHP

sudo apt install php

sudo apt install phpMyAdmin -y

Ne zaboravite postaviti sigurnu lozinku za MySQL, kada od vas zatraži da postavite lozinku.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php -mysql -y

sudo systemctl ponovno pokrenite apache2.service

Korak 6: Instaliranje knjižnica Python

Za pozadinu će nam trebati neke knjižnice za Python. Instalirat ćemo ih pomoću pip3, jer koristimo python3.

pip3 instalirajte mysql-konektor-python

pip3 instalirajte flask-socketio

pip3 instalirajte flask-cors

pip3 instalirajte gevent

pip3 instalirajte gevent-websocket

sudo apt install python3 -mysql.connector -y

pip3 instalirajte mfrc522! (ovo će nam trebati za korištenje RFID skenera)

Korak 7: Priprema koda Visual Studio

Za pokretanje koda preporučujem korištenje Visual Studio Code za povezivanje vašeg Raspberry Pi na. Link za preuzimanje za instaliranje VSC -a možete pronaći ovdje.

Ako još nemate instaliran Remote Development pomoću SSH -a, korake za to možete pronaći ovdje.

Korak 3: Stvaranje baze podataka

Stvaranje baze podataka
Stvaranje baze podataka

Pohranit ćemo sve naše podatke senzora i korisničke podatke u bazu podataka.

Moja baza podataka sastoji se od 5 tablica:

Uređaj

Tablični uređaj ima DeviceID koji upućuje na sam uređaj. DeviceName daje naziv uređaja, u ovom slučaju ultrazvučni senzor, osjetnik temperature,… DeviceType daje vrstu uređaja (senzor ili aktuator).

Povijest

Tablica Povijest sadrži svu povijest senzora, zajedno s datumom (HistoryDate) povijest je dodana i vrijednost trenutka u povijesti. Također ima dva strana ključa:

  • DeviceID, za povezivanje određenog dnevnika s uređajem
  • UserID, za povezivanje određenog korisnika s zapisnikom (to je zato što koristimo RFID i želimo dodati zapisnik povijesti jednom određenom korisniku)

Korisnik

Tablica Korisnik se koristi za stvaranje sustava za prijavu korisnika pomoću RFID skenera. Sastoji se od nadimka, imena, prezimena, lozinke i RFID -a (ovo je RFID broj oznake). Svaki je korisnik povezan s spremnikom (vodeni spremnik), a nosi i ID kontejnera kao strani ključ.

Kontejner

Stolni spremnik sastoji se od svih različitih kontejnera. Ima ID, ContainerLocation (ovo može biti poduzeće, dom ili bilo što drugo). Na kraju, ima MaxLevel koji označava maksimalni volumen koji spremnik ima.

Postavke

Postavke tablice imaju ID postavki i prate DailyGoal svakog korisnika + datum kada je DailyGoal dodao korisnik. Ovo objašnjava UserID vanjskog ključa.

Dump baze podataka može se pronaći u mojem GitHub spremištu pod Database.

Korak 4: Postavljanje pozadine

Nema projekta bez radnog pozadinskog prostora.

Pozadina se sastoji od 4 različite stvari:

pomagači

Pomoćnici su sve klase koje se koriste za različite senzore i aktuatore. Postoji pomoćnik za osjetnik temperature (DS18B20), za ultrazvučne senzore (HCSR05) da mogu mjeriti udaljenost i da LCD može pisati poruke na zaslon.

spremišta

U mapi spremišta pronaći ćete 2 Python datoteke:

  • Database.py koji pomaže u uklanjanju redaka iz vaše baze podataka. Olakšava izvođenje i čitanje baze podataka.
  • DataRepository.py koji sadrži sve SQL upite koji se koriste u glavnom kodu (app.py). Koriste se za dobivanje, ažuriranje ili brisanje podataka iz baze podataka.

app.py

Ovo je glavni pozadinski kôd projekta. Postavlja postavke definirajući sve pinove i načine rada i sadrži kôd za rad pumpe, dobivanje temperature, dobivanje korisnika itd. Također sadrži rute koje se koriste za dohvaćanje podataka iz baze podataka i svih socketio.on's. Za svaku HTML stranicu postoji drugačiji socketio.on kako biste bili sigurni da svaka funkcija radi u točno vrijeme.

config.py

Ostala nam je jedna datoteka: config.py. Ovo je datoteka s opcijama konfiguracije za povezivanje s vašom bazom podataka. Ne zaboravite postaviti vjerodajnice za bazu podataka.

Pozadina se može pronaći u mom spremištu pod Backend.

Korak 5: Postavljanje sučelja

Postavljanje sučelja
Postavljanje sučelja
Postavljanje sučelja
Postavljanje sučelja

Za Frontend sam započeo s izradom dizajna kako bi moj web poslužitelj trebao izgledati u AdobeXD -u. Iskoristio sam boje u svom logotipu, a to su narančasta i 2 različite nijanse plave. Pokušao sam dizajn učiniti što jednostavnijim i stvorio sam kapljicu koja prikazuje postotak u kojoj ste mjeri postigli svoj dnevni cilj.

U mojem spremištu GitHub ćete pronaći moj Frontend pod Code> Frontend. Važno je da ovo zalijepite u mapu /var /html svoje Raspberry Pi kako biste je mogli pristupiti s web poslužitelja.

Sastoji se od nekoliko HTML datoteka koje vode do različitih stranica. Naći ćete i moj screen.css sa svim CSS -ima koji su vam potrebni kako bi izgledao kao moj projekt. Na kraju, pod skriptama ćete imati različite JavaScript datoteke. Ove skripte komuniciraju s mojom pozadinom za prikaz podataka iz moje baze podataka ili pozadine.

Pozadina se može pronaći u mom spremištu pod Frontendom.

Korak 6: Izrada kućišta

Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta

Ako govorimo o mom slučaju, postoje dva glavna dijela:

Vanjsko kućište

Napravio sam kućište od nule. Koristio sam daske od šperploče i rezao ih ispravnih veličina. Zašrafio sam sve daske i izbušio rupe za LCD, gumb, ultrazvučni senzor kako bih otkrio ima li prisutna boca vode i lijevak za raspodjelu vode. Svoje sam kućište podijelio na različite dijelove kako bi voda i elektronika bili odvojeni te sam koristio nosač kablova za zaštitu kabela od curenja vode. U priloženom videu možete vidjeti većinu aspekata mog kućišta i kako sam ga napravio. Također sam 3D ispisao gumb koji je zalijepljen na uobičajeni gumb. Konačno, poslužio sam posudu za kapanje da sakupim svu prolivenu vodu. Također sam koristio šarke kako bih mogao otvoriti i zatvoriti bočnu ploču kako bih pogledao svoju elektroniku. Uvijek možete koristiti rabljeni dozator ili možete koristiti i druge materijale.

Za točne mjere moje građe, priložio sam PDF sa svim veličinama ploča koje se koriste u kućištu.

Spremnik za vodu

Spremnik vode nije bio lak posao. Dobio sam rezervoar za vodu s rupom na dnu, pa sam ga morao zalijepiti da bih zaustavio curenje. Trebat će vam četiri rupe: jedna za osjetnik temperature, jedna za cijevi vaše crpke. jedan za cijevi za ponovno punjenje spremnika i jedan za ultrazvučni senzor. Za ovaj zadnji, 3D sam mu ispisao kućište, koje se može pronaći ovdje. To daje senzoru veću zaštitu od vode. Zatim sam izbušio pravokutnik na vrhu spremnika, kako bih postavio senzor.

Preporučeni: