Vaarika Pi

Ehitage oma Raspberry Pi ilmajaam

Ehitage oma Raspberry Pi ilmajaam
Raspberry Pi Sense Hat on lisaplaat, mida saab kasutada Raspberry Pi üheplaadiliste arvutitega. Raspberry Pi Sense Hatil on 8 × 8 LED-ekraan ja 5-nupuline juhtnupp ning see on varustatud järgmiste anduritega:

  1. Güroskoop
  2. Kiirendusmõõtur
  3. Magnetomeeter
  4. Temperatuur
  5. Õhurõhk
  6. Niiskus

Selles artiklis näitan teile, kuidas luua Pythoni API-põhise ilmajaama veebirakendus, kasutades temperatuur, õhurõhk, ja niiskus Raspberry Pi Sense Hat'i andurid. Selle artikli järgimiseks vajate järgmist:

  1. Võrguühendusega Raspberry Pi 3 või Raspberry Pi 4.
  2. Raspberry Pi Sense Hat moodul.
  3. Mikro-USB (Raspberry Pi 3) või USB Type-C (Raspberry Pi 4) toiteadapter.
  4. Raspberry Pi OS-iga 16 GB või 32 GB microSD-kaart.
  5. Sülearvuti või lauaarvuti VNC kaugtöölaua juurdepääsuks või SSH-juurdepääsuks Raspberry Pi-le.

MÄRGE: Selles artiklis ühendame Raspberry Pi-ga kaugühenduse VNC või SSH kaudu, kasutades Raspberry Pi peata seadistust. Kui te ei soovi oma Raspberry Pi-le kaugjuurdepääsu SSH või VNC kaudu, peate oma Raspberry Pi-ga ühendama monitori, klaviatuuri ja hiire.

Raspberry Pi OS-i pildi microSD-kaardile välgutamise kohta leiate teavet Raspberry Pi Imageri installimise ja kasutamise kohta. Kui vajate abi Raspberry Pi OS-i installimisel oma Raspberry Pi-le, lugege artiklit Raspberry Pi OS installimine Raspberry Pi 4-le. Kui vajate abi Raspberry Pi peata seadistamisel, vaadake jaotist Raspberry Pi OS installimine ja konfigureerimine Raspberry Pi 4-le ilma välise monitorita.

Raspberry Pi Sense Hat ühendamine Raspberry Pi-ga

Raspberry Pi Sense Hat'i komplektiga on kaasas Raspberry Pi Sense Hat lisandmoodul, 40-kontaktiline mees-naine päis ning mõned kruvid ja vahetükid.

Enne kui saate Sense Hat plaadi Raspberry Pi külge kinnitada, peate ühendama 40-kontaktilise päise Sense Hatiga. Ühendage 40-kontaktilise isase-naise päise isased tihvtid Sense Hatiga, nagu on näidatud allpool toodud piltidel.

Raspberry Pi üheplaadiga arvutitel on 4 auku, mida saab kasutada lisaplaatide või korpuse kinnitamiseks. Lisaplaadi kinnitamiseks sisestage Raspberry Pi tagaküljelt kruvid, nagu on näidatud allpool toodud piltidel.

Seejärel ühendage kruviga vahetükk.

Kui olete lisanud kõik neli kruvi ja vahetükki, peaks teie Raspberry Pi välja nägema selline, nagu on näidatud alloleval pildil.

Ühendage Raspberry Pi Sense Hat Raspberry Pi 40-kontaktilise GPIO meessoost päisega, nagu on näidatud allolevatel piltidel.

MÄRGE: Olge Raspberry Pi Sense müts Raspberry Pi 40-pin GPIO päisest lahti ühendades ettevaatlik, et vältida Raspberry Pi GPIO tihvtide painutamist.

Nelja ülejäänud kruviga kinnitage Raspberry Pi Sense müts, nagu on näidatud allolevatel piltidel.

Raspberry Pi toide

Nüüd, kui Raspberry Pi Sense Hat on ühendatud Raspberry Pi-ga, sisestage Raspberry Pi OS-iga microSD-kaart Raspberry Pi microSD-kaardi pesasse, ühendage toitekaabel Raspberry Pi-ga ja lülitage see sisse.

Raspberry Pi Sense Hat Pythoni teegi installimine

Raspberry Pi Sense Hat'i kasutamiseks Raspberry Pi peal, meelemüts Raspberry Pi OS-ile peab olema installitud Pythoni teek. The meelemüts raamatukogu on saadaval Raspberry Pi OS ametlikus paketihoidlas.

Raspberry Pi installimiseks meelemüts Raspberry Pi OS-i Pythoni kogu värskendage esmalt APT-paketi hoidla vahemälu järgmise käsuga:

$ sudo apt värskendus

Seejärel käivitage järgmine käsk:

$ sudo apt install sense-hat -y

Flask Micro Web Framework Pythoni teegi installimine

Oma ilmarakenduse loomiseks kasutame raamistikku Flask Python. Flaski saate installida Raspberry Pi OS ametlikust paketihoidlast järgmise käsuga:

$ sudo apt installi python3-flask -y

Projektikataloogi loomine

Projektifailide korrastamiseks on hea luua projekti kataloog. Projektikataloogi loomiseks ~ / töö, kasutage järgmist käsku:

$ mkdir ~ / töö

Kui projekti kataloog on loodud, navigeerige projekti kataloogi järgmiselt:

$ cd ~ / töö

Raspberry Pi Sense Hat'i katsetamine

Selleks, et kontrollida, kas Raspberry Pi Sense Hat töötab, võime kirjutada lihtsa Pythoni skripti. Saate luua uue Pythoni skripti nimega test.py koos nano tekstiredaktor järgmiselt:

$ nano test.py

Sisestage lahtrisse järgmine kood test.py faili. 1. rida impordib SenseHat alates sense_hat moodul, 3. rida loob a SenseHat objekt ja salvestab viite kausta meel muutuv ja jooned 5-6 määravad kõigi 8 × 8 LED-de värvi punaseks. Kui olete lõpetanud, vajutage + X järgneb Y ja .

Võite käivitada test.py Pythoni skript järgmise käsuga:

$ python3 test.py

8 × 8 LED-maatriks peaks helendama punase värviga, nagu on näidatud alloleval pildil.

Sense Hat'i valgusdioodide väljalülitamiseks käivitage selge () meetod ilma värviväärtuseta test.py Pythoni skript, nagu on näidatud alloleval ekraanipildil, ja käivitage test.py Taas Pythoni skript.

Sense Hat'i valgusdioodid tuleks nüüd välja lülitada, nagu on näidatud alloleval pildil.

Kui Sense Hat töötab korralikult, siis liikuge järgmisele jaotisele.

Ilmateabe hankimine Sense Hatilt

Sensori andmeid saate Sense Hatilt väga hõlpsalt hankida, kasutades meelemüts Pythoni teek. Sensoriandmete hankimiseks Sense Hatist saate luua uue Pythoni skripti loe_anduri_andmed.py järgnevalt:

$ nano loe_anduri_andmed.py

Sisestage lahtrisse järgmine kood loe_anduri_andmed.py Pythoni fail.

saidilt sense_hat importige SenseHat
ajast impordi uni
mõttes = SenseHat ()
meel.selge ()
tõsi:
tempC = meel.get_temperature ()
tempF = tempC * (9/5) + 32
rõhk = meel.saada_surve ()
niiskus = meel.get_humidity ()
print ("Temperatuur:%.2f ° C /%.2f ° F \ n "% (tempC, tempF))
print ("Rõhk:%.2f mb \ n "% (rõhk))
print ("Niiskus:%.2f %% \ n \ n "% (niiskus))
magama (5)

Kui olete lõpetanud, vajutage + X järgneb Y ja .

Ülaltoodud koodist importivad read 1 ja 2 kõik vajalikud teegid, rida 4 loob a SenseHat objekt ja rida 5 lülitab Sense Hat'i kõik LED-id välja, kasutades selge () meetod. Ajas olev silmus 7. real on lõpmatu silmus, mis käivitab koodi ridadel 8-16 igavesti.

8. real on get_temperature () meetodit kasutatakse temperatuuriandmete (Celsiuse kraadides) lugemiseks Sense Mütsi niiskusandurilt. Reas 9 teisendatakse temperatuuriandmed Celsiuse kraadist Fahrenheiti kraadiks. 10. reas on saada_surve () meetodit kasutatakse Sense Hat'i rõhuanduri õhurõhuandmete (millibaarides) lugemiseks. 11. reas on get_humidity () meetodit kasutatakse Sense Hat'i niiskuse anduri niiskuse andmete (%) lugemiseks.

Ridasid 13-15 kasutatakse anduriandmete konsooli printimiseks ja rida 16 kasutatakse 5 sekundi ootamiseks, enne kui anduriandmed uuesti loetakse.

Võite käivitada loe_anduri_andmed.py Pythoni skript järgmiselt:

$ python3 loe_anduri_andmed.py

Kui skript on käivitatud, prinditakse andurite andmed konsooli.

Nüüd, kui saame Sense Hatilt sensori andmeid lugeda, vajutage + C programmi peatamiseks.

Ilmajaama veebirakenduse loomine

Selles jaotises näitame teile, kuidas Python Flaski veebiraamistikku kasutada ilma API ja ilmarakenduse loomiseks. Ilmarakendus pääseb ligi ilmaandmete API-le ja näitab ilmaandmeid reaalajas. Kõik selles jaotises käsitletud kood on saadaval GitHubis aadressil shovon8 / vaarikas-pi-sense-hat-weather-app.

Kõigepealt looge a server.py Pythoni skript projekti kataloogis järgmiselt:

$ nano server.py

Sisestage lahtrisse järgmine kood server.py Pythoni fail.

kolbi importimiskolb
kolbist import jsonify
kolbist import render_template
kolbist impordi URL
saidilt sense_hat importige SenseHat
rakendus = Kolb (__ nimi__)
rakendus.config ['SEND_FILE_MAX_AGE_DEFAULT'] = 0
mõttes = SenseHat ()
meel.selge ()
rakendusega.test_request_context ():
url_for ('staatiline', failinimi = 'stiil.css ')
url_for ('staatiline', failinimi = 'rakendus.js ')
@app.marsruut ('/ api')
def api ():
tempC = meel.get_temperature ()
tempF = tempC * (9/5) + 32
rõhk = meel.saada_surve ()
rõhkPsi = rõhk * 0.0145038
rõhk P = rõhk * 100
niiskus = meel.get_humidity ()
tagastage jsonify (
"temperatuur": "C": tempC, "F": tempF,
"rõhk": "mb": rõhk, "hPa": rõhk,
"psi": rõhkPsi, "P": rõhkP,
"niiskus": niiskus
)
@app.tee('/')
def home ():
tagastage render_template ('./Kodu.HTML ')

Seejärel vajutage + X järgneb Y ja salvestada server.py Pythoni skript.

Ülalolevas koodis impordivad read 1–5 kõik vajalikud teegid, rida 7 loob rakenduse Flask, rida 11 loob objekti SenseHat ja rida 12 lülitab välja kõik Sense Hat'i valgusdioodid. Rida 8 keelab rakenduse Flask veebi vahemällu salvestamise. Kuna see rakendus on kerge, pole vahemällu vaja. Kui soovite rakendust muuta, muudab veebivahemälu keelamine testimise palju lihtsamaks.

Ridadel 18-31 loetakse Sense Hatilt anduriandmeid ja tagastatakse API andmed JSON-vormingus HTTP GET päringus / api veebiserveri lõpp-punkt. Ridad 37–39 tagastavad ilma veebirakenduse avalehe / veebiserveri lõpp-punkt. Koduleht renderdatakse Kodu.HTML fail, mis peaks olema mallid / projekti kataloogi kataloog.

Ridasid 14-16 kasutatakse juurdepääsuks stiil.css ja rakendus.js staatilised failid. Need failid peaksid olema staatiline / projekti kataloogi kataloog. The stiil.css faili kasutatakse Kodu.HTML koduleht ja rakendus.js faili kasutatakse API-andmete taotlemiseks / api lõpp-punkt ja värskendage ilmaandmeid Kodu.HTML iga 5 sekundi järel.

Looge staatiline / ja mallid / projekti kataloogis järgmiselt:

$ mkdir -v staatiline, mallid

Loo Kodu.HTML faili mallid / kataloogi järgmiselt:

mallid $ nano / kodu.HTML

Sisestage lahtrisse järgmine kood Kodu.HTML faili.





Vaarika Pi ilmajaam
href = "url_for ('staatiline', failinimi =" stiil.css ")" />



Vaarika Pi ilmajaam



Temperatuur












Rõhk




















Niiskus











Seejärel vajutage + X järgneb Y ja salvestada Kodu.HTML faili.

Loo stiil.css faili staatiline / kataloogi järgmiselt:

staatiline / stiil $ nano.css

Sisestage lahtrisse järgmised koodid stiil.css faili.

@import url ('https: // fonts.googleapis.com / css2?pere = Roboto & kuva = vaheta ');
*
polster: 0;
varu: 0;
font-perekond: 'Roboto', sans-serif;

keha
taust: # 737373;

h1
kuva: plokk;
värv: # 79DC7B;
teksti joondamine: keskel;
fondi kaal: 400;
taust: # 000;
polster: 0.5em 0;

h2
kuva: plokk;
taust: # 000;
värv: #fff;
teksti joondamine: keskel;
fondi kaal: 400;
fondi suurus: 1em;

.andmesisu
veeris: 10px;
ääris: 2px must must;
piiri raadius: 5 pikslit;
taustavärv: # 79DC7B;

.andmerida
kuva: painduv;
painde suund: rida;

.andmeelement
laius: 100%;
kõrgus: 80px;
kuva: painduv;
joondavad elemendid: keskel;
õigusta-sisu: keskus;
fondi kaal: paks;
fondi suurus: 1.5em;
värv: # 006902;

.andmerakk: hõljutage
taust: # FFE891;
värv: # AA8600;
kursor: osuti;

Seejärel vajutage + X järgneb Y ja salvestada stiil.css faili.

Looge rakendus.js faili staatiline / kataloogi järgmiselt:

staatiline / rakendus $ nano.js

Sisestage lahtrisse järgmine kood rakendus.js faili.

aken.addEventListener ('koormus', peamine);
funktsioon main ()
funktsioon getAPIData ()
var http = uus XMLHttpRequest ();
http.onreadystatechange = funktsioon ()
kui see.readyState === 4 && see.staatus === 200)
värskendus (JSON.sõeluma (see.responseText));


http.avatud ("GET", "/ api", tõsi);
http.saada();

funktsiooni värskendus (apiData)
var tempC = dokument.getElementById ("tempC");
var tempF = dokument.getElementById ("tempF");
var pressureMb = dokument.getElementById ("surveMb");
var pressurePsi = dokument.getElementById ("survePsi");
var pressureHpa = dokument.getElementById ("surveHpa");
var surveP = dokument.getElementById ("surveP");
var õhuniiskus = dokument.getElementById ("niiskus");
tempC.sisemineHTML = parseFloat (apiData.temperatuur.C).toFixed (2) + "° C";
tempF.sisemineHTML = parseFloat (apiData.temperatuur.F).toFixed (2) + "° F";
rõhkMb.sisemineHTML = parseFloat (apiData.surve.mb).toFixed (2) + "mb";
rõhkPsi.sisemineHTML = parseFloat (apiData.surve.psi).toFixed (2) + "psi";
rõhkHpa.sisemineHTML = parseFloat (apiData.surve.hPa).toFixed (2) + "hPa";
rõhkP.sisemineHTML = parseFloat (apiData.surve.P).toFixed (2) + "P";
niiskus.sisemineHTML = parseFloat (apiData.niiskus).toFixed (2) + "%";

funktsiooni rakendus ()
aken.setInterval (function ()
getAPIData ();
, 5000);

rakendus ();

Seejärel vajutage + X järgneb Y ja salvestada rakendus.js faili.

Siin jookseb 1. rida peamine () funktsioon, kui veebileht on laadimise lõpetanud. Aastal peamine () funktsioon getAPIData () funktsioon tõmbab AJAX-i abil ilmastiku API andmed ja kutsub värskendus () funktsioon (rida 10), kui andmed on edukalt toodud. The värskendus () funktsioon värskendab veebilehe elementi, kasutades API andmeid.

20. reas on dokument.getElementById () meetodit kasutatakse ID-ga veebilehe elemendi viite saamiseks tempC. Rida 28 kasutatakse id-ga veebisaidi elemendi sisu asendamiseks tempC temperatuuriga (Celsiuse järgi) API-st. Samamoodi asendatakse kõigi veebielementide (read 21–26) sisu nende vastavate API andmetega.

Aastal rakendus () funktsioon getAPIData () helistatakse iga 5 sekundi (5000 millisekundi) järel, et hoida ilmaandmete ajakohasena ilmateavet. Lõpuks, 46. real, rakendus () funktsioon täidetakse.

Veebirakenduse testimiseks sisestage järgmine käsk:

$ FLASK_APP = server.py kolbi käivitamine - host = 0.0.0.0

Ilmarakendus peaks töötama sadamas 5000 (vaikimisi).

Weather API töötamise testimiseks käivitage järgmine käsk:

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

Nagu näete, trükitakse Weather API andmed konsooli. Seetõttu töötab API.

Rakenduse Weather testimiseks külastage Chromiumi veebibrauserit aadressil http: // localhost: 5000. Ilmaprogramm tuleks laadida veebibrauserisse, kuid esialgu ei tohiks ilmateateid kuvada.

Mõne sekundi pärast peaks ilmarakendus lõpetama ilmaandmete hankimise API-st ja need kuvama.

Igal hetkel võite vajutada + C veebiserveri peatamiseks.

Systemdi teenuse loomine Weather veebirakenduse jaoks

Selles jaotises näitame teile, kuidas luua ilmarakenduse jaoks systemd teenusefail, et see käivitamisel automaatselt käivituks.

Kõigepealt looge a ilmajaam.teenus fail oma projekti kataloogis järgmiselt:

$ nano ilmajaam.teenus

Sisestage lahtrisse järgmised koodiread ilmajaam.teenus faili.

[Üksus]
Kirjeldus = Raspberry Pi ilmajaama veebirakendus, kasutades Raspberry Pi Sense Hat'i
Pärast = võrk.sihtmärk
[Teenus]
WorkingDirectory = / kodu / pi / töö
Keskkond = FLASK_APP = server.py
Keskkond = FLASK_ENV = tootmine
ExecStart = / usr / bin / flask run - host = 0.0.0.0
StandardOutput = pärima
StandardError = pärima
Taaskäivita = alati
Kasutaja = pi
[Install]
WantedBy = mitme kasutajaga.sihtmärk

Seejärel vajutage + X järgneb Y ja salvestada ilmajaam.teenus faili.

Kopeerige ilmajaam.teenus faili / etc / systemd / system / kataloogi järgmise käsuga:

$ sudo cp -v ilmajaam.teenus / etc / systemd / system /

Muudatuste jõustumiseks laadige systemd deemonid uuesti järgmiselt:

$ sudo systemctl deemon-reload

The ilmajaam teenus systemd peaks olema hetkel passiivne, nagu on näidatud alloleval ekraanipildil.

$ sudo systemctl oleku ilmajaam.teenus

Käivitage ilmajaam teenus järgmise käsuga:

$ sudo systemctl start ilmajaam.teenus

Nagu näete, ilmajaam teenus töötab nüüd.

$ sudo systemctl staatuse ilmajaam.teenus

Nüüd, kui ilmajaam teenus töötab, saate selle lisada Raspberry Pi OS-i süsteemi käivitusse järgmise käsuga:

$ sudo systemctl lubab ilmajaama.teenus

Taaskäivitage oma Raspberry Pi järgmise käsuga:

$ sudo taaskäivitage

Kui teie Raspberry Pi saapad on, ilmajaam teenus peaks töötama, nagu on näidatud alloleval ekraanipildil.

$ sudo systemctl staatuse ilmajaam.teenus

Ilmaprogrammi juurdepääs muudest seadmetest

Ilmarakenduse juurde pääsemiseks teistest koduvõrgu seadmetest peate teadma oma Raspberry Pi IP-aadressi. Oma Raspberry Pi 4 IP-aadressi leiate oma koduse ruuteri veebihalduse liidesest. Meie puhul on IP-aadress 192.168.0.103, kuid see aadress on teie jaoks erinev, seega asendage see kõigis järgnevates toimingutes kindlasti oma aadressiga.

Kui teil on juurdepääs Raspberry Pi konsoolile, võite käivitada järgmise käsu ka IP-aadressi leidmiseks.

$ hostinimi -I

Kui teate oma Raspberry Pi IP-aadressi, saate sellele juurde pääseda igast koduvõrgu seadmest. Nagu allpool oleval ekraanipildil näidatud, oleme pääsenud ilmarakendusse Android-nutitelefonist.

Järeldus

Selles artiklis näitasime teile, kuidas kasutada Raspberry Pi Sense Hat'i Raspberry Pi ilmajaama ehitamiseks. Me kasutasime meelemüts Pythoni raamatukogu ilmastikuandmete väljavõtmiseks Raspberry Pi Sense Hatist. Seejärel kasutasime Flask Pythoni mikro-veebiraamistikku ilma-API ja veebirakenduse loomiseks. Veebirakendus saab iga viie sekundi tagant ilma API-st ilmaandmeid, et veebirakendus oleks viimaste ilmaandmetega kursis.

Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...
Kuidas mängu Linuxis arendada
Kümme aastat tagasi ei osanud paljud Linuxi kasutajad ennustada, et nende lemmikoperatsioonisüsteem on ühel päeval populaarne kommertsvideomängude män...
Kommertsmängumootorite avatud lähtekoodiga sadamad
Tasuta, avatud lähtekoodiga ja platvormidevaheliste mängumootorite puhkusereise saab kasutada nii vanade kui ka mõnede üsna hiljutiste mängude pealkir...