Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Za školski projekat morali smo napraviti IoT uređaj sa web lokacijom za vizualizaciju prikupljenih informacija na lijep način. Odlučio sam napraviti vremensku stanicu koju pokreće Raspberry Pi 3 sa Flaskom za responzivno web mjesto, MySQL (MariaDB) za moju bazu podataka i python skriptu za prikupljanje informacija sa svim mojim senzorima. Trebalo mi je oko 2 sedmice od početka do kraja do završetka.
Ohrabreni smo da napravimo uputstva da svoj napredak podijelimo sa ostatkom DIY zajednice, pa evo ga!
Korak 1: Izbor dijelova, alati i materijali
Prvo sam trebao shvatiti koji su senzori neophodni za meteorološku stanicu. Odlučio sam da želim izmjeriti sve sljedeće podatke:
- Temperature
- Zračni pritisak
- 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
- Malo trake
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 spisak prodavnica u kojima možete kupiti sve možete pronaći u PDF -u ispod:)
Korak 2: Povezivanje našeg hardvera
Naravno, morat ćemo 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, ovo 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 senzori SI1145 i BMP280 će se kontrolirati pomoću I2C protokola jer je s tim najlakše raditi i potrebno je manje žica.
Anemometar na shemi je ovdje 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
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 može potrajati, pa 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 povezivanja i omogućavanje oboje, I2C i SPI
Prvo morate napraviti direktorij u koji želite staviti svoj projekt (nazvat ćemo ga 'weatherstation'):
cd ~ mkdir meteorološka stanicacd 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-konektor-python bočica-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 napraviti 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 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
Moramo postaviti pozadinu za vremensku stanicu, koja uključuje:
- Baza podataka mariadb za spremanje očitanja senzora i nekih drugih sitnica- Usluga za čuvanje web stranica.- Još jedna 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 htjela sistem za prijavu jer sam (iako su svi podaci isti za sve korisnike) odlučila uključiti u svoju bazu podataka.
Možete nastaviti i klonirati kôd mog projekta iz Github -a u fasciklu vašeg projekta. Idite u svoju korisničku fasciklu i pokrenite: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/
Zatim idite do foldera conf na vremenskoj stanici i svih datoteka u mapi.
Promijenite sve pojave "USERNAME" u svoje korisničko ime
Također ćete morati kopirati obje.service datoteke u systemd i testirati ih na ovaj način:
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 weatherstation-*
Zatim moramo urediti nginx konfiguraciju.
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 ponovo 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 - localhost
Sve bi sada trebalo funkcionirati. Možete surfati do vaše IP adrese maline Pi koju smo postavili na početku i dočekati vas sa ekranom za prijavu.
Korak 5: Ograđivanje
Sada kada 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.
Ovi senzori su postavljeni unutar zasebnog kontejnera jer moraju biti na otvorenom (bez kiše), ali malina pi ne mora biti.
Kao što vidite, dodao sam silikon po rubovima kako bih 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čuje se:
Tweerstationneke A.k.a. Dutch WeatherStation: 4 koraka
Tweerstationneke A.k.a. Dutch WeatherStation: Moj tata je uvijek zainteresiran za najnovije vijesti i najnovije informacije o vremenu. To me je dovelo do savršenog rođendanskog poklona kada je napunio 76 godina: Mala stalna meteorološka stanica bez gluposti, koja samo mirno sjedi u kutu cijeli dan i daje
Wemos D1 Mini Weatherstation (Plug & Play): 4 koraka
Wemos D1 Mini Weatherstation (Plug & Play): Ovaj projekt govori o najjednostavnijoj mogućoj vremenskoj stanici zasnovanoj na WeMos D1 Mini. Odabrao sam WeMos D1 Mini jer ima prednosti: 1. možete programirati i pokrenuti bez povezivanja vanjskih modula, samo pomoću USB kabela. ne treba vam regulisanje napona
LED traka s Raspberry Pi upravljanom web lokacijom/WiFi -om: 9 koraka (sa slikama)
LED traka s web lokacijom/WiFi -om kontrolirana s Raspberry Pi: Pozadina: Ja sam tinejdžer, a zadnjih nekoliko godina dizajniram i programiram male projekte elektronike, zajedno sa učešćem na takmičenjima iz robotike. Nedavno sam radio na ažuriranju postavki svog stola i odlučio sam da to bude lijep dodatak
Ponovno koristite modul web kamere HP WebCam 101 Aka 679257-330 kao opću USB web kameru: 5 koraka
Ponovna upotreba modula web kamere HP WebCam 101 Aka 679257-330 kao općenita USB web kamera: Želim začiniti svoj 14-godišnji Panasonic CF-18 potpuno novom web kamerom, ali Panasonic više ne podržava tu čudesnu mašinu, pa moram upotrijebite sivu tvar za nešto lakše od b & b (piva i hamburgera). Ovo je prvi dio
IO vodič za Upravljački program web upravljačkog programa Korištenje web stranice uživo i primjeri rada: 8 koraka
IO vodič za IO web upravljačkog programa Korištenje web stranice uživo i primjeri rada: IO vodič za upravljački program web upravljača Korištenje web stranice uživo i primjeri rada Zadnje ažuriranje: 26.7.2015. (Često provjeravajte dok ažuriram ove upute s više detalja i primjera) Pozadina Nedavno sam imao zanimljiv izazov pred mene. Trebao sam