Kazalo:
- Zaloge
- 1. korak: Sestavljanje vezja
- 2. korak: Nastavitev našega RaspberryPi
- 3. korak: Nastavitev zaledja
- 4. korak: Nastavitev Frontenda
- 5. korak: Uvoz baze podatkov za naš projekt
- 6. korak: Zagon našega projekta
- 7. korak: Primer
- 8. korak: Občudujte končni izdelek
- 9. korak: Težave
Video: Brezstični vodnjak: 9 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Konec prvega leta študenta MCT sem imel nalogo, da naredim projekt, ki vsebuje vse veščine, ki sem jih skozi vse leto pridobival na tečajih.
Iskal sem projekt, ki bi preveril vse zahteve, ki so jih postavili moji učitelji, hkrati pa bi bil zame zabaven. Ko sem iskal temo, se nisem mogel načuditi navdihu Covid-19 (to je bilo tik pred širjenjem svetovnega izbruha.) Odločil sem se za stik brez vodnjaka/razpršilnika, saj bi to ponujal pitne vode, ne da bi se dotaknili nekaterih gumbov, preden voda izteče.
Ta projekt uporablja senzor razdalje, da zazna, če je bila pod izhod vode postavljena skodelica ali kozarec, nato pa bo vodnjak 60 sekund (100 ml / minuto) nadaljeval z izhodom vode. To je zato, da bi bilo bolj dosledno, saj se je odkrivanje, ali je steklo odmaknjeno, izkazalo za pretežko/počasno nalogo, zato je bil nameščen časomer. Ko ste kozarec napolnili s 100 ml vode, lahko počakate 5 sekund, če pa je kozarec še vedno pred senzorjem razdalje, se bo napolnil še enkrat (to pomeni, da je med polnjenjem dveh različnih časovnih omejitev tudi 5 sekund) predmeti).
Zaloge
Sestavni deli
- 1x RaspberryPi (uporabil sem 4. različico, vendar bi lahko delovale tudi starejše različice)- 1x tranzistor S8050 ali 1x tranzistor PN2222 lahko delujeta tudi- 1x fotorezistor- 1x HC-SR04 (ultrazvočni senzor razdalje)- 1x RFID-RC522- 3x različno barve LED (modra, rumena, rdeča)- 1x LCD1602- 1x aktivni zvočni signal- 1x PCF8574- 1x MCP3008- 1x vodna črpalka (uporabljena je bila 12v peristaltična črpalka, povezava do tega artikla)
- 1x napajanje z enosmernim tokom (12v, 600mAh)- 1x električna opeka s 3 mesti- 3x plošče (verjetno bi jih lahko uporabili manj)- T-čevljar za zatiče RaspberryPi GPIO- kabel T-čevljar (za povezavo med pi in čevljarjem)
Uporabljeni materiali in orodja
- sveder z naslednjimi svedri:
- 4 mm (za predhodno vrtanje lukenj za vijake) - 15 mm (za vrtanje lukenj za senzor razdalje)
- kateri koli izvijač- 30 vijakov dolžine 45 mm- 6 vijakov po 20 mm- 2 tečaja za vrata- plošča iz MDF-ja približno 130 cm do 80 cm- nekaj datotek
1. korak: Sestavljanje vezja
Za vezje imamo 2 senzorja, senzor razdalje in foto upor. Senzor razdalje se uporablja za zaznavanje, če je bila v bližini vodnjaka postavljena skodelica, po izbiri pa sem dodal še foto upor, ta se uporablja za zaznavanje, če je ohišje odprl kdo, ki ga ne bi smel odpreti. Poleg tega imamo bralnik RFID, ki ga lahko uporabimo za preverjanje pristnosti mehanika, ki mora odpreti ohišje, da napolni rezervoar za vodo, ali za kakšno drugo mehansko težavo.
Za aktivne elemente imamo LCD1602, aktivni zvočni signal in peristaltično črpalko, LCD se uporablja za prikaz stanja, na primer, če je ohišje odprto ali črpalka deluje, prikazan pa bo tudi naslov IP naprave, zvočni signal je se uporablja za sprožitev zaskrbljujočega zvoka, ko je bila zadeva odprta, ne da bi to kdo dovolil.
Spodaj sem dodal matično ploščo in shematske poglede vezja.
2. korak: Nastavitev našega RaspberryPi
Za nastavitev našega RaspberryPi -ja bomo s spletnega mesta Raspberry prenesli slikovno programsko opremo, s katero lahko prenesete želeno različico Raspbiana in si sliko SDCARD. Ko to orodje opravi svoje delo, lahko odprete kartico SDCARD v Raziskovalcu Windows in videli boste zagonsko particijo vašega RaspberryPi. Tu bomo našli datoteko z imenom cmdline.txt (te datoteke ne odpirajte v beležnici, odprite jo v Notepad ++ ali kateri koli drugi IDE). Na konec te datoteke bomo dodali ip = 169.254.10.1, da se prepričamo, ali se lahko povežemo z našo napravo prek etherneta (pazite, da na koncu datoteke ne dodate nobenega VNESA, sicer boste imeli težave).
Zdaj lahko SDCARD vstavite v svoj RaspberryPi in ga zaženete, povežete Pi z računalnikom in uporabite Putty za povezavo s svojim Pi preko SSH. Uporabljam naslednji ukaz za povezavo s svojim Pi namesto z uporabo Putty. "ssh [email protected]" to lahko poteče, zato bodite potrpežljivi in počakajte, da se Pi zažene. Ko bomo pozvani k vnosu gesla, bomo vnesli privzeto geslo za "malino". Po prijavi obvezno spremenite to geslo, da preprečite vsem, ki bi imeli slab namen, dostop do vašega Raspberry Pi.
Zdaj bomo konfigurirali naš Pi, da bo zagotovil potrebno funkcionalnost za našo kodo. Uporabite "sudo raspi-config", da odprete konfiguracijski meni in tukaj bomo šli do možnosti vmesnika.
Spodaj bomo vklopili naslednje možnosti:- SPI-I2C
Upoštevajte ta priročnik za nastavitev brezžične internetne povezave na vašem Pi -ju, potem ko ste to uspešno storili, lahko namestimo potrebne pakete.
Paketi: (zaženite ukaze v vrstnem redu, kot je navedeno tukaj)
V nadaljevanju dobite najnovejše posodobitve za našo posodobitev Pisudo apt && apt nadgradnja -y
Namestite naš strežnik MySQL in spletni strežnik- sudo apt install mariadb-server apache2
Kasneje v tem priročniku bom za nastavitev zbirke podatkov uporabil MySQL Workbench. Če tega ne uporabljate in imate raje phpmyadmin, ga lahko namestite z naslednjim ukazom, lahko uporabljate kateri koli drugi odjemalec MySQL, dokler lahko pravilno uvozite bazo podatkov.- sudo apt install phpmyadmin
Ko naredite vse zgoraj navedeno, moramo ustvariti uporabnika za našo bazo podatkov. Uporabite "sudo mysql -u root" za prijavo v strežnik MySQL, tukaj bomo ustvarili uporabnika z imenom db_admin z ustreznim geslom. to geslo je zabeleženo nekje pozneje v navodilih. DODAJ VSE PRIVILEGIJE NA *. * NA "db_admin"@"%" IDENTIFICIRANO "yourPasswordHERE" Z MOŽNOSTO DODELITVE;
Za izhod iz terminala MySQL uporabite ukaz "\ q".
Paketi Python: Preden nadaljujemo, moramo še namestiti nekaj paketov python, zaženite spodnji ukaz in se prepričajte, da je vse za brezhibno izkušnjo.
sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev
Poleg naslednjih paketov MySQL povežite pakete python, sudo apt, namestite python3 -mysql.connector -y
Če je vse v redu, lahko zdaj obiščete svoj Pi v spletnem brskalniku z naslednjim naslovom
3. korak: Nastavitev zaledja
Tukaj bom razložil, kako lahko sami nastavite zaledje, najprej prenesite datoteko rar od spodaj, jo odznačite v neki začasni imenik. Povežite se z RaspberryPi z FileZilla ali WinSCP z naslednjimi poverilnicami:
IP: 169.254.10.1 Uporabnik: piPassword: malina (če ste spremenili geslo, to storite tudi tukaj)
Nato lahko nadaljujete s prenosom datotek, ki ste jih odstranili, v kateri koli imenik v domačem imeniku uporabnika pi. Zaradi poenostavitve bomo v tej nastavitvi domnevali, da smo vse svoje datoteke naložili v imenik dokumentov.
Naj bo vaš program FTP odprt za naslednji korak!
Zdaj znova odprite ukazni poziv s svojo povezavo SSH, ker bomo morali narediti nekaj sprememb v spletnem strežniku, da bo lahko zunanja stran komunicirala z zaledjem. Odprli bomo privzeto konfiguracijsko datoteko Apache2 in jo nekoliko spremenili: sudo nano /etc/apache2/sites-available/000-default.conf
V konfiguracijsko datoteko, ki smo jo pravkar odprli, dodajte naslednje vrstice pod DocumentRoot: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/
Za primer si lahko ogledate priloženo sliko.
4. korak: Nastavitev Frontenda
Preden prenesemo datoteke, bomo morali nekaj narediti, preden lahko začnemo s prenosom datotek na sprednji strani. Odprite ukazni poziv s predhodno vzpostavljeno povezavo SSH in uporabite spodnji ukaz, da preklopite na korenskega uporabnika našega RaspberryPi: "sudo su -"
Po tem lahko spremenimo geslo našega korenskega uporabnika z naslednjim ukazom: "passwd" To vas bo prosilo, da vnesete novo geslo. Ko to storite, se lahko preklopite nazaj v svoj program FTP in se prijavite s svojimi korenskimi poverilnicami:
IP: 169.254.10.1 Uporabnik: rootPeslo:
Prenesite datoteko rar od spodaj in jo odznačite v začasni mapi. Te datoteke lahko premaknete v svoj RaspberryPi v naslednji imenik/var/www/html/, potem ko to storite, obiščite sprednjo stran na naslovu http:/ /169.254.10.1, še ne morete komunicirati, ker zaledni prostor še ne deluje. Kasneje vam bom v tem priročniku pokazal, kako to storiti.
5. korak: Uvoz baze podatkov za naš projekt
Odprite svoj najljubši program za upravljanje strežnika MySQL in se povežite z Raspberry Pi s poverilnicami, ki smo jih ustvarili v 2. koraku.
Prenesite izpis podatkovne zbirke od spodaj in ga uvozite, kot običajno, v delovno mizo MySQL pojdite na Datoteka> Odpri skript SQL in izberite izpis podatkovne zbirke, ki ste ga prenesli. Nato pritisnite CTRL + SHIFT + ENTER in zaženite skript SQL in strukturo za bazo podatkov je treba ustvariti.
Kot spodnji primer sem dodal poverilnice, ki sem jih uporabil za svoj RaspberryPi, ter nekaj slik strukture baze podatkov, lahko si jo ogledate in poskusite dobiti splošno predstavo o tem, kako vse deluje.
6. korak: Zagon našega projekta
Preden lahko začnemo naš projekt, moramo spremeniti poverilnice baze podatkov v datoteki config.py, če ste natančno upoštevali navodila, kot je navedeno v tem priročniku, jih najdete pod /home/pi/Documents/Backend/src/config.py tukaj morate spremeniti poverilnice spremenljivke db_config tako, da se ujemajo s tistimi, ki smo jih ustvarili prej za našo bazo podatkov. Spodaj sem dodal primer tega, kar boste videli v tej datoteki.
Potem bomo dodali datoteko. Za ustvarjanje storitvene datoteke uporabite naslednji ukaz: sudo nano /etc/systemd/system/dispenser.service S tem boste ustvarili servisno datoteko in kopirali prilepite spodnjo kodo v to datoteko.
[Enota] Opis = Razpršilnik vode Po = mysql.service
[Storitev] Vrsta = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py
[Namesti] WantedBy = cilj za več uporabnikov
Spremenite vrstico, kjer piše /home/pi/Documents/Backend/index.py, na mesto, kjer ste namestili svoje zaledne datoteke, če tega ne storite pravilno, se projekt ne bo pravilno zagnal! Spodaj bom dodal primer datoteke.
Ko to storite in zapustite urejevalnik besedil, lahko storitev omogočimo z naslednjimi ukazi:- sudo systemctl daemon-reload- sudo systemctl omogoči dozirnik- sudo systemctl zagon dozirnika
Kot dodatno možnost lahko zaženemo: razdeljevalnik stanja sudo systemctlTo bo prikazalo nekaj informacij o naši storitvi, če je aktivna ali ne, …
7. korak: Primer
Čestitamo, skoraj smo že prišli, dodal bom nekaj slik, ki bodo natančno prikazale dimenzije, ki sem jih uporabil za svoj projekt, uporabil sem MDF plošče debeline 18 mm, po želji lahko uporabite drugo debelino. Moje ohišje lahko uporabite kot vodilo za oblikovanje vašega ali pa ustvarite to, kar sem naredil. (Če uporabljate drugačno debelino MDF-ja, vam moje risbe ne bodo več dovolile, da bi oblikovali moj dizajn, ga prilagodite!) Plošče, ki sem jih naredil:- 2 plošči velikosti 32 cm x 42 cm (stranske plošče)- 1 plošča velikosti 24 cm 32 cm (spodnja plošča)- 2 plošči velikosti 16 x 24 cm (sprednja plošča, kjer LCD ostane in sosednja plošča)- 1 plošča 28 cm x 24 cm (srednja plošča gledano od spredaj)- 1 plošča 30 cm x 24 cm (zgornja plošča)
8. korak: Občudujte končni izdelek
Prišli ste do konca in do zdaj, upajmo, uspeli celotno stvar uresničiti. Če ste le mimoidoči, ki berete, prav tako dobrodošli, zahvaljujem se vam za branje do zadnjega koraka!
V ta projekt sem porabil veliko krvi, znoja in solz, zato bi bil hvaležen, če bi pustili komentar, vsakršna kritika glede njegovega izboljšanja je dobrodošla!
9. korak: Težave
Projekt bi postavil v trenutno stanje kot delujoč prototip, ki lahko vidi veliko več izboljšav.
Kodirana podlaga zaledja je strukturirana tako, da je mogoče popolnoma vzpostaviti odnos glavni podrejeni, kjer bi ena fontana delovala kot glavni vmesnik, vse druge fontane pa bi potiskale podatke in spremembe preko api REST glavnega. V kodi so tudi ostanki žetonskega sistema API, saj so ga nameravali uvesti, vendar so ga zaradi časovnih omejitev kasneje zmanjšali.
Svojo kodo sem naložil na svoj strežnik Gitlab in tam si lahko ogledate kodo kot celoto:
Priporočena:
Brezstični razpršilnik sladkarij za noč čarovnic: 6 korakov
Brezstični razpršilnik sladkarij za noč čarovnic: spet je tisti čas v letu, ko praznujemo noč čarovnic, a letos zaradi COVID-19 vse stave ne veljajo. Toda v duhu noči čarovnic ne smemo pozabiti na zabavo Trika ali Zdravljenja. Tako je ta objava ustvarjena tako, da družini omogoči, da
Plesni vodnjak: Arduino z analizatorjem spektra MSGEQ7: 8 korakov
Plesni vodnjak: Arduino z analizatorjem spektra MSGEQ7: Sprejem zvočnega signala in pretvorba v vizualno ali mehansko reakcijo je zelo zanimiv. V tem projektu bomo uporabili Arduino Mega za povezavo s spektralnim analizatorjem MSGEQ7, ki sprejema vhodni zvočni signal in izvaja pas
Brezstični detektor napetosti: 15 korakov (s slikami)
Brezstični detektor napetosti: 3 načini za izgradnjo lastnega brezkontaktnega detektorja napetosti za manj kot dolar Uvod ------------ Če z elektriko ne ravnamo pravilno, pride do električnih šokov z neprijetnimi izkušnjami; zato mora biti varnost pri delu na prvem mestu
Mood Light Bluetooth vodnjak: 5 korakov
Mood Light Bluetooth Water Fountain: Staro plastično škatlo in nekaj pokrovčkov steklenic bomo zlorabili v pametno vodnjak, ki naključno ali glede na naše razpoloženje spreminja barvo svetlobe glede na naše razpoloženje prek povezave Bluetooth. ..
Vodnjak: 5 korakov
Vodnjak: Pri tem navodilu gre za izdelavo vodnega fonatina z zelo malo materialov, večino jih je mogoče najti po hiši. Potrebovali boste: vodno črpalko, 9 -voltno baterijo, priključek za baterijo, folijo, lepenko, trak, lepila, škarje, nekakšno plastično posodo z