Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:09
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
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
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
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
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:
Nadzor Led -ove svetlosti z Raspberry Pi in spletno stranjo po meri: 5 korakov
Nadzor Led -ove svetlosti z Raspberry Pi in spletno stranjo po meri: S pomočjo strežnika apache na svojem pi s php -jem sem našel način za nadzor svetlosti LED -ja z drsnikom s prilagojeno spletno stranjo, ki je dostopna v kateri koli napravi, povezani v isto omrežje kot vaš pi .To lahko storite na veliko načinov
Vremenska postaja NaTaLia: Vremenska postaja Arduino s sončno energijo Na pravi poti: 8 korakov (s slikami)
Vremenska postaja NaTaLia: Vremenska postaja na sončni pogon Arduino je ravnala pravilno: Po enem letu uspešnega delovanja na dveh različnih lokacijah delim svoje načrte projektov vremenskih postaj na sončno energijo in razložim, kako se je razvila v sistem, ki lahko resnično preživi dolgo časa obdobja iz sončne energije. Če sledite
Vremenska postaja in senzorska postaja DIY: 7 korakov (s slikami)
Vremenska postaja in senzorska postaja DIY: V tem projektu vam bom pokazal, kako skupaj s senzorsko postajo WiFi ustvariti vremensko postajo. Senzorska postaja meri lokalne podatke o temperaturi in vlažnosti ter jih prek WiFi pošlje vremenski postaji. Vremenska postaja nato prikaže t
Vremenska postaja IoT z RPi in ESP8266: 10 korakov
Vremenska postaja IoT z RPi in ESP8266: V prejšnjih vadnicah smo se igrali z NodeMCU, senzorji in se učili, kako zajeti in zapisati podatke na platformi ThingSpeak (internet stvari) (IoT), ki omogoča zbiranje in shranjevanje podatkov senzorjev v oblaku in razvijati aplikacije IoT): IOT
Spletno povezana SMART LED animacijska ura s spletno nadzorno ploščo, sinhroniziran časovni strežnik: 11 korakov (s slikami)
Spletno povezana SMART LED animacijska ura S spletno nadzorno ploščo, sinhroniziranim časovnim strežnikom: Zgodba te ure sega daleč nazaj-več kot 30 let. Moj oče je to idejo uvedel, ko sem bil star komaj 10 let, veliko pred revolucijo LED - takrat, ko so LED svetile 1/1000 svetlosti njihovega trenutnega bleščečega sijaja. Resnično