RPi Weatherstation cu site web receptiv: 5 pași
RPi Weatherstation cu site web receptiv: 5 pași
Anonim
RPi Weatherstation cu site Web receptiv
RPi Weatherstation cu site Web receptiv
RPi Weatherstation cu site Web receptiv
RPi Weatherstation cu site Web receptiv

Pentru un proiect școlar, a trebuit să facem un dispozitiv IoT cu un site web pentru a vizualiza într-un mod frumos informațiile colectate. Am ales să fac o stație de vreme alimentată de un Raspberry Pi 3 care rulează Flask pentru site-ul responsive, MySQL (MariaDB) pentru baza mea de date și un script python pentru a aduna informații cu toți senzorii mei. Mi-a luat aproximativ 2 săptămâni de la început până la sfârșit până la finalizare.

Am fost încurajați să facem un instructiv pentru a împărtăși progresul nostru cu restul comunității DIY, așa că iată-l!

Pasul 1: Selectarea pieselor, instrumente și materiale

Mai întâi, trebuia să-mi dau seama ce fel de senzori erau esențiali pentru o stație meteo. Am decis că doresc să măsoar toate următoarele date:

  • Temperatura
  • Presiunea aerului
  • Umiditate
  • Viteza vântului
  • Indicele UV

Iată toate instrumentele, materialele și piesele pe care le-am folosit

Părți:

  • DHT22 / AM2302 pentru citiri de temperatură și umiditate. (15 EUR)
  • Adafruit BMP280 pentru presiune barometrică și temperatură. (12 EUR)
  • Adafruit SI1145 pentru măsurarea indicelui UV. (10 EUR)
  • Anemometru analog Adafruit pentru măsurarea vitezei vântului (50 EUR)
  • Un MCP3008 pentru conversia semnalelor analogice în digital.
  • 10kOhm Resistor ca pull-up pentru AM2302.
  • Un adaptor de 9V pentru „alimentarea” anemometrului
  • Un adaptor de 5V pentru Raspberry Pi
  • Raspberry Pi 3 (Orice Pi ar trebui să fie suficient)

Materiale:

Un recipient din plastic pentru a depozita orice și pentru a-l face rezistent la ploaie

Instrumente:

  • Fier de lipit și tablă
  • Multimetru
  • Silicon
  • Niște bandă

Deci, în total, toți senzorii m-au costat aproximativ 85 de euro, ceea ce este destul de abrupt, dar am vrut cu adevărat să includ un contor de viteză adecvat, așa că cred că merită.

Puteți găsi o listă mai detaliată cu magazine la care puteți cumpăra totul, în pdf-ul de mai jos:)

Pasul 2: Conectarea hardware-ului nostru

Conectarea hardware-ului nostru
Conectarea hardware-ului nostru
Conectarea hardware-ului nostru
Conectarea hardware-ului nostru

Desigur, va trebui să ne conectăm senzorii la Raspberry Pi. Mai sus puteți vedea schema fritzing pe care o puteți urma pentru a conecta totul corect.

Pe schemă puteți vedea că o baterie de 9V este utilizată ca sursă de alimentare pentru anemometrul nostru, acesta este cel mai bine utilizat pentru testare doar deoarece nu va dura prea mult, puteți înlocui bateria de 9V pentru orice sursă de alimentare de 7-12V pe care o aveți alege.

Senzorii noștri SI1145 și BMP280 vor fi controlați ambele folosind protocolul I2C, deoarece acesta este cel mai ușor de utilizat și are nevoie de mai puține fire.

Anemometrul de pe schemă este prezentat ca un LDR aici, deoarece are cabluri aproape identice cu anemometrul și nu am putut găsi un anemometru real pe care să-l pun pe schema mea fritzing:)

Pasul 3: Conectarea Everthing: Configurarea Pi

Conectarea la orice: Configurarea dispozitivului Pi
Conectarea la orice: Configurarea dispozitivului Pi

În primul rând, trebuie să ne asigurăm că suntem conectați la internet.

Pentru a face acest lucru în terminal, puteți accesa fișierul wpa_supplicant executând următoarea comandă: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

În fișier puteți adăuga acest lucru:

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

}

De asemenea, puteți alege să setați adresa IP la statică pentru un acces mai ușor în viitor. Pentru a face acest lucru, trebuie să accesați fișierul dhcpcd.conf executând această comandă: sudo nano /etc/dhcpcd.conf

Adăugați acest lucru în fișier:

interfață wlan0static ip_address = 192.168.0.100 / 24

Apoi, ne vom asigura că pachetele care sunt deja instalate pe Pi sunt complet actualizate:

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

Acest lucru ar putea dura ceva timp, așa că nu vă faceți griji

Va trebui să activați protocolul I2C și SPI în interiorul raspi config. Puteți face acest lucru executând această comandă:

sudo raspi-config

Apoi accesați opțiunile de interfață și activați ambele, I2C și SPI

Mai întâi trebuie să creați un director în care doriți să puneți proiectul (îl vom denumi „weatherstation”):

cd ~ mkdir weatherstationcd weatherstation

Apoi ne-am configurat mediul virtual python3:

python3 -m instalare pip - actualizare configurare pip instrumente roată virtualenvpython3 -m venv --sistem-site-pachete envsource env / bin / activatepython -m instalare pip mysql-conector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf

Apoi, va trebui să instalăm alte pachete care sunt necesare pentru ca funcționarea corectă a tuturor lucrurilor:

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

Acum vom crea baza noastră de date:

Totuși, trebuie să ne configurăm baza de date. Totuși, puteți face acest lucru executând fișierul cod / sql situat în folderul „sql” astfel:

sudo mariadb <sql / db_init.sql

Interogarea sql va face tabelele de care avem nevoie și, de asemenea, va face câțiva utilizatori să facă baza noastră de date puțin mai sigură.

Acest lucru va introduce, de asemenea, câteva exemple de date istorice în baza noastră de date pentru a ne asigura că site-ul nostru web afișează totul în mod corespunzător atunci când nu există date reale colectate încă.

Pentru a instala Adafruit_GPIO și MyPyDHT va trebui să mai faceți câteva lucruri. Mai întâi reveniți la folderul de utilizare și apoi:

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

Pasul 4: Software / Cod

Software / Cod
Software / Cod
Software / Cod
Software / Cod
Software / Cod
Software / Cod

Trebuie să configurăm back-end-ul pentru vreme, care include:

- O bază de date mariadb pentru stocarea citirilor senzorilor mei și alte lucruri minore - Un serviciu balon pentru rularea site-ului web - Un alt serviciu care rulează fișierul Python care citește toți senzorii. Mai sus puteți vedea configurarea mea foarte simplă a bazei de date. nu este necesar, dar din moment ce am dorit un sistem de conectare pentru că eu (chiar dacă toate datele sunt aceleași pentru toți utilizatorii) am decis să includ în baza mea de date.

Puteți continua și clona codul proiectului meu de la Github în folderul proiectului dvs. Accesați folderul dvs. de utilizator și rulați: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp / * weatherstation /

Apoi navigați la folderul conf din weatherstation și toate fișierele din folder.

Schimbați toate aparițiile „USERNAME” cu numele dvs. de utilizator

De asemenea, va trebui să copiați ambele fișiere.service în systemd și să le testați astfel:

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- *

Apoi, trebuie să edităm configurația nginx.

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 reporniți nginx.servicesudo systemctl status nginx.service

Dacă totul a mers bine, ar trebui să puteți executa acest lucru și să primiți câteva html tipărite în terminal:

wget -qO - localhost

Totul ar trebui să funcționeze bine acum. Puteți naviga la adresa IP a raspberry Pi pe care am stabilit-o la început și puteți fi întâmpinați cu un ecran de conectare.

Pasul 5: incinta

Incinta
Incinta
Incinta
Incinta
Incinta
Incinta

Acum, că totul funcționează, trebuie să punem totul în ceva.

Am ales o cutie simplă de plastic cu un capac transparent. Anemometrul este montat deasupra, la fel și un container mic secundar care conține senzori DHT22 și BMP280.

Acești senzori sunt montați într-un recipient separat, deoarece trebuie să fie în aer liber (fără a fi plouat), dar pi zmeură nu trebuie să fie.

După cum puteți vedea, am adăugat niște silicon în jurul marginilor pentru a-l face impermeabil și am forat niște găuri în recipientul superior pentru a obține aer proaspăt în el.

Sper că ți-a plăcut ghidul meu despre cum să construiești o stație de vreme, ar putea fi puțin dur în jurul marginilor, deoarece este prima dată când scriu un ghid ca acesta, dar sper că ți-a plăcut totuși:)

Recomandat: