Kazalo:

Samodejni razpršilnik vode za sledenje porabi: 6 korakov
Samodejni razpršilnik vode za sledenje porabi: 6 korakov

Video: Samodejni razpršilnik vode za sledenje porabi: 6 korakov

Video: Samodejni razpršilnik vode za sledenje porabi: 6 korakov
Video: Часть 4 - Трипланетная аудиокнига Э. Э. Смита (глы 13–17) 2024, Julij
Anonim
Samodejni razpršilnik vode za sledenje porabi
Samodejni razpršilnik vode za sledenje porabi
Samodejni razpršilnik vode za sledenje porabi
Samodejni razpršilnik vode za sledenje porabi

Zdravo!

Pred nekaj meseci sem v svoji sobi razmišljal, kakšen projekt želim narediti za šolsko nalogo. Želel sem narediti nekaj, kar mi ustreza in bi mi v prihodnje koristilo. Nenadoma je v sobo vstopila moja mama in se začela pritoževati, da ne pije dovolj vode. Takoj sem doživel bogojavljenje. Zamislila se mi je, da naredim avtomatski razpršilnik vode (kot v kinu), ki dnevno spremlja vašo porabo vode.

Z Raspberry Pi, nekaj senzorji, črpalko in malo znanja sem poskušal to narediti čim boljše.

Na koncu vseh korakov boste imeli delujoč razpršilnik vode, ki napolni vašo posodo za vodo, ki se poveže in komunicira z vašim Raspberry Pi. Ne samo, da boste lahko spremljali porabo vode na podlagi odstotka, ampak boste imeli tudi možnost ogleda temperature in nivoja vode v posodi za vodo. Končno boste lahko preverili svojo statistiko. Če se vam to zdi zanimivo, preverite in preizkusite sami!

Skladišče GitHub:

Zaloge

Mikrokrmilniki

Malina Pi 4

Senzorji in moduli

Uporabil sem 4 senzorje:

2xHC-SR04 Ultrazvočni senzor

Ultrazvočni senzorji merijo razdaljo z uporabo ultrazvočnih valov. Senzorska glava oddaja ultrazvočni val in sprejema val, ki se odbija nazaj od cilja. Ultrazvočni senzorji merijo razdaljo do cilja z merjenjem časa med oddajo in sprejemom. Dva sem uporabil za preverjanje, ali je v bližini kakšna steklenica, in za merjenje razdalje do vode v rezervoarju.

Podatkovni list

1x temperaturni senzor DS18B20

DS18B20 je 1-žični programabilni temperaturni senzor, ki ga je mogoče programirati. Široko se uporablja za merjenje temperature v trdih okoljih, na primer v kemičnih raztopinah, rudnikih ali tleh. Uporabil sem ga za merjenje temperature vode v rezervoarju za vodo.

Podatkovni list

1x RFID modul RC522

RC522 je 13,56 MHz RFID modul, ki temelji na krmilniku MFRC522 iz polprevodnikov NXP. Modul podpira I2C, SPI in UART in je običajno dobavljen s kartico RFID in obeskom za ključe. Običajno se uporablja v sistemih prisotnosti in drugih aplikacijah za identifikacijo oseb/predmetov. V tem projektu se uporablja za sistem identifikacije/prijave.

Podatkovni list

In 2 pogona:

1x Peristaltična črpalka 12-24V

Uporabil sem peristaltično črpalko, da sem dobil vodo iz rezervoarja v steklenico z vodo. Večina črpalk je bila prepočasna, zato sem se odločil za 24V različico, ki jo napajam s 24V napajalnikom.

1x LCD zaslon

LCD se uporablja za prikaz naslova IP in pomembnih sporočil. Zaslon s tekočimi kristali (LCD) je ploski zaslon ali druga elektronsko modulirana optična naprava, ki uporablja svetlobno modulirane lastnosti tekočih kristalov v kombinaciji s polarizatorji.

Podatkovni list

Ohišje

Ko smo že pri ohišju, sem naredil DIY z zalogami iz domačega skladišča (v mojem primeru Brico v Belgiji). Uporabil sem vezane plošče, ki sem jih razrezal na pravo velikost. V naslednjem koraku bom govoril o tem, kako sem predstavil svoj primer, vendar boste potrebovali naslednje stvari:

  • 3x vezane deske
  • 1x majhen lijak
  • 1x rezervoar za vodo (lahko izberete količino, ki jo želite, jaz sem šel za 10L)
  • 1x pladenj za kapljanje

Vse materiale in cene najdete v priloženi BOM.

1. korak: Priključite vso elektroniko

Priključitev vse elektronike
Priključitev vse elektronike
Priključitev vse elektronike
Priključitev vse elektronike

Zdaj, ko smo povzeli vso elektroniko, je čas, da jih povežemo. Naredil sem dva vezja Fritzing, eno ploščo in eno shemo, da bi vam pokazal, kako in kje je treba priključiti vso elektroniko. Povezavo za prenos Fritzinga najdete tukaj: https://fritzing.org/download/. Kot sem že omenil, sem uporabil Raspberry Pi in priključil skener RFID, dva ultrazvočna senzorja, en temperaturni senzor, LCD in peristaltično črpalko za vodo.

Dva vezja sem priložil v PDF, če si ga želite podrobneje ogledati.

2. korak: Nastavitev Raspberry Pi

Naš Raspberry Pi bomo uporabljali za izvajanje in nadzor vsega: zaledja, zunanjega vmesnika in baze podatkov.

Raspberry Pi se ne zažene samodejno. Za začetek uporabe bomo morali opraviti nekaj korakov.

Korak: Raspbian

Če uporabljate popolnoma nov Raspberry Pi, boste potrebovali raspbian. Povezavo za prenos in vadnico najdete tukaj.

2. korak: Zapis slike na SD

Zdaj, ko imate svojo sliko Raspbian, boste za zapisovanje slikovne datoteke na kartico SD potrebovali programsko opremo za zapisovanje slik (priporočam win32diskimager). Celotno vadnico najdete tukaj.

3. korak: Prijava v Raspberry Pi

Odprite "Powershell" in vnesite "ssh [email protected]". Če bo vse v redu, vas bodo vprašali za geslo (privzeto geslo je vedno malinovo). Običajno se morate s tem prijaviti v Raspberry Pi. Zdaj bomo morali nekaj spremeniti v naših nastavitvah. V terminal vnesite sudo raspi-config in pritisnite enter. Pomaknite se do možnosti lokalizacije> spremenite časovni pas in ga nastavite na svoj časovni pas. Država Wi-Fi morate spremeniti tudi na svojo lokacijo. Na koncu pojdite na možnosti vmesnika in omogočite SPI, I2C in 1-žično. To bo pomembno za pravilno uporabo senzorjev.

4. korak: vzpostavite internetno povezavo

Uporabljali bomo omrežje WiFi. Domače omrežje lahko dodate prek:

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

Za vzpostavitev povezave boste morali znova zagnati Pi. Če želite preveriti, ali deluje, lahko z ifconfig preverite, ali obstaja naslov IP.

5. korak: Nastavitev spletnega strežnika in baze podatkov

Najprej je najbolje, da sistem posodobite in nadgradite z naslednjim zaporedjem ukazov:

  1. sudo apt dist-upgrade --auto-odstrani -y
  2. sudo apt nadgradnja
  3. sudo apt posodobitev
  4. sudo apt samodejno odstrani

Ko to storimo, bomo za naš spletni strežnik in bazo podatkov potrebovali naslednje pakete:

Apache

sudo apt namestite apache2 -y

PHP

sudo apt namestite php

sudo apt install phpMyAdmin -y

Ne pozabite nastaviti varnega gesla MySQL, ko vas vpraša za nastavitev gesla.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt namestite php -mysql -y

sudo systemctl znova zaženite apache2.service

6. korak: Namestitev knjižnic Python

Za zaledje bomo potrebovali nekaj knjižnic za Python. Namestili jih bomo s pip3, ker uporabljamo python3.

pip3 namestite mysql-connector-python

pip3 namestite flask-socketio

pip3 namestite flask-cors

pip3 namestite gevent

pip3 namestite gevent-websocket

sudo apt namestite python3 -mysql.connector -y

pip3 namestite mfrc522! (to bomo potrebovali za uporabo optičnega bralnika RFID)

7. korak: Priprava kode Visual Studio

Za zagon kode priporočam uporabo Visual Studio Code za povezavo vašega Raspberry Pi. Povezavo za prenos za namestitev VSC najdete tukaj.

Če še nimate nameščenega daljinskega razvoja s pomočjo SSH, lahko korake za to najdete tukaj.

3. korak: Ustvarjanje baze podatkov

Ustvarjanje baze podatkov
Ustvarjanje baze podatkov

Vse naše podatke senzorjev in uporabniške podatke bomo shranili v bazo podatkov.

Moja baza podatkov je sestavljena iz 5 tabel:

Naprava

Namizna naprava ima ID naprave, ki se sklicuje na samo napravo. DeviceName daje ime naprave, v tem primeru ultrazvočni senzor, temperaturni senzor,… DeviceType podaja tip naprave (senzor ali aktuator).

Zgodovina

Zgodovina tabel vsebuje vso zgodovino senzorjev, skupaj z datumom (HistoryDate) je bila zgodovina dodana in vrednost trenutka v zgodovini. Ima tudi dva tuja ključa:

  • DeviceID za povezavo določenega dnevnika z napravo
  • UserID, da določenega uporabnika povežete z dnevnikom (to je zato, ker uporabljamo RFID in želimo dnevnik zgodovine dodati enemu določenemu uporabniku)

Uporabnik

Tabela Uporabnik se uporablja za ustvarjanje sistema za prijavo uporabnikov s skenerjem RFID. Sestavljen je iz vzdevka, imena, priimka, gesla in RFID (to je številka RFID oznake). Vsak uporabnik je povezan z vsebnikom (vodni rezervoar) in nosi tudi ContainerID kot tuji ključ.

Zabojnik

Namizni vsebnik je sestavljen iz vseh različnih vsebnikov. Ima ID, ContainerLocation (to je lahko podjetje, dom ali karkoli drugega). Nazadnje ima MaxLevel, ki pomeni največjo prostornino, ki jo ima posoda.

Nastavitve

Nastavitve tabele imajo ID nastavitev in sledi DailyGoal vsakega uporabnika + datumu, ko je uporabnik dodal DailyGoal. To pojasnjuje ID uporabnika tujega ključa.

Izpis podatkovne zbirke najdete v mojem skladišču GitHub pod Database.

4. korak: Nastavitev zaledja

Brez delovnega zaledja ni projekta.

Zaledje je sestavljeno iz 4 različnih stvari:

pomočniki

Pomočniki so vsi razredi, ki se uporabljajo za različne senzorje in aktuatorje. Obstaja pomočnik za temperaturni senzor (DS18B20), za ultrazvočne senzorje (HCSR05), ki lahko izmerijo razdaljo in za LCD, da lahko piše sporočila na zaslon.

skladišča

V mapi repozitorijev boste našli 2 datoteki Python:

  • Database.py, ki je pomoč pri odstranjevanju vrstic iz vaše baze podatkov. Olajša izvajanje in branje baze podatkov.
  • DataRepository.py, ki vsebuje vse poizvedbe SQL, ki se uporabljajo v glavni kodi (app.py). Uporabljajo se za pridobivanje, posodabljanje ali brisanje podatkov iz baze podatkov.

app.py

To je glavna zaledna koda projekta. Namestitev izvede tako, da opredeli vse zatiče in načine ter vsebuje kodo za delovanje črpalke, doseganje temperature, pridobivanje uporabnika itd. Vsebuje tudi poti, ki se uporabljajo za pridobivanje podatkov iz zbirke podatkov in vseh socketio.on. Za vsako stran HTML je drugačen socketio.on, da zagotovite, da vsaka funkcija deluje ob pravem času.

config.py

Ostala nam je ena datoteka: config.py. To je datoteka z nastavitvenimi možnostmi za povezavo z vašo bazo podatkov. Ne pozabite nastaviti poverilnic baze podatkov.

Zaledje lahko najdete v mojem skladišču pod Backend.

5. korak: Nastavitev prednje strani

Nastavitev Frontenda
Nastavitev Frontenda
Nastavitev Frontenda
Nastavitev Frontenda

Za Frontend sem začel z oblikovanjem, kako naj bi moj spletni strežnik izgledal v AdobeXD. Uporabil sem barve v svojem logotipu, ki sta oranžna in 2 različna odtenka modre. Poskušal sem ohraniti čim preprostejšo zasnovo in ustvaril vodnjak, ki prikazuje odstotek, v kolikšni meri ste dosegli svoj dnevni cilj.

V mojem skladišču GitHub boste našli moj Frontend pod Code> Frontend. Pomembno je, da to prilepite v mapo /var /html Raspberry Pi, da bo dostopna s spletnega strežnika.

Sestavljen je iz nekaj datotek HTML, ki vodijo do različnih strani. Našli boste tudi moj screen.css z vsemi CSS, ki jih potrebujete, da bo videti kot moj projekt. Nazadnje, pod skripti boste imeli različne datoteke JavaScript. Ti skripti komunicirajo z mojim zaledjem in prikazujejo podatke iz moje baze podatkov ali zaledja.

Zaledje lahko najdete v mojem skladišču pod Frontend.

6. korak: Ustvarjanje ohišja

Ustvarjanje ohišja
Ustvarjanje ohišja
Ustvarjanje ohišja
Ustvarjanje ohišja
Ustvarjanje ohišja
Ustvarjanje ohišja

Če govorimo o mojem primeru, obstajata dva glavna dela:

Zunaj ohišja

Ohišje sem zgradil iz nič. Uporabil sem deske iz vezanega lesa in jih razžagal v pravilnih velikostih. Vse deske sem privijal skupaj in izvrtal luknje za LCD, gumb, ultrazvočni senzor, da odkrijem, ali je prisotna steklenica z vodo in lijak za distribucijo vode. Ohišje sem razdelil na različne dele, da voda in elektronika ostanejo ločeni, za zaščito kablov pred uhajanjem vode pa sem uporabil kabelski pladenj. V priloženem videoposnetku si lahko ogledate večino vidikov mojega ohišja in kako sem ga naredil. Prav tako sem 3D natisnil gumb, ki je prilepljen na običajen gumb. Na koncu sem uporabil pladenj za kapljanje, da sem zajel vso razlito vodo. Uporabil sem tudi tečaje, da sem lahko odpiral in zapiral stransko ploščo, da sem pogledal svojo elektroniko. Vedno lahko uporabite rabljen razpršilnik ali pa uporabite druge materiale.

Za natančne meritve moje zgradbe sem priložil PDF z vsemi velikostmi plošč, uporabljenih v ohišju.

Rezervoar za vodo

Rezervoar za vodo ni bilo lahko delo. Dobil sem rezervoar za vodo z luknjo na dnu, zato sem ga moral zalepiti, da sem ustavil uhajanje. Potrebovali boste štiri luknje: eno za temperaturni senzor, eno za cevi črpalke. ena za cevi za ponovno polnjenje rezervoarja in ena za ultrazvočni senzor. Za zadnjega sem 3D natisnil kovček zanj, ki ga najdete tukaj. To daje senzorju večjo zaščito pred vodo. Nato sem izvrtal pravokotnik na vrhu rezervoarja, da senzor počiva.

Priporočena: