Kazalo:

Vremenska postaja RPi z odzivno spletno stranjo: 5 korakov
Vremenska postaja RPi z odzivno spletno stranjo: 5 korakov

Video: Vremenska postaja RPi z odzivno spletno stranjo: 5 korakov

Video: Vremenska postaja RPi z odzivno spletno stranjo: 5 korakov
Video: Веб-программирование – информатика для руководителей бизнеса 2016 2024, Julij
Anonim
Vremenska postaja RPi z odzivno spletno stranjo
Vremenska postaja RPi z odzivno spletno stranjo
Vremenska postaja RPi z odzivno spletno stranjo
Vremenska postaja RPi z odzivno spletno stranjo

Za šolski projekt smo morali izdelati napravo IoT s spletnim mestom za lepe vizualizacije zbranih informacij. Odločil sem se za vremensko postajo, ki jo poganja Raspberry Pi 3 s Flaskom za odzivno spletno mesto, MySQL (MariaDB) za mojo bazo podatkov in skript python za zbiranje podatkov z vsemi mojimi senzorji. Od začetka do konca do konca sem potreboval približno 2 tedna.

Spodbudili so nas, da naredimo navodila, da svoj napredek delimo s preostalo skupnostjo DIY, zato je tukaj!

1. korak: Izbira delov, orodja in materiali

Najprej sem moral ugotoviti, kakšni senzorji so bistveni za vremensko postajo. Odločil sem se, da želim izmeriti vse naslednje podatke:

  • Temperatura
  • Zračni tlak
  • Vlažnost
  • Hitrost vetra
  • UV indeks

Tu so vsa orodja, materiali in deli, ki sem jih uporabil

Deli:

  • DHT22/AM2302 za odčitavanje temperature in vlage. (15 EUR)
  • Adafruit BMP280 za barometrični tlak in temperaturo. (12 EUR)
  • Adafruit SI1145 za merjenje UV indeksa. (10 EUR)
  • Adafruit analogni anemometer za merjenje hitrosti vetra (50 EUR)
  • MCP3008 za pretvorbo analognih signalov v digitalne.
  • 10kOhm upor kot izvleček za moj AM2302.
  • 9V adapter za "napajanje" anemometra
  • 5V adapter za Raspberry Pi
  • Raspberry Pi 3 (kateri koli Pi bi moral zadostovati)

Materiali:

Plastična posoda za shranjevanje vsega in zaščito pred dežjem

Orodja:

  • Spajkalnik in kositer
  • Multimeter
  • Silikon
  • Nekaj traku

Skupaj so me torej vsi senzorji stali približno 85 evrov, kar je precej strmo, vendar sem res želel vključiti ustrezen števec hitrosti vetra, zato se mi zdi vredno.

Podrobnejši seznam trgovin, kjer lahko vse kupite, najdete v spodnjem pdf -ju:)

2. korak: Povežite našo strojno opremo

Povezovanje naše strojne opreme
Povezovanje naše strojne opreme
Povezovanje naše strojne opreme
Povezovanje naše strojne opreme

Seveda bomo morali naše senzorje priključiti na naš Raspberry Pi, zgoraj si lahko ogledate shemo fritovanja, ki ji lahko sledite, da vse pravilno povežete.

Na shemi lahko vidite, da se 9V baterija uporablja kot vir energije za naš anemometer. To je najbolje uporabiti samo za testiranje, saj ne bo trajalo predolgo, lahko zamenjate 9V baterijo za kateri koli vir napajanja 7-12V, ki ga uporabljate. izberite.

Naša senzorja SI1145 in BMP280 bosta nadzorovana s protokolom I2C, saj je s tem najlažje delati in potrebuje manj žic.

Anemometer na shemi je tukaj prikazan kot LDR, saj ima približno enako ožičenje kot anemometer in nisem mogel najti pravega anemometra, ki bi ga dal na svojo shemo fritovanja:)

3. korak: Povezovanje vsega: Nastavitev Pi

Povezovanje vsega: Nastavitev Pi
Povezovanje vsega: Nastavitev Pi

Najprej se moramo prepričati, da smo povezani z internetom.

Če želite to narediti, pojdite v datoteko wpa_supplicant z naslednjim ukazom: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

V datoteko lahko dodate to:

network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK

}

Izberete lahko tudi, da svoj IP-naslov nastavite na statičen za lažji dostop v prihodnosti. Če želite to narediti, pojdite v datoteko dhcpcd.conf tako, da zaženete ta ukaz: sudo nano /etc/dhcpcd.conf

Dodajte to v datoteko:

vmesnik wlan0static ip_address = 192.168.0.100/24

Nato se bomo prepričali, da so paketi, ki so že nameščeni na našem Pi, v celoti posodobljeni:

sudo apt-get update && sudo apt-get upgrade

To lahko traja nekaj časa, zato ne skrbite

V konfiguraciji raspi morate omogočiti protokol I2C in SPI. To lahko storite tako, da zaženete ta ukaz:

sudo raspi-config

Nato pojdite na možnosti vmesnika in omogočite oboje, I2C in SPI

Najprej morate narediti imenik, v katerega želite vnesti svoj projekt (poimenovali ga bomo 'vremenska postaja'):

cd ~ mkdir vremenska postajacd vremenska postaja

Nato smo nastavili naše virtualno okolje python3:

python3 -m pip install --upgrade pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env/bin/enablepython -m pip install mysql-connector-python flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Nato bomo morali namestiti nekaj drugih paketov, ki so potrebni za pravilno delovanje vsega:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Zdaj bomo ustvarili našo bazo podatkov:

Še vedno moramo vzpostaviti svojo bazo podatkov. To lahko storite tako, da datoteko code/sql, ki se nahaja v mapi 'sql', zaženete tako:

sudo mariadb <sql/db_init.sql

Poizvedba sql bo naredila tabele, ki jih potrebujemo, in tudi nekaj uporabnikov, da bo naša baza podatkov nekoliko bolj varna.

To bo v našo zbirko podatkov vneslo tudi nekaj vzorčnih podatkov o zgodovini, da bo naše spletno mesto pravilno prikazano, če še ni zbranih pravih podatkov.

Če želite namestiti Adafruit_GPIO in MyPyDHT, morate narediti še nekaj. Najprej se vrnite v mapo za uporabo in nato:

git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install

cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

4. korak: programska oprema / koda

Programska oprema / koda
Programska oprema / koda
Programska oprema / koda
Programska oprema / koda
Programska oprema / koda
Programska oprema / koda

Za vremensko postajo moramo postaviti ozadje, ki vključuje:

- Podatkovna zbirka mariadb za shranjevanje odčitkov mojih senzorjev in nekatere druge manjše stvari- storitev bučke za zagon spletnega mesta.- Druga storitev, ki izvaja datoteko Python, ki prebere vse senzorje. Zgoraj si lahko ogledate mojo zelo preprosto nastavitev baze podatkov. Tabela uporabnikov je nepotrebno, ker pa sem hotel sistem za prijavo, ker sem se (čeprav so vsi podatki enaki za vse uporabnike) odločil vključiti v svojo bazo podatkov.

Lahko greš naprej in kloniraš kodo mojega projekta iz Github -a v mapo projekta. Pojdi v svojo uporabniško mapo in zaženi: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Nato se pomaknite do mape conf na vremenski postaji in vseh datotek v mapi.

Vse pojavitve »USERNAME« spremenite v svoje uporabniško ime

Obe datoteki.service boste morali kopirati v systemd in jih preizkusiti tako:

sudo cp conf/weatherstation-*. service/etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service

sudo systemctl status vremenska postaja-*

Nato moramo urediti konfiguracijo nginx.

sudo cp conf/nginx/etc/nginx/sites-available/weatherstationsudo rm/etc/nginx/sites-enabled/defaultsudo ln -s/etc/nginx/sites-available/weatherstation/etc/nginx/sites-enabled/weatherstationsudo systemctl znova zaženite nginx.servicessudo systemctl status nginx.service

Če je bilo vse v redu, bi morali to zagnati in v terminalu natisniti nekaj HTML -ja:

wget -qO - localhost

Zdaj bi moralo vse delovati v redu. Lahko brskate po naslovu IP vašega malina Pi, ki smo ga nastavili na začetku, in vas pozdravi z zaslonom za prijavo.

5. korak: Ohišje

Ohišje
Ohišje
Ohišje
Ohišje
Ohišje
Ohišje

Zdaj, ko vse deluje, moramo vse skupaj dati v nekaj.

Izbral sem preprosto plastično škatlo s prozornim pokrovom, na njej pa je nameščen anemometer, sekundarna majhna posoda, ki vsebuje senzorje DHT22 in BMP280.

Ti senzorji so nameščeni v ločeni posodi, ker morajo biti na prostem (ne da bi deževalo), vendar maline pi ni treba.

Kot vidite, sem po robovih dodal nekaj silikona, da je vodoodporen, v zgornji posodi pa sem izvrtal tudi nekaj lukenj, da sem vanj dobil svež zrak.

Upam, da ste uživali v mojem vodniku o tem, kako zgraditi vremensko postajo, morda je malce grobo po robovih, saj prvič pišem takšen vodnik, vendar upam, da vam je bil kljub temu všeč:)

Priporočena: