Kazalo:

Brezstični vodnjak: 9 korakov (s slikami)
Brezstični vodnjak: 9 korakov (s slikami)

Video: Brezstični vodnjak: 9 korakov (s slikami)

Video: Brezstični vodnjak: 9 korakov (s slikami)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Brezstični vodnjak
Brezstični vodnjak

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

Sestavljanje vezja
Sestavljanje vezja
Sestavljanje vezja
Sestavljanje vezja
Sestavljanje vezja
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

Nastavitev zaledja
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

Uvoz baze podatkov za naš projekt
Uvoz baze podatkov za naš projekt
Uvoz baze podatkov za naš projekt
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

Začetek našega projekta
Začetek našega projekta
Začetek našega projekta
Začetek 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

Primer
Primer
Primer
Primer
Primer
Primer
Primer
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

Občudujte končni izdelek
Občudujte končni izdelek
Občudujte končni izdelek
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: