Sadržaj:

RPi meteorološka stanica s responzivnom web stranicom: 5 koraka
RPi meteorološka stanica s responzivnom web stranicom: 5 koraka

Video: RPi meteorološka stanica s responzivnom web stranicom: 5 koraka

Video: RPi meteorološka stanica s responzivnom web stranicom: 5 koraka
Video: weather station uk 2024, Srpanj
Anonim
RPi Weatherstation s responzivnom web stranicom
RPi Weatherstation s responzivnom web stranicom
RPi Weatherstation s responzivnom web stranicom
RPi Weatherstation s responzivnom web stranicom

Za školski projekt morali smo izraditi IoT uređaj s web lokacijom za vizualizaciju prikupljenih informacija na lijep način. Odlučio sam napraviti vremensku stanicu koju pokreće Raspberry Pi 3 s Flaskom za responzivno web mjesto, MySQL (MariaDB) za moju bazu podataka i python skriptu za prikupljanje podataka sa svim mojim senzorima. Trebalo mi je oko 2 tjedna od početka do kraja do završetka.

Potaknuti smo da napravimo instrukcije za podijeliti svoj napredak s ostatkom DIY zajednice, pa evo ga!

Korak 1: Odabir dijelova, alati i materijali

Prvo sam trebao shvatiti koji su senzori bitni za meteorološku stanicu. Odlučio sam da želim izmjeriti sve sljedeće podatke:

  • Temperatura
  • Tlak zraka
  • Vlažnost
  • Brzina vjetra
  • UV indeks

Ovdje su svi alati, materijali i dijelovi koje sam koristio

Dijelovi:

  • DHT22/AM2302 za očitanje temperature i vlage. (15 EUR)
  • Adafruit BMP280 za barometarski tlak i temperaturu. (12 EUR)
  • Adafruit SI1145 za mjerenje UV indeksa. (10 EUR)
  • Adafruit analogni anemometar za mjerenje brzine vjetra (50 EUR)
  • MCP3008 za pretvaranje analognih signala u digitalni.
  • 10kOhm otpornik kao pull-up za moj AM2302.
  • 9V adapter za "napajanje" anemometra
  • 5V adapter za Raspberry Pi
  • Raspberry Pi 3 (bilo koji Pi bi trebao biti dovoljan)

Materijali:

Plastična posuda za spremanje svega i zaštitu od kiše

Alati:

  • Lemilica i kositar
  • Multimetar
  • Silikon
  • Neka traka

Tako da su me svi senzori koštali oko 85 eura, što je prilično strmo, ali zaista sam htio uključiti odgovarajući mjerač brzine vjetra pa mislim da se isplati.

Detaljniji popis trgovina u kojima možete kupiti sve možete pronaći u pdf -u ispod:)

Korak 2: Povezivanje našeg hardvera

Povezivanje našeg hardvera
Povezivanje našeg hardvera
Povezivanje našeg hardvera
Povezivanje našeg hardvera

Naravno da ćemo morati spojiti naše senzore na naš Raspberry Pi. Gore možete vidjeti shemu fritzinga koju možete slijediti kako biste sve pravilno povezali.

Na shemi možete vidjeti da se 9V baterija koristi kao izvor napajanja za naš anemometar, to je najbolje koristiti samo za testiranje jer neće trajati predugo, možete zamijeniti 9V bateriju za bilo koji izvor napajanja od 7-12V koji izabrati.

Naši će se senzori SI1145 i BMP280 kontrolirati pomoću I2C protokola jer je s tim najlakše raditi i potrebno je manje žica.

Anemometar na shemi ovdje je prikazan kao LDR budući da ima približno identično ožičenje kao anemometar i nisam mogao pronaći pravi anemometar koji bih stavio na svoju shemu frcanja:)

Korak 3: Povezivanje svega: Postavljanje Pi

Povezivanje svega: Postavljanje Pi
Povezivanje svega: Postavljanje Pi

Prije svega, moramo biti sigurni da smo povezani s internetom.

Da biste to učinili u terminalu, možete otići do datoteke wpa_supplicant pokretanjem sljedeće naredbe: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

U datoteku možete dodati ovo:

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

}

Također možete izabrati da postavite svoju IP adresu na statičku radi lakšeg pristupa u budućnosti. Da biste to učinili, morate otići do datoteke dhcpcd.conf pokretanjem ove naredbe: sudo nano /etc/dhcpcd.conf

Dodajte ovo u datoteku:

sučelje wlan0static ip_address = 192.168.0.100/24

Zatim ćemo se pobrinuti da se paketi koji su već instalirani na našem Pi potpuno ažuriraju:

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

Ovo bi moglo potrajati, stoga ne brinite

Morat ćete omogućiti protokol I2C i SPI unutar raspi konfiguracije. To možete učiniti pokretanjem ove naredbe:

sudo raspi-config

Zatim idite na opcije sučelja i omogućavanje oboje, I2C i SPI

Prvo morate napraviti direktorij u koji želite staviti svoj projekt (nazvat ćemo ga 'weatherstation'):

cd ~ mkdir weatherstationcd meteorološka stanica

Zatim smo postavili naše python3 virtualno okruženje:

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-konektor-python passlib mysql-konektor -python-rf

Zatim ćemo morati instalirati neke druge pakete koji su potrebni da bi sve ispravno funkcioniralo:

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

Sada ćemo napraviti našu bazu podataka:

Još uvijek moramo postaviti bazu podataka. To možete učiniti pokretanjem datoteke code/sql koja se nalazi u mapi 'sql' na sljedeći način:

sudo mariadb <sql/db_init.sql

SQL upit će učiniti tablice koje su nam potrebne, a također će učiniti i nekoliko korisnika kako bi našu bazu podataka učinili sigurnijom.

Ovo će također staviti neke uzorke povijesnih podataka u našu bazu podataka kako bi bili sigurni da naša web stranica prikazuje sve ispravno kada još nema prikupljenih pravih podataka.

Da biste instalirali Adafruit_GPIO i MyPyDHT, morat ćete učiniti još neke stvari. Prvo se vratite u mapu za upotrebu, a zatim:

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

Korak 4: Softver / kôd

Softver / kod
Softver / kod
Softver / kod
Softver / kod
Softver / kod
Softver / kod

Moramo postaviti pozadinu za vremensku stanicu, koja uključuje:

- Mariadb baza podataka za pohranu mojih očitanja senzora i neke druge sitnice- Usluga u tikvici za pokretanje web stranice.- Druga usluga koja pokreće Python datoteku koja čita sve senzore. Gore možete vidjeti moju vrlo jednostavnu postavku baze podataka. Tablica korisnika je nepotrebno, ali budući da sam htio sustav za prijavu jer sam (iako su svi podaci isti za sve korisnike) odlučio uključiti u svoju bazu podataka.

Možete kloniti kôd mog projekta iz Github -a u mapu projekta. Idite u svoju korisničku mapu i pokrenite: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Zatim idite do mape conf na vremenskoj stanici i svih datoteka u mapi.

Promijenite sva pojavljivanja "USERNAME" u svoje korisničko ime

Također ćete morati kopirati obje.service datoteke u systemd i testirati ih ovako:

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 meteorološka stanica-*

Zatim moramo urediti konfiguraciju nginxa.

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 ponovno pokrenite nginx.servicesudo systemctl status nginx.service

Ako je sve prošlo dobro, trebali biste moći pokrenuti ovo i ispisati html u terminalu:

wget -qO - lokalni domaćin

Sve bi sada trebalo funkcionirati. Možete surfati do IP adrese vašeg malina Pi koju smo postavili na početku i dočekati vas s zaslonom za prijavu.

Korak 5: Ograđivanje

Kućište
Kućište
Kućište
Kućište
Kućište
Kućište

Sad kad sve funkcionira, moramo cijelu stvar staviti u nešto.

Odabrao sam jednostavnu plastičnu kutiju s prozirnim poklopcem. Anemometar je postavljen na nju, a isto tako i sekundarni mali spremnik koji sadrži senzore DHT22 i BMP280.

Ti su senzori postavljeni unutar zasebnog spremnika jer moraju biti na otvorenom (bez kiše), ali pi pivo od maline ne mora biti.

Kao što vidite, dodao sam silikon oko rubova kako bi bio vodootporan. Također sam izbušio neke rupe u gornjoj posudi kako bih u nju ušao svježi zrak.

Nadam se da vam se svidio moj vodič o tome kako izgraditi vremensku stanicu, možda će biti malo grubo po rubovima jer prvi put pišem ovakav vodič, ali nadam se da vam se ipak svidio:)

Preporučeni: