Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
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
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:
- sudo apt dist-upgrade --auto-odstrani -y
- sudo apt nadgradnja
- sudo apt posodobitev
- 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
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
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
Č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:
Samodejni razpršilnik za razkuževanje rok: 6 korakov
Samodejni razpršilnik za razkuževanje rok: V tem projektu bomo izdelali razpršilnik za samodejno razkuževanje rok. Ta projekt bo uporabljal Arduino, ultrazvočni senzor, vodno črpalko in razkužilo za roke. Ultrazvočni senzor se uporablja za preverjanje prisotnosti rok pod izhodom razkužilnega sredstva.
Samodejni razpršilnik mila z uporabo Arduina: 8 korakov
Samodejni razpršilnik mila z uporabo Arduina: Samodejni razpršilnik mila z uporabo arduina: Pozdravljeni, dobrodošli nazaj v nov članek v tem članku bomo izdelali avtomatski razpršilnik mila z uporabo arduina, ta avtomat za milo je zelo enostaven za izdelavo
Samodejni razpršilnik alkohola z Arduinom: 6 korakov
Samodejni razpršilnik alkohola z Arduinom: Ta projekt arduino vas bo vodil, kako narediti avtomatski razpršilnik alkohola. Uporabniku se ni treba nič dotikati, da bi dobil alkohol, samo približajte se ultrazvočnemu senzorju, alkohol bo iztisnjen, nato pa se predvaja zvočna datoteka, ki uporabniku sporoči, naj obdrži
Samodejni razpršilnik psov: 10 korakov
Samodejni razpršilnik za pse: S svojim projektom poskrbim, da psa, ko ga pustite samega doma, nikoli ne ostane brez hrane. Samodejni podajalnik bo " vlomljen " iz razpršilnika za koruzne kosmiče. Razpršilnik je rezervoar za hrano za pse, kolo na dnu
Samodejni razpršilnik koruznih kosmičev (cerematski): 14 korakov
Samodejni razpršilnik koruznih kosmičev (keramičen): Moja ideja: Za moj zadnji projekt v prvem letu sem smel izdelati projekt, ki mi je bil všeč. Zame je bila izbira hitro narejena. Zdelo se mi je izvirna ideja za avtomatizacijo razpršilnika žit, tako da lahko stroj upravljate na daljavo. Po nekaj r