Innholdsfortegnelse:
- Trinn 1: Delvalg, verktøy og materialer
- Trinn 2: Koble til maskinvaren vår
- Trinn 3: Koble til alt: Sette opp Pi
- Trinn 4: Programvare / kode
- Trinn 5: Vedlegget
Video: RPi Weatherstation med responsivt nettsted: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
For et skoleprosjekt måtte vi lage en IoT -enhet med et nettsted for å visualisere innsamlet informasjon på en fin måte. og et python -skript for å samle informasjon med alle sensorene mine. Det tok meg omtrent 2 uker fra start til slutt å fullføre.
Vi ble oppfordret til å gjøre en instruks om å dele fremgangen vår med resten av DIY -fellesskapet, så her er det!
Trinn 1: Delvalg, verktøy og materialer
Først trengte jeg å finne ut hva slags sensorer som var viktige for en værstasjon. Jeg bestemte meg for at jeg ville måle alle følgende data:
- Temperatur
- Lufttrykk
- Luftfuktighet
- Vindfart
- UV -indeks
Her er alle verktøyene, materialene og delene jeg brukte
Deler:
- DHT22/AM2302 for temperatur- og fuktighetsavlesninger. (15 EUR)
- Adafruit BMP280 for barometrisk trykk og temperatur. (12 EUR)
- Adafruit SI1145 for måling av UV -indeks. (10 EUR)
- Adafruit Analog vindmåler for måling av vindhastighet (50 EUR)
- En MCP3008 for å konvertere analoge signaler til digitale.
- 10kOhm motstand som pull-up for min AM2302.
- En 9V adapter for å "drive" vindmåleren
- En 5V adapter for Raspberry Pi
- Raspberry Pi 3 (Enhver Pi burde være tilstrekkelig)
Materialer:
En plastbeholder for å lagre alt og gjøre det regntett
Verktøy:
- Loddejern og tinn
- Multimeter
- Silikon
- Noe tape
Så totalt kostet alle sensorer meg omtrent 85 euro, noe som er ganske bratt, men jeg ønsket virkelig å inkludere en skikkelig vindhastighetsmåler, så jeg tror det er verdt det.
Du finner en mer detaljert liste med butikker du kan kjøpe alt i, i pdf -filen nedenfor:)
Trinn 2: Koble til maskinvaren vår
Selvfølgelig må vi koble sensorene våre til Raspberry Pi. Over kan du se fritzingskjemaet du kan følge for å koble alt riktig.
På skjemaet kan du se at et 9V batteri brukes som strømkilde for vindmåleren vår. Dette brukes best best for testing bare siden det ikke varer for lenge. Du kan bytte ut 9V batteri for en hvilken som helst 7-12V strømkilde du velge.
Våre SI1145- og BMP280 -sensorer vil begge bli styrt ved hjelp av I2C -protokollen siden dette er det enkleste å jobbe med og trenger mindre ledninger.
Vindmåleren på skjematikken er vist som en LDR her siden den har ganske identiske ledninger som vindmåleren, og jeg kunne ikke finne et ekte vindmålere for å sette på min fritzingskjema:)
Trinn 3: Koble til alt: Sette opp Pi
Først av alt må vi sørge for at vi er koblet til internett.
For å gjøre dette i terminalen kan du gå til filen wpa_supplicant ved å kjøre følgende kommando: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
I filen kan du legge til dette:
network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK
}
Du kan også velge å sette IP-adressen din til statisk for lettere tilgang i fremtiden. For å gjøre dette må du gå til dhcpcd.conf-filen ved å kjøre denne kommandoen: sudo nano /etc/dhcpcd.conf
Legg til dette i filen:
grensesnitt wlan0static ip_address = 192.168.0.100/24
Deretter skal vi sørge for at pakkene som allerede er installert på Pi -en vår er fullt oppdatert:
sudo apt-get update && sudo apt-get upgrade
Dette kan ta litt tid, så ikke bekymre deg
Du må aktivere I2C- og SPI -protokollen inne i raspi config. Du kan dette ved å kjøre denne kommandoen:
sudo raspi-config
Deretter går du til grensesnittalternativer og aktiverer både I2C og SPI
Først må du lage en katalog du vil sette prosjektet i (vi vil kalle det 'værstasjon'):
cd ~ mkdir weatherstation cd weatherstation
Deretter konfigurerte vi vårt virtuelle python3 -miljø:
python3 -m pip install-oppgrader pip setuptools hjul virtualenvpython3 -m venv-system-site-pakker envsource env/bin/activatepython -m pip installer mysql-connector-python kolbe-mysql mysql-connector-python passlib mysql-kontakt -python-rf
Da må vi installere noen andre pakker som er nødvendige for at alt skal fungere riktig:
sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3
Nå skal vi lage vår database:
Vi trenger fortsatt å sette opp databasen din. Du kan gjøre dette ved å kjøre koden/sql -filen som ligger i 'sql' -mappen slik:
sudo mariadb <sql/db_init.sql
SQL -spørringen vil gjøre tabellene vi trenger og også gjøre noen få brukere til å gjøre databasen vår litt mer sikker.
Dette vil også sette noen eksempler på historikkdata i databasen vår for å sikre at nettstedet vårt viser alt riktig når det ikke er noen reelle data samlet ennå.
For å installere Adafruit_GPIO og MyPyDHT må du gjøre noen flere ting. Først går du tilbake til brukermappen og deretter:
git -klon https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py install
cd..git klon -rekursiv https://github.com/freedom27/MyPyDHTsudo python3 setup.py installasjon
Trinn 4: Programvare / kode
Vi må sette opp back-end for værstasjonen, som inkluderer:
- En mariadb-database for lagring av sensoravlesninger og noen andre mindre ting.- En kolbe-tjeneste for å kjøre nettstedet.- En annen tjeneste som kjører Python-filen som leser opp alle sensorer. Over kan du se mitt veldig enkle databaseoppsett. Brukerbordet er unødvendig, men siden jeg ønsket et påloggingssystem fordi jeg (selv om alle dataene er like for alle brukere) bestemte jeg meg for å inkludere det i databasen min.
Du kan fortsette og klone prosjektets kode fra Github til prosjektmappen din. Gå til brukermappen din og kjør: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/
Naviger deretter til conf -mappen i weatherstation og alle filene i mappen.
Endre alle forekomster av 'USERNAME' til brukernavnet ditt
Du må også kopiere begge.service -filene til systemd og teste dem slik:
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-*
Vi må deretter redigere nginx -konfigurasjonen.
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 start nginx.servicesudo systemctl status nginx.service på nytt
Hvis noe gikk bra, bør du kunne kjøre dette og få skrevet ut html i terminalen:
wget -qO - lokal vert
Alt burde fungere bra nå. Du kan surfe til din bringebær Pi-IP-adresse vi satte i begynnelsen og bli møtt med en påloggingsskjerm.
Trinn 5: Vedlegget
Nå som alt fungerer, må vi sette det hele i noe.
Jeg valgte en enkel plastboks med et gjennomsiktig lokk. Vindmåleren er montert på toppen av den, og det er en sekundær liten beholder som inneholder sensorene DHT22 og BMP280.
Disse sensorene er montert inne i en separat beholder fordi de må være i friluft (uten å bli regnet på), men bringebær -pi trenger ikke å være det.
Som du kan se, la jeg til silikon rundt kantene for å gjøre den vanntett. Jeg boret også noen hull i den øvre beholderen for å få frisk luft i den.
Jeg håper du likte guiden min om hvordan du bygger en værstasjon, det kan være litt grovt rundt kantene siden det er første gang jeg skriver en guide som denne, men jeg håper du likte den likevel:)
Anbefalt:
Hvordan lage et slank og enkelt nettsted med Bootstrap 4: 7 trinn
Hvordan lage et slank og enkelt nettsted med Bootstrap 4: Formålet med denne instruksen er å gi de som er kjent med programmering - HTML eller på annen måte - en enkel introduksjon til hvordan du lager en online portefølje med Bootstrap 4. Jeg vil lede deg gjennom det første oppsettet på nettstedet, hvordan lage noen
Hvordan lage et nettsted (en trinn-for-trinn-guide): 4 trinn
Hvordan lage et nettsted (en trinn-for-trinn-guide): I denne veiledningen vil jeg vise deg hvordan de fleste webutviklere bygger nettstedene sine og hvordan du kan unngå dyre nettstedbyggere som ofte er for begrenset til et større nettsted. hjelpe deg med å unngå noen feil som jeg gjorde da jeg begynte
Nettsted/WiFi -kontrollert LED -stripe med bringebær Pi: 9 trinn (med bilder)
Nettsted/WiFi -kontrollert LED -stripe med Raspberry Pi: Bakgrunn: Jeg er tenåring, og har designet og programmert små elektronikkprosjekter de siste årene, sammen med å ha deltatt i robotikkonkurranser. Jeg jobbet nylig med å oppdatere skrivebordoppsettet mitt, og jeg bestemte meg for at et fint tillegg
Innganger: Responsivt materiale: 12 trinn (med bilder)
Innganger: Responsivt materiale: Kapasitans er et objekts evne til å lagre en elektrisk ladning. I denne opplæringen vil vi designe og veve tekstilsensorer som reagerer på kroppens kapasitans og bruker den elektrisiteten til å fullføre en krets. I denne opplæringen lærer du ba
Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: 6 trinn (med bilder)
Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: Problemet: Spidering -verktøy tillater ikke AJAX -påloggingsautentisering. Denne instruksjonen viser deg hvordan du logger inn via et AJAX -skjema ved hjelp av Python og en modul som heter Mechanize. Edderkopper er webautomatiseringsprogrammer som blir stadig mer populære