INHOUDSOPGAWE:

RPi Weatherstation met responsiewe webwerf: 5 stappe
RPi Weatherstation met responsiewe webwerf: 5 stappe

Video: RPi Weatherstation met responsiewe webwerf: 5 stappe

Video: RPi Weatherstation met responsiewe webwerf: 5 stappe
Video: Web Development - Computer Science for Business Leaders 2016 2024, September
Anonim
RPi Weatherstation met responsiewe webwerf
RPi Weatherstation met responsiewe webwerf
RPi Weatherstation met responsiewe webwerf
RPi Weatherstation met responsiewe webwerf

Vir 'n skoolprojek moes ons 'n IoT -toestel met 'n webwerf maak om die versamelde inligting op 'n mooi manier te visualiseer. en 'n python -script om inligting met al my sensors te versamel. Dit het my ongeveer 2 weke geneem van begin tot einde om te voltooi.

Ons is aangemoedig om 'n instruksie te maak om ons vordering met die res van die DIY -gemeenskap te deel, so hier is dit!

Stap 1: Deelkeuse, gereedskap en materiaal

Eers moes ek uitvind watter sensors nodig is vir 'n weerstasie, en ek het besluit om al die volgende data te meet:

  • Temperatuur
  • Lugdruk
  • Humiditeit
  • Wind spoed
  • UV -indeks

Hier is al die gereedskap, materiale en onderdele wat ek gebruik het

Dele:

  • DHT22/AM2302 vir temperatuur- en vogmetings. (15 EUR)
  • Adafruit BMP280 vir barometriese druk en temperatuur. (12 EUR)
  • Adafruit SI1145 vir die meting van die UV -indeks. (10 EUR)
  • Adafruit analoog windmeter voor die meting van windsnelheid (50 EUR)
  • 'N MCP3008 vir die omskakeling van analoog seine na digitaal.
  • Weerstand van 10 kOhm as optrek vir my AM2302.
  • 'N 9V -adapter om die windmeter aan te skakel
  • 'N 5V -adapter vir die Raspberry Pi
  • Raspberry Pi 3 (enige Pi behoort voldoende te wees)

Materiaal:

'N Plastiekhouer om alles op te berg en reënvry te maak

Gereedskap:

  • Soldeerbout en blik
  • Multimeter
  • Silikoon
  • 'N Paar band

In totaal kos alle sensors my ongeveer 85 euro, wat nogal steil is, maar ek wou regtig 'n behoorlike windsnelheidsmeter insluit, so ek dink dit is die moeite werd.

U kan 'n meer gedetailleerde lys vind met winkels waar u alles kan koop, in die onderstaande pdf:)

Stap 2: Koppel ons hardeware

Koppel ons hardeware
Koppel ons hardeware
Koppel ons hardeware
Koppel ons hardeware

Natuurlik moet ons ons sensors aan ons Raspberry Pi koppel. Hierbo kan u die skets sien wat u kan volg om alles behoorlik aan te sluit.

Op die skema kan u sien dat 'n 9V-battery as die kragbron vir ons windmeter gebruik word; dit word die beste gebruik om slegs te toets, aangesien dit nie te lank sal duur nie; u kan die 9V-battery vervang vir enige 7-12V-kragbron wat u kies.

Ons SI1145- en BMP280 -sensors word albei beheer met behulp van die I2C -protokol, aangesien dit die maklikste is om mee te werk en minder drade benodig.

Die windmeter op die skematika word hier as 'n LDR getoon, aangesien dit byna dieselfde bedrading as die windmeter het, en ek kon nie 'n regte anemometer vind om op my skets te sit nie:)

Stap 3: Verbind alles: die opstel van die Pi

Alles verbind: die opstel van die Pi
Alles verbind: die opstel van die Pi

In die eerste plek moet ons seker maak dat ons aan die internet gekoppel is.

Om dit in die terminale te doen, kan u na u wpa_supplicant -lêer gaan deur die volgende opdrag uit te voer: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

In die lêer kan u dit byvoeg:

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

}

U kan ook kies om u IP-adres in die toekoms op staties te stel vir makliker toegang. Hiervoor moet u na die lêer dhcpcd.conf gaan deur hierdie opdrag uit te voer: sudo nano /etc/dhcpcd.conf

Voeg dit by die lêer:

koppelvlak wlan0static ip_address = 192.168.0.100/24

Dan gaan ons seker maak dat die pakkette wat reeds op ons Pi geïnstalleer is, volledig opgedateer is:

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

Dit kan 'n rukkie neem, dus moenie bekommerd wees nie

U moet die I2C- en SPI -protokol binne raspi config aktiveer. U kan dit doen deur hierdie opdrag uit te voer:

sudo raspi-config

Gaan dan na koppelvlakopsies en aktiveer beide, I2C en SPI

Eerstens moet u 'n gids maak waarin u u projek wil plaas (ons noem dit 'weerstasie'):

cd ~ mkdir weerstasie cd weerstasie

Daarna het ons ons virtuele omgewing van python3 opgestel:

python3 -m pip install-upgrade pip setuptools wiel virtualenvpython3 -m venv-system-site-packages envsource env/bin/activatepython -m pip installeer mysql-connector-python Fleskolf-mysql mysql-connector-python passlib mysql-connector -python-rf

Dan moet ons 'n paar ander pakkette installeer wat nodig is om alles reg te laat funksioneer:

sudo apt installeer -y python3-venv python3-pip python3-mysqldb mariadb-bediener uwsgi nginx uwsgi-plugin-python3

Nou gaan ons ons databasis maak:

Ons moet nog steeds ons databasis opstel. U kan dit doen deur die kode/sql -lêer soos volg in die 'sql' -lêergids uit te voer:

sudo mariadb <sql/db_init.sql

Die sql -navraag sal die tabelle wat ons benodig, maak en ook 'n paar gebruikers maak om ons databasis 'n bietjie veiliger te maak.

Dit sal ook 'n paar voorbeeldgeskiedenisdata in ons databasis plaas om seker te maak dat ons webwerf alles behoorlik vertoon as daar nog geen werklike data is nie.

Om Adafruit_GPIO en MyPyDHT te installeer, moet u nog 'n paar dinge doen. Gaan eers terug na u gebruikergids en dan:

git -kloon https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py installeer

cd..git kloon -rekursiewe https://github.com/freedom27/MyPyDHTsudo python3 setup.py installeer

Stap 4: sagteware / kode

Sagteware / kode
Sagteware / kode
Sagteware / kode
Sagteware / kode
Sagteware / kode
Sagteware / kode

Ons moet die agterkant vir die weerstasie opstel, wat insluit:

- 'n mariadb-databasis vir die stoor van my sensorlesings en 'n paar ander klein dingetjies- 'n Kolfdiens vir die bestuur van die webwerf.- 'n Ander diens met die Python-lêer wat alle sensors uitlees. Hierbo kan u my baie eenvoudige databasisopstelling sien. onnodig, maar omdat ek 'n aanmeldstelsel wou hê omdat ek (alhoewel al die data dieselfde is vir alle gebruikers) het ek besluit om dit in my databasis in te sluit.

U kan die kode van my projek vanaf Github in u projektmap kloon. Gaan na u gebruikersmap en voer: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp/* weatherstation/

Navigeer dan na die conf -gids in die weerstasie en al die lêers in die gids.

Verander alle gevalle van 'USERNAME' na u gebruikersnaam

U moet ook al die.service -lêers na systemd kopieer en dit so toets:

sudo cp conf/weatherstation-*. service/etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl begin weatherstation-flask.servicesudo systemctl begin weatherstation-sensor.service

sudo systemctl status weerstasie-*

Ons moet dan die nginx config.

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

As alles goed gegaan het, moet u dit kan uitvoer en html in die terminale kan laat druk:

wget -qO - localhost

Alles behoort nou goed te werk. U kan na die IP-adres van u framboos Pi gaan, wat ons in die begin gestel het, en word begroet met 'n aanmeldskerm.

Stap 5: Die omhulsel

Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel
Die omhulsel

Noudat alles werk, moet ons die hele ding in iets plaas.

Ek het 'n eenvoudige plastiekboks met 'n deursigtige deksel gekies. Die windmeter word daarop gemonteer, en 'n tweede klein houer met die DHT22- en BMP280 -sensors.

Hierdie sensors word in 'n aparte houer gemonteer omdat hulle in die buitelug moet wees (sonder dat dit gereën word), maar die framboos -pi hoef nie te wees nie.

Soos u kan sien, het ek 'n bietjie silikoon aan die kante bygevoeg om dit waterdig te maak. Ek het ook 'n paar gate in die boonste houer geboor om vars lug daarin te kry.

Ek hoop jy het my gids geniet oor hoe om 'n weerstasie te bou; dit kan 'n bietjie rof wees, aangesien dit die eerste keer is dat ek so 'n gids skryf, maar ek hoop dat jy dit ook geniet het:)

Aanbeveel: