Innehållsförteckning:

RPi Weatherstation med responsiv webbplats: 5 steg
RPi Weatherstation med responsiv webbplats: 5 steg

Video: RPi Weatherstation med responsiv webbplats: 5 steg

Video: RPi Weatherstation med responsiv webbplats: 5 steg
Video: Exactly What You DON'T Want To Happen! Bondi's Biggest Disasters 2024, November
Anonim
RPi Weatherstation med responsiv webbplats
RPi Weatherstation med responsiv webbplats
RPi Weatherstation med responsiv webbplats
RPi Weatherstation med responsiv webbplats

För ett skolprojekt var vi tvungna att skapa en IoT -enhet med en webbplats för att visualisera den insamlade informationen på ett trevligt sätt. och ett python -skript för att samla information med alla mina sensorer. Det tog mig ungefär 2 veckor från start till slut att slutföra.

Vi uppmuntrades att göra en instruerbar att dela våra framsteg med resten av DIY -gemenskapen, så här är det!

Steg 1: Delval, verktyg och material

Först behövde jag ta reda på vilken typ av sensorer som är väsentliga för en väderstation. Jag bestämde mig för att jag skulle mäta alla följande data:

  • Temperatur
  • Lufttryck
  • Fuktighet
  • Vindhastighet
  • UV-index

Här är alla verktyg, material och delar jag använde

Delar:

  • DHT22/AM2302 för temperatur- och fuktavläsningar. (15 EUR)
  • Adafruit BMP280 för barometertryck och temperatur. (12 EUR)
  • Adafruit SI1145 för mätning av UV -index. (10 EUR)
  • Adafruit Analog vindmätare för mätning av vindhastighet (50 EUR)
  • En MCP3008 för att konvertera analoga signaler till digitala.
  • 10kOhm motstånd som pull-up för min AM2302.
  • En 9V -adapter för att driva vindmätaren
  • En 5V -adapter för Raspberry Pi
  • Raspberry Pi 3 (Alla Pi borde räcka)

Material:

En plastbehållare för att förvara allt och göra det regntätt

Verktyg:

  • Lödkolv och tenn
  • Multimeter
  • Silikon
  • Lite tejp

Så totalt kostar alla sensorer mig cirka 85 euro, vilket är ganska brant men jag ville verkligen inkludera en ordentlig vindhastighetsmätare så jag tycker att det är väl värt det.

Du hittar en mer detaljerad lista med butiker där du kan köpa allt, i pdf -filen nedan:)

Steg 2: Anslut vår maskinvara

Ansluter vår hårdvara
Ansluter vår hårdvara
Ansluter vår hårdvara
Ansluter vår hårdvara

Naturligtvis kommer vi att behöva ansluta våra sensorer till vår Raspberry Pi. Ovan kan du se fritzing schemat som du kan följa för att ansluta allt ordentligt.

På schemat kan du se att ett 9V-batteri används som strömkälla för vår vindmätare. Detta används bäst för testning bara eftersom det inte kommer att vara för länge, du kan byta ut 9V-batteriet för alla 7-12V-strömkällor du välja.

Våra SI1145- och BMP280 -sensorer kommer båda att styras med hjälp av I2C -protokollet eftersom detta är det enklaste att arbeta med och behöver mindre ledningar.

Vindmätaren på schemat visas här som en LDR eftersom den har ganska identiska ledningar som vindmätaren och jag kunde inte hitta en riktig vindmätare att sätta på mitt fritzschema:)

Steg 3: Ansluta allt: Konfigurera Pi

Ansluta allt: Konfigurera Pi
Ansluta allt: Konfigurera Pi

Först och främst måste vi se till att vi är anslutna till internet.

För att göra detta i terminalen kan du gå till din wpa_supplicant -fil genom att köra följande kommando: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

I filen kan du lägga till detta:

nätverk = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK

}

Du kan också välja att ställa in din IP-adress till statisk för enklare åtkomst i framtiden. För att göra detta måste du gå till filen dhcpcd.conf genom att köra detta kommando: sudo nano /etc/dhcpcd.conf

Lägg till detta i filen:

gränssnitt wlan0static ip_address = 192.168.0.100/24

Då ska vi se till att paketen som redan är installerade på vår Pi är fullständigt uppdaterade:

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

Detta kan ta ett tag, så oroa dig inte

Du måste aktivera I2C- och SPI -protokollet inuti raspi config. Du kan detta genom att köra detta kommando:

sudo raspi-config

Gå sedan till gränssnittsalternativ och aktivera både I2C och SPI

Först måste du skapa en katalog som du vill lägga ditt projekt i (vi kommer att kalla det "väderstation"):

cd ~ mkdir väderstation cd väderstation

Sedan konfigurerade vi vårt virtuella miljö python3:

python3 -m pip installera-uppgradera pip setuptools hjul virtualenvpython3 -m venv-system-site-paket envsource env/bin/activatepython -m pip installera mysql-connector-python kolvkolv-mysql mysql-connector-python passlib mysql-connector -python-rf

Då måste vi installera några andra paket som behövs för att allt ska fungera korrekt:

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

Nu ska vi göra vår databas:

Vi behöver fortfarande konfigurera vår databas. Du kan göra detta genom att köra koden/sql -filen i mappen 'sql' så här:

sudo mariadb <sql/db_init.sql

SQL -frågan gör de tabeller vi behöver och gör också att några användare gör vår databas lite säkrare.

Detta kommer också att lägga några exempelhistorikdata i vår databas för att se till att vår webbplats visar allt korrekt när det inte finns någon verklig data ännu.

För att installera Adafruit_GPIO och MyPyDHT måste du göra några fler saker. Först gå tillbaka till din användarmapp och sedan:

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 installation

Steg 4: Programvara / kod

Programvara / kod
Programvara / kod
Programvara / kod
Programvara / kod
Programvara / kod
Programvara / kod

Vi måste konfigurera back-end för väderstationen, som inkluderar:

- En mariadb-databas för att lagra mina sensoravläsningar och några andra mindre saker.- En kolvtjänst för att köra webbplatsen.- En annan tjänst som kör Python-filen som läser upp alla sensorer. Ovan kan du se min mycket enkla databasinställning. Användartabellen är onödigt, men eftersom jag ville ha ett inloggningssystem eftersom jag (även om alla data är desamma för alla användare) bestämde jag mig för att inkludera i min databas.

Du kan fortsätta att klona mitt projekts kod från Github till din projektmapp. Gå till din användarmapp och kör: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Navigera sedan till conf -mappen i weatherstation och alla filer i mappen.

Ändra alla förekomster av 'USERNAME' till ditt användarnamn

Du måste också kopiera båda.service -filerna till systemd och testa dem så här:

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åste sedan redigera nginx -konfigurationen.

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 starta om nginx.servicesudo systemctl status nginx.service

Om någonting gick bra borde du kunna köra detta och få ut en html -utskrift i terminalen:

wget -qO - lokal värd

Allt borde fungera bra nu. Du kan surfa till din hallon Pi IP-adress som vi ställde in i början och hälsas välkommen med en inloggningsskärm.

Steg 5: Kapslingen

Kapslingen
Kapslingen
Kapslingen
Kapslingen
Kapslingen
Kapslingen

Nu när allt fungerar måste vi lägga in det hela i något.

Jag valde en enkel plastlåda med ett transparent lock. Vindmätaren är monterad ovanpå den, liksom en sekundär liten behållare som innehåller sensorerna DHT22 och BMP280.

Dessa sensorer är monterade inuti en separat behållare eftersom de måste vara utomhus (utan att regna på), men det behöver inte vara hallonpi.

Som ni ser lägger jag till lite silikon runt kanterna för att göra det vattentätt. Jag borrade också några hål i den övre behållaren för att få frisk luft i den.

Jag hoppas att du gillade min guide om hur man bygger en väderstation, det kan vara lite grovt runt kanterna eftersom det är första gången jag skriver en guide som denna, men jag hoppas att du gillade det ändå:)

Rekommenderad: