Talaan ng mga Nilalaman:

RPi Weatherstation Na May tumutugong Website: 5 Hakbang
RPi Weatherstation Na May tumutugong Website: 5 Hakbang

Video: RPi Weatherstation Na May tumutugong Website: 5 Hakbang

Video: RPi Weatherstation Na May tumutugong Website: 5 Hakbang
Video: Take charge of your own Ambient weather data with Raspberry Pi, MQTT, and Home Assistant. 2024, Nobyembre
Anonim
RPi Weatherstation Na May tumutugong Website
RPi Weatherstation Na May tumutugong Website
RPi Weatherstation Na May tumutugong Website
RPi Weatherstation Na May tumutugong Website

Para sa isang proyekto sa paaralan kailangan naming gumawa ng isang aparato ng IoT na may isang website para sa pagpapakita ng nakalap na impormasyon sa isang magandang paraan. Pinili kong gumawa ng isang Weatherstation na pinalakas ng isang Raspberry Pi 3 na nagpapatakbo ng Flask para sa tumutugong website, MySQL (MariaDB) para sa aking database at isang python script para sa pangangalap ng impormasyon sa lahat ng aking mga sensor. Inabot ako ng halos 2 linggo mula simula hanggang matapos upang makumpleto.

Hinihimok kami na gumawa ng isang nagtuturo na ibahagi ang aming pag-unlad sa natitirang komunidad ng DIY, kaya narito na!

Hakbang 1: Seleksyon ng Bahagi, Mga Tool at Materyales

Una kailangan kong malaman kung anong uri ng mga sensor ang mahalaga sa isang istasyon ng panahon. Napagpasyahan kong nais kong masukat ang lahat ng mga sumusunod na data:

  • Temperatura
  • Presyon ng hangin
  • Humidity
  • Bilis ng hangin
  • UV index

Narito ang lahat ng ginamit ko na Mga Tool, Materyales at Bahagi

Mga Bahagi:

  • DHT22 / AM2302 para sa pagbabasa ng temperatura at kahalumigmigan. (15 EUR)
  • Adafruit BMP280 para sa Barometric Pressure at temperatura. (12 EUR)
  • Adafruit SI1145 para sa pagsukat ng UV Index. (10 EUR)
  • Adafruit Analog Anemometer para sa pagsukat ng lakas ng hangin (50 EUR)
  • Isang MCP3008 para sa pag-convert ng mga analog signal sa digital.
  • 10kOhm Resistor bilang pull-up para sa aking AM2302.
  • Isang 9V Adapter para sa 'powering' ng Anemometer
  • Isang 5V Adapter para sa Raspberry Pi
  • Raspberry Pi 3 (Anumang Pi ay dapat sapat)

Mga Materyales:

Isang lalagyan na plastik para sa pag-iimbak ng kahit ano at gawin itong patunay ng ulan

Mga tool:

  • Panghinang na Bakal at Tin
  • Multimeter
  • Silicone
  • Ilang tape

Kaya sa kabuuan ang lahat ng mga sensor ay nagkakahalaga sa akin ng halos 85 Euro, na medyo matarik ngunit talagang nais kong isama ang isang tamang meter ng lakas ng hangin kaya sa palagay ko sulit na sulit ito.

Maaari kang makahanap ng isang mas detalyadong listahan sa mga tindahan na maaari mong bilhin ang lahat, sa pdf sa ibaba:)

Hakbang 2: Pagkonekta sa aming Hardware

Kumokonekta sa aming Hardware
Kumokonekta sa aming Hardware
Kumokonekta sa aming Hardware
Kumokonekta sa aming Hardware

Siyempre kakailanganin nating ikonekta ang aming mga sensor sa aming Raspberry Pi. Sa itaas makikita mo ang fritzing skematis na maaari mong sundin upang ikonekta nang maayos ang lahat.

Sa eskematiko maaari mong makita ang isang 9V na baterya na ginagamit bilang mapagkukunan ng kuryente para sa aming anemometer, ito ay pinakamahusay na pinakamahusay na ginamit para sa pagsubok lamang dahil hindi ito magtatagal, maaari mong palitan ang baterya ng 9V para sa anumang pinagmulan ng kuryente na 7-12V sa iyo pumili ka

Ang aming mga sensor ng SI1145 at BMP280 ay parehong kontrolado gamit ang I2C protocol dahil ito ang pinakamadaling magtrabaho at nangangailangan ng mas kaunting mga wire.

Ang anemometer sa eskematiko ay ipinapakita bilang isang LDR dito dahil mayroon itong halos magkapareho na mga kable bilang anemometer at hindi ko makita ang isang tunay na anemometer upang mailagay sa aking fritzing skematic:)

Hakbang 3: Pagkonekta sa Everthing: Pag-set up ng Pi

Pagkonekta ng Everthing: Pag-set up ng Pi
Pagkonekta ng Everthing: Pag-set up ng Pi

Una sa lahat, dapat nating tiyakin na nakakonekta tayo sa internet.

Upang magawa ito sa terminal maaari kang pumunta sa iyong wpa_supplicant file sa pamamagitan ng pagpapatakbo ng sumusunod na utos: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Sa file maaari mo itong idagdag:

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

}

Maaari mo ring piliing itakda ang iyong IP-address sa static para sa madaling pag-access sa hinaharap. Upang gawin ito kailangan mong pumunta sa dhcpcd.conf file sa pamamagitan ng pagpapatakbo ng utos na ito: sudo nano /etc/dhcpcd.conf

Idagdag ito sa file:

interface wlan0static ip_address = 192.168.0.100 / 24

Pagkatapos ay titiyakin naming ang mga pakete na naka-install na sa aming Pi ay ganap na na-update:

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

Maaaring magtagal ito, kaya huwag magalala

Kakailanganin mong paganahin ang I2C at SPI protocol sa loob ng raspi config. Magagawa mo ito sa pamamagitan ng pagpapatakbo ng utos na ito:

sudo raspi-config

Pagkatapos ay pumunta sa mga pagpipilian sa interfacing, at pagpapagana ng pareho, I2C at SPI

Una kailangan mong gumawa ng isang direktoryo na nais mong ilagay ang iyong proyekto (papangalanan namin itong 'weatherstation'):

cd ~ mkdir weatherstationcd weatherstation

Pagkatapos ay nai-set up namin ang aming virtual na kapaligiran ng python3:

pag-install ng python3 -m pip - pag-upgrade ng pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env / bin / activatepython -m pip install MySQL-Connector-Python Flask Flask-MySQL MySQL-Connector-Python Passlib MySQL-Connector -python-rf

Pagkatapos kakailanganin naming mag-install ng ilang iba pang mga pakete na kinakailangan upang magamit nang maayos ang everthing:

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

Ngayon ay gagawin namin ang aming database:

Kailangan pa rin naming i-set up ang aming database. Magagawa mo ito sa pamamagitan ng pagpapatakbo ng code / sql file na matatagpuan sa folder na 'sql' tulad nito:

sudo mariadb <sql / db_init.sql

Gagawa ng query sa sql ang mga talahanayan na kailangan namin at gagawa rin ng ilang mga gumagamit upang gawing mas ligtas ang aming database.

Maglalagay din ito ng ilang sample na data ng kasaysayan sa aming database upang matiyak na ipinapakita nang maayos ng aming website ang lahat nang wala pang tunay na data na nakalap.

Upang mai-install ang Adafruit_GPIO at MyPyDHT kakailanganin mong gumawa ng maraming mga bagay. Una bumalik sa iyong folder ng paggamit at pagkatapos ay:

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

Hakbang 4: Software / Code

Software / Code
Software / Code
Software / Code
Software / Code
Software / Code
Software / Code

Kailangan naming i-set up ang back-end para sa weatherstation, na kinabibilangan ng:

- Isang database ng mariadb para sa pag-iimbak ng aking mga pagbabasa ng sensor at ilang iba pang mga menor de edad na bagay- Isang serbisyo sa flask para sa pagpapatakbo ng website. hindi kinakailangan, ngunit dahil gusto ko ng isang sistema ng pag-login dahil ako (kahit na ang lahat ng data ay pareho para sa lahat ng mga gumagamit) nagpasya akong isama sa aking database.

Maaari kang magpatuloy at i-clone ang code ng aking proyekto mula sa Github sa iyong folder ng proyekto. Pumunta sa iyong folder ng gumagamit at patakbuhin: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp / * Weatherstation /

Pagkatapos mag-navigate sa conf folder sa Weatherstation at lahat ng mga file sa folder.

Baguhin ang lahat ng mga paglitaw ng 'USERNAME' sa iyong username

Kakailanganin mo ring kopyahin ang pareho ng.service files sa systemd at subukan ang mga ito tulad nito:

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

sudo systemctl katayuan ng lagay ng panahon- *

Kailangan naming i-edit ang nginx config.

sudo cp conf / nginx / etc / nginx / sites-magagamit / weatherstationsudo rm / etc / nginx / mga site-pinagana / defaultsudo ln -s / etc / nginx / mga site-magagamit / Weatherstation / etc / nginx / mga site-pinagana / Weatherstationsudo systemctl restart nginx.servicesudo systemctl status nginx.service

Kung naging maayos ang anumang bagay dapat mo itong patakbuhin at makakuha ng ilang html na naka-print sa terminal:

wget -qO - localhost

Ang everthing ay dapat na gumana nang maayos ngayon. Maaari kang mag-surf sa IP-address ng iyong raspberry Pi na itinakda namin sa simula at binati ng isang login screen.

Hakbang 5: Ang Enclosure

Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure
Ang Enclosure

Ngayon na gumagana ang lahat, kailangan nating ilagay ang buong bagay sa isang bagay.

Pumili ako ng isang simpleng kahon ng plastik na may isang pantakip na talukap ng mata. Ang anemometer ay naka-mount sa ibabaw nito, at sa gayon ay isang pangalawang maliit na lalagyan na naglalaman ng mga sensor ng DHT22 at BMP280.

Ang mga sensor na ito ay naka-mount sa loob ng isang magkakahiwalay na lalagyan dahil kailangan nilang maging sa bukas na hangin (nang hindi maulan), ngunit ang raspberry pi ay hindi kailangang maging.

Tulad ng nakikita mong nagdagdag ako ng ilang silicone sa paligid ng mga gilid upang gawin itong hindi tinatagusan ng tubig. Nag-drill din ako ng ilang mga butas sa itaas na lalagyan upang makakuha ng sariwang hangin dito.

Inaasahan kong nasiyahan ka sa aking gabay sa kung paano bumuo ng isang panahon, maaari itong maging medyo magaspang sa paligid ng gilid dahil ito ang aking unang pagkakataon na magsulat ng isang gabay na tulad nito, ngunit inaasahan kong nagustuhan mo ito:)

Inirerekumendang: