Malinový koláč

Zostavte si svoju vlastnú meteorologickú stanicu Raspberry Pi

Zostavte si svoju vlastnú meteorologickú stanicu Raspberry Pi
Raspberry Pi Sense Hat je doplnková doska, ktorú je možné použiť s jednodeskovými počítačmi Raspberry Pi. Klobúk Raspberry Pi Sense má LED displej 8 × 8 a 5-tlačidlový joystick a je vybavený nasledujúcimi senzormi:

  1. Gyroskop
  2. Akcelerometer
  3. Magnetometer
  4. Teplota
  5. Barometrický tlak
  6. Vlhkosť

V tomto článku vám ukážem, ako vytvoriť webovú aplikáciu meteorologickej stanice založenej na rozhraní Python API pomocou teplota, barometrický tlak, a vlhkosť senzory klobúka Raspberry Pi Sense Hat. Ak chcete pokračovať v tomto článku, budete potrebovať toto:

  1. Raspberry Pi 3 alebo Raspberry Pi 4 so sieťovým pripojením.
  2. Modul Raspberry Pi Sense Hat.
  3. Napájací adaptér micro-USB (Raspberry Pi 3) alebo USB Type-C (Raspberry Pi 4).
  4. 16 GB alebo 32 GB karta microSD s operačným systémom Raspberry Pi.
  5. Notebook alebo stolný počítač s prístupom na vzdialenú plochu VNC alebo SSH na Raspberry Pi.

POZNÁMKA: V tomto článku sa k Raspberry Pi pripojíme vzdialene cez VNC alebo SSH pomocou bezhlavého nastavenia Raspberry Pi. Ak nechcete mať k svojmu Raspberry Pi vzdialený prístup cez SSH alebo VNC, budete musieť k svojmu Raspberry Pi pripojiť monitor, klávesnicu a myš.

Ak sa chcete dozvedieť, ako flashovať obraz Raspberry Pi OS na kartu microSD, prečítajte si časť Ako nainštalovať a používať kameru Raspberry Pi. Ak potrebujete pomoc s inštaláciou operačného systému Raspberry Pi na vašom Raspberry Pi, prečítajte si Ako nainštalovať Raspberry Pi OS na Raspberry Pi 4. Ak potrebujete pomoc s bezhlavým nastavením Raspberry Pi, pozrite si Ako nainštalovať a nakonfigurovať operačný systém Raspberry Pi na Raspberry Pi 4 bez externého monitora.

Pripojenie Raspberry Pi Sense Hat k Raspberry Pi

Sada Raspberry Pi Sense Hat sa dodáva s prídavnou doskou Raspberry Pi Sense Hat, 40-pólovou hlavičkou typu male-to-female a niekoľkými skrutkami a rozperami.

Pred pripojením dosky Sense Hat k Raspberry Pi musíte k Sense Hat pripojiť 40-pólovú hlavičku. Pripojte zástrčky 40-pinového konektora zástrčky-samice k klobúku Sense Hat, ako je to znázornené na obrázkoch nižšie.

Jednodeskové počítače Raspberry Pi majú 4 otvory, pomocou ktorých je možné pripevniť prídavné dosky alebo puzdro. Ak chcete pripevniť prídavnú dosku, zasuňte skrutky zo zadnej strany Raspberry Pi, ako je to znázornené na obrázkoch nižšie.

Potom pripojte k skrutke rozperu.

Po pridaní všetkých štyroch skrutiek a rozperiek by mal váš Raspberry Pi vyzerať tak, ako je to znázornené na obrázku nižšie.

Pripojte čiapku Raspberry Pi Sense Hat k 40-kolíkovej zástrčke GPIO Male na Raspberry Pi, ako je znázornené na obrázkoch nižšie.

POZNÁMKA: Pri odpájaní Raspberry Pi Sense Hat od 40-pinovej GPIO hlavičky Raspberry Pi buďte opatrní, aby ste zabránili ohnutiu pinov Raspberry Pi GPIO.

Pomocou štyroch zvyšných skrutiek pripevnite čiapku Raspberry Pi Sense, ako je znázornené na obrázkoch nižšie.

Napájanie na Raspberry Pi

Teraz, keď je Raspberry Pi Sense Hat pripojený k Raspberry Pi, vložte kartu microSD s Raspberry Pi OS do slotu pre kartu microSD na Raspberry Pi, pripojte napájací kábel k Raspberry Pi a zapnite ju.

Inštalácia knižnice Python Hat Raspberry Pi Sense Hat

Ak chcete použiť Raspberry Pi Sense Hat na Raspberry Pi, použite zmyselný klobúk V operačnom systéme Raspberry Pi musí byť nainštalovaná knižnica Python. The zmyselný klobúk knižnica je k dispozícii v oficiálnom úložisku balíkov systému Raspberry Pi OS.

Inštalácia Raspberry Pi zmyselný klobúk Knižnica Python v operačnom systéme Raspberry Pi najskôr aktualizujte vyrovnávaciu pamäť úložiska balíkov APT nasledujúcim príkazom:

$ sudo apt aktualizácia

Potom spustite nasledujúci príkaz:

$ sudo apt nainštalovať sense-hat -y

Inštalácia banky Flask Micro Web Framework Python Library

Na vytvorenie našej aplikácie o počasí použijeme rámec Flask Python. Flask môžete nainštalovať z oficiálneho úložiska balíkov systému Raspberry Pi OS pomocou nasledujúceho príkazu:

$ sudo apt nainštalovať python3-flask -y

Vytvorenie adresára projektu

Je dobré vytvoriť adresár projektu na usporiadanie súborov projektu. Vytvorenie adresára projektu ~ / práca, použite nasledujúci príkaz:

$ mkdir ~ / práca

Po vytvorení adresára projektu prejdite do adresára projektu takto:

$ cd ~ / práca

Testovanie klobúka Sense Raspberry Pi

Aby sme vyskúšali, či klobúk Raspberry Pi Sense funguje, môžeme napísať jednoduchý testovací skript v jazyku Python. Môžete vytvoriť nový skript v jazyku Python s názvom test.py s nano textový editor nasledovne:

$ nano test.py

Zadajte nasledujúci kód do test.py spis. 1. riadok importy SenseHat z sense_hat modul, riadok 3 vytvorí a SenseHat objekt a uloží referenciu do zmysel premenná a riadky 5-6 nastavujú farbu všetkých LED diód 8 × 8 na červenú. Po dokončení stlačte + X nasledovaný Y a .

Môžete spustiť test.py Skript v jazyku Python s nasledujúcim príkazom:

$ python3 test.py

Matica LED 8 × 8 by mala svietiť červenou farbou, ako je to znázornené na obrázku nižšie.

Ak chcete vypnúť LED diódy Sense Hat, stlačte jasný() metóda bez akejkoľvek farebnej hodnoty v test.py Skript v jazyku Python, ako je znázornené na snímke obrazovky nižšie, a spustite program test.py Skript v jazyku Python znova.

LED diódy Sense Hat by teraz mali byť vypnuté, ako je to znázornené na obrázku nižšie.

Ak Sense Hat pracuje správne, prejdite na ďalšiu časť.

Získavanie údajov o počasí zo servera Sense Hat

Údaje senzora zo Sense Hat môžete ľahko získať pomocou zmyselný klobúk Knižnica Python. Ak chcete načítať údaje senzorov zo Sense Hat, môžete vytvoriť nový skript v jazyku Python read_sensor_data.py nasledovne:

$ nano read_sensor_data.py

Zadajte nasledujúci kód do read_sensor_data.py Súbor Python.

z importu sense_hat SenseHat
od času import spánku
sense = SenseHat ()
zmysel.jasný()
zatiaľ čo je pravda:
tempC = zmysel.get_temperature ()
tempF = tempC * (9/5) + 32
tlak = zmysel.get_pressure ()
vlhkosť = zmysel.get_humidity ()
print ("Teplota:%.2f ° C /%.2f ° F \ n "% (teplota, teplota))
tlač („Tlak:%.2f mb \ n "% (tlak))
print ("Vlhkosť:%.2f %% \ n \ n "% (vlhkosť))
spánok (5)

Po dokončení stlačte + X nasledovaný Y a .

V kóde vyššie riadky 1 a 2 importujú všetky požadované knižnice, riadok 4 vytvorí a SenseHat objekt a linka 5 vypne všetky LED diódy Sense Hat pomocou jasný() metóda. Cyklus while v riadku 7 je nekonečná slučka, ktorá spustí kód v riadkoch 8 - 16 navždy.

V riadku 8 sa zobrazí get_temperature () metóda sa používa na načítanie údajov o teplote (v stupňoch Celzia) zo snímača vlhkosti prístroja Sense Hat. V riadku 9 sa údaje o teplote prevádzajú zo stupňov Celzia na stupne Fahrenheita. V riadku 10 sa get_pressure () metóda sa používa na načítanie údajov o tlaku vzduchu (v milibaroch) z tlakového snímača klobúku Sense Hat. V riadku 11 sa get_humidity () metóda sa používa na načítanie údajov o vlhkosti (v%) zo snímača vlhkosti prístroja Sense Hat.

Riadky 13-15 sa používajú na tlač údajov zo senzora do konzoly a riadok 16 sa používa na čakanie 5 sekúnd pred opätovným načítaním údajov zo senzora.

Môžete spustiť read_sensor_data.py Skript v jazyku Python takto:

$ python3 read_sensor_data.py

Po spustení skriptu sa údaje senzora vytlačia na konzolu.

Teraz, keď môžeme načítať údaje senzora zo Sense Hat, stlačte + C na zastavenie programu.

Vytvorenie webovej aplikácie Weather Station

V tejto časti si ukážeme, ako používať webový rámec Python Flask na vytvorenie API pre počasie a aplikácie pre počasie. Aplikácia Počasie bude mať prístup k API údajov o počasí a bude zobrazovať údaje o počasí v reálnom čase. Celý kód popísaný v tejto časti je k dispozícii na GitHub v aplikácii shovon8 / raspberry-pi-sense-hat-weather-app.

Najskôr vytvorte a server.py Skript Python v adresári projektu nasledovne:

$ nano server.py

Zadajte nasledujúci kód do server.py Súbor Python.

z banky na dovoz baniek
z baňkového importu jsonify
z flaskového importu render_template
z baňkového importu url_for
z importu sense_hat SenseHat
aplikácia = banka (__ meno__)
aplikácia.config ['SEND_FILE_MAX_AGE_DEFAULT'] = 0
sense = SenseHat ()
zmysel.jasný()
s aplik.test_request_context ():
url_for ('static', filename = 'štýl.css ')
url_for ('static', filename = 'aplikácia.js ')
@app.trasa („/ api“)
def api ():
tempC = zmysel.get_temperature ()
tempF = tempC * (9/5) + 32
tlak = zmysel.get_pressure ()
tlak Psi = tlak * 0.0145038
tlak P = tlak * 100
vlhkosť = zmysel.get_humidity ()
vrátiť jsonify (
"temperature": "C": tempC, "F": tempF,
"tlak": "mb": tlak, "hPa": tlak,
"psi": tlakPsi, "P": tlakP,
„vlhkosť“: vlhkosť
)
@app.trasa („/“)
def home ():
vrátiť render_template ('./Domov.html ')

Potom stlačte + X nasledovaný Y a zachrániť server.py Skript v jazyku Python.

V kóde vyššie riadky 1-5 importujú všetky požadované knižnice, riadok 7 vytvorí aplikáciu Flask, riadok 11 vytvorí objekt SenseHat a riadok 12 vypne všetky LED diódy Sense Hat. Riadok 8 zakazuje webové ukladanie do vyrovnávacej pamäte pre aplikáciu Flask. Pretože je táto aplikácia ľahká, nie je potrebné ukladanie do pamäte cache. Ak chcete aplikáciu upraviť, deaktivácia ukladania do medzipamäte webu uľahčí testovanie.

Riadky 18-31 načítajú údaje snímača zo Sense Hat a vrátia údaje API vo formáte JSON na požiadavku HTTP GET v / api koncový bod webového servera. Riadky 37-39 vrátia domovskú stránku webovej aplikácie o počasí na serveri / koncový bod webového servera. Domovská stránka je vykreslená z Domov.html súboru, ktorý by mal byť v šablóny / adresár adresára projektu.

Riadky 14-16 sa používajú na umožnenie prístupu k štýl.css a aplikácia.js statické súbory. Tieto súbory by mali byť v priečinku statický / adresár adresára projektu. The štýl.css súbor sa používa na štýl súboru Domov.html domovskú stránku a aplikácia.js súbor sa používa na vyžiadanie údajov API z / api koncový bod a aktualizovať údaje o počasí na serveri Domov.html stránku každých 5 sekúnd.

Vytvorte statický / a šablóny / adresár v adresári projektu takto:

$ mkdir -v static, templates

Vytvor Domov.html súbor v šablóny / adresár takto:

$ nano šablóny / domov.html

Zadajte nasledujúci kód do Domov.html spis.





Meteorologická stanica Raspberry Pi
href = "url_for ('static', filename =" štýl.css ")" />



Meteorologická stanica Raspberry Pi



Teplota












Tlak




















Vlhkosť











Potom stlačte + X nasledovaný Y a zachrániť Domov.html spis.

Vytvor štýl.css súbor v statický / adresár takto:

$ nano statický / štýl.css

Do poľa zadajte nasledujúce kódy štýl.css spis.

@import url ('https: // fonty.googleapis.com / css2?rodina = Roboto & display = swap ');
*
výplň: 0;
okraj: 0;
rodina fontov: 'Roboto', sans-serif;

telo
pozadie: # 737373;

h1
displej: blok;
farba: # 79DC7B;
zarovnanie textu: na stred;
váha písma: 400;
pozadie: # 000;
výplň: 0.5em 0;

h2
displej: blok;
pozadie: # 000;
farba: #fff;
zarovnanie textu: na stred;
váha písma: 400;
veľkosť písma: 1em;

.data-content
okraj: 10px;
okraj: 2px čierna čierna;
polomer ohraničenia: 5px;
farba pozadia: # 79DC7B;

.riadok údajov
displej: flex;
smer ohybu: riadok;

.dátová bunka
šírka: 100%;
výška: 80px;
displej: flex;
align-items: center;
justify-content: center;
váha písma: tučné;
veľkosť písma: 1.5em;
farba: # 006902;

.data-cell: hover
pozadie: # FFE891;
farba: # AA8600;
kurzor: ukazovateľ;

Potom stlačte + X nasledovaný Y a zachrániť štýl.css spis.

Vytvorte aplikácia.js súbor v statický / adresár takto:

$ nano static / aplikácia.js

Zadajte nasledujúci kód do aplikácia.js spis.

okno.addEventListener ('load', main);
funkcia main ()
funkcia getAPIData ()
var http = nový XMLHttpRequest ();
http.onreadystatechange = function ()
Ak toto.readyState === 4 && toto.stav === 200)
aktualizácia (JSON.analyzovať (toto.responseText));


http.otvorené ("GET", "/ api", true);
http.poslať ();

aktualizácia funkcie (apiData)
var tempC = dokument.getElementById ("tempC");
var tempF = dokument.getElementById ("tempF");
var pressureMb = dokument.getElementById ("pressureMb");
var pressurePsi = dokument.getElementById ("pressurePsi");
var pressureHpa = dokument.getElementById ("tlakHpa");
var pressureP = dokument.getElementById ("tlakP");
var vlhkosť = dokument.getElementById ("vlhkosť");
tepl.innerHTML = parseFloat (apiData.teplota.C).toFixed (2) + "° C";
tempF.innerHTML = parseFloat (apiData.teplota.F).toFixed (2) + "° F";
tlakMb.innerHTML = parseFloat (apiData.tlak.mb).toFixed (2) + "mb";
tlak Psi.innerHTML = parseFloat (apiData.tlak.psi).toFixed (2) + "psi";
tlakHpa.innerHTML = parseFloat (apiData.tlak.hPa).toFixed (2) + "hPa";
tlak P.innerHTML = parseFloat (apiData.tlak.P).toFixed (2) + "P";
vlhkosť.innerHTML = parseFloat (apiData.vlhkosť).toFixed (2) + "%";

funkčná aplikácia ()
okno.setInterval (funkcia ()
getAPIData ();
, 5 000);

app ();

Potom stlačte + X nasledovaný Y a zachrániť aplikácia.js spis.

Tu riadok 1 vedie hlavný() funkcia po dokončení načítania webovej stránky. V hlavný() funkcia, getAPIData () Funkcia načíta údaje o počasí API pomocou AJAX a zavolá aktualizácia () funkcia (v riadku 10) po úspešnom načítaní údajov. The aktualizácia () funkcia aktualizuje prvok webovej stránky pomocou údajov API.

V riadku 20 sa dokument.getElementById () metóda sa používa na získanie odkazu na prvok webovej stránky s id tepl. Riadok 28 slúži na nahradenie obsahu prvku webovej stránky, ktorý má ID tepl s teplotou (v stupňoch Celzia) z API. Rovnakým spôsobom sa obsah všetkých webových prvkov (riadky 21 - 26) nahradí ich príslušnými údajmi API.

V aplikácia () funkcia, getAPIData () sa volá každých 5 sekúnd (5 000 milisekúnd), aby boli údaje o počasí v aplikácii Počasie stále aktuálne. Nakoniec v riadku 46 aplikácia () funkcia je vykonaná.

Ak chcete webovú aplikáciu otestovať, zadajte nasledujúci príkaz:

$ FLASK_APP = server.py baňka beží --host = 0.0.0.0

Aplikácia pre počasie by mala bežať na porte 5000 (predvolene).

Ak chcete otestovať, či Weather API funguje, spustite nasledujúci príkaz:

$ zvlnenie -s http: // localhost: 5000 / api | json_pp

Ako vidíte, dáta Weather API sa tlačia na konzolu. Preto API funguje.

Ak chcete otestovať aplikáciu Počasie, navštívte webový prehliadač Chromium na adrese http: // localhost: 5000. Aplikácia Počasie by sa mala načítať do webového prehliadača, najskôr by sa však nemali zobrazovať žiadne údaje o počasí.

Po niekoľkých sekundách by mala aplikácia pre počasie dokončiť načítanie údajov o počasí z API a zobraziť ich.

Kedykoľvek môžete stlačiť + C zastaviť webový server.

Vytvára sa služba Systemd pre webovú aplikáciu Počasie

V tejto časti si ukážeme, ako vytvoriť súbor služby systemd pre aplikáciu počasia tak, aby sa automaticky spustila po zavedení.

Najskôr vytvorte a meteorologická stanica.služby súbor v adresári projektu takto:

$ nano meteorologická stanica.služby

Zadajte nasledujúce riadky kódu do meteorologická stanica.služby spis.

[Jednotka]
Popis = Webová aplikácia pre meteorologickú stanicu Raspberry Pi pomocou čiapky Raspberry Pi Sense Hat
Po = sieť.cieľ
[Služba]
WorkingDirectory = / home / pi / work
Prostredie = FLASK_APP = server.py
Prostredie = FLASK_ENV = výroba
ExecStart = / usr / bin / spustenie banky --host = 0.0.0.0
StandardOutput = dediť
StandardError = inherit
Reštart = vždy
Užívateľ = pi
[Inštalácia]
WantedBy = viac používateľov.cieľ

Potom stlačte + X nasledovaný Y a zachrániť meteorologická stanica.služby spis.

Skopírujte meteorologická stanica.služby súbor do / etc / systemd / system / adresár s nasledujúcim príkazom:

$ sudo cp -v meteorologická stanica.služba / etc / systemd / system /

Znovu načítajte systemd démonov, aby sa zmeny prejavili nasledovne:

$ sudo systemctl daemon-reload

The meteorologická stanica služba systemd by mala byť momentálne neaktívna, ako je znázornené na snímke obrazovky nižšie.

$ sudo systemctl status meteorologická stanica.služby

Spustite meteorologická stanica služba s nasledujúcim príkazom:

$ sudo systemctl štart meteorologickej stanice.služby

Ako vidíte, meteorologická stanica služba je teraz spustená.

$ sudo systemctl status meteorologická stanica.služby

Teraz, keď meteorologická stanica služba funguje, môžete ju pridať do spustenia systému Raspberry Pi OS pomocou nasledujúceho príkazu:

$ sudo systemctl povoliť meteorologickú stanicu.služby

Reštartujte Raspberry Pi pomocou nasledujúceho príkazu:

$ sudo reštart

Akonáhle sa vaše Raspberry Pi naštartuje, meteorologická stanica služba by mala byť spustená, ako je znázornené na snímke obrazovky nižšie.

$ sudo systemctl status meteorologická stanica.služby

Prístup k aplikácii Počasie z iných zariadení

Ak chcete získať prístup k aplikácii Počasie z iných zariadení vo vašej domácej sieti, musíte poznať adresu IP vášho Raspberry Pi. IP adresu vášho Raspberry Pi 4 nájdete z webového rozhrania pre správu domáceho smerovača. V našom prípade je adresa IP 192.168.0.103, ale táto adresa bude pre vás iná, takže vo všetkých nasledujúcich krokoch nezabudnite nahradiť túto adresu vašou.

Ak máte prístup ku konzole Raspberry Pi, môžete spustiť nasledujúci príkaz a tiež vyhľadať adresu IP.

$ hostname -I

Keď poznáte adresu IP vášho Raspberry Pi, môžete k nej získať prístup z ľubovoľného zariadenia v domácej sieti. Ako je znázornené na snímke obrazovky nižšie, k aplikácii pre počasie sme sa dostali zo smartfónu s Androidom.

Záver

V tomto článku sme si ukázali, ako používať čiapku Raspberry Pi Sense Hat na stavbu meteorologickej stanice Raspberry Pi. Použili sme zmyselný klobúk Knižnica Python na extrahovanie údajov o počasí z klobúka Raspberry Pi Sense Hat. Potom sme pomocou mikro webového rámca Flask Python vytvorili počasie API a webovú aplikáciu. Webová aplikácia získava údaje o počasí z API počasia každých 5 sekúnd, aby bola webová aplikácia aktualizovaná pomocou najnovších údajov o počasí.

Hry Vulkan pre používateľov systému Linux
Vulkan pre používateľov systému Linux
S každou novou generáciou grafických kariet vidíme, že vývojári hier posúvajú hranice grafickej vernosti a prichádzajú o krok bližšie k fotorealizmu. ...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvorenie vlastnej simulácie dopravy môže byť zábavné, relaxačné a mimoriadne lákavé. Preto sa musíte uistiť, že vyskúšate čo najviac hier, aby ste n...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z najpopulárnejších obchodných simulačných hier. V tejto hre musíte vytvoriť úžasné dopravné podnikanie. Začnete však na začiatku ok...