Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
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
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
Î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
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
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:
Cum să faci un site web de bază folosind Notepad: 4 pași
Cum să faci un site web de bază folosind Notepad: S-a întrebat cineva „cum fac un site web dintr-un program de scriere de bază?” „Ei bine, evident, nu în mod specific … Oricum, aici îți voi arăta cum să faci un element de bază site-ul web folosind doar blocnotes
Cum să obțineți un site web gratuit (TLD, găzduire, SSL): 16 pași
Cum să obțineți un site web gratuit (TLD, găzduire, SSL): site-urile web devin un lucru important. Înainte, companiile mari, precum Microsoft, Google și așa mai departe, își aveau site-urile web. Poate că au făcut și unii bloggeri și companii mai mici. Dar acum, mai ales în timpul acestei pandemii COVID-19 (da, scriu asta în 2020)
Trageți și afișați în mod ambiant date de pe orice site web prin Wifi (indicator de lumină nordică) cu NodeMcu: 6 pași
Trageți și afișați în mod ambiant date de pe orice site web prin Wifi (indicatorul de lumină nordică) cu NodeMcu: Motivația mea: Am văzut MULTE instrumente despre configurarea / utilizarea unui NodeMCU (construit pe modulul ESP8266) pentru realizarea proiectelor IoT (internet of things) . Cu toate acestea, foarte puține dintre aceste tutoriale aveau toate detaliile / codul / diagramele pentru o persoană foarte începătoare
Web Driver IO Tutorial Utilizarea unui site Web live și exemple de lucru: 8 pași
Web Driver IO Tutorial Utilizarea unui site Web live și exemple de lucru: Web Driver IO Tutorial Utilizarea unui site Web live și exemple de lucru Ultima actualizare: 26.07.2015 (Verificați din nou, deoarece actualizez aceste instructabile cu mai multe detalii și exemple) Context Am avut recent o provocare interesantă care mi-a fost prezentată. Aveam nevoie să
Intrări: Material receptiv: 12 pași (cu imagini)
Intrări: Material receptiv: Capacitatea este capacitatea unui obiect de a stoca o încărcare electrică. În acest tutorial vom proiecta și țese senzori textile care răspund capacității corpului nostru și vom folosi acea energie electrică pentru a finaliza un circuit. În acest tutorial veți învăța