Lag en Raspberry Pi temperaturmonitor med en Sense HAT og vis regelmessige avlesninger på LED-matrisen.
Det er flere måter du kan overvåke omgivelsestemperaturen på ved hjelp av en Raspberry Pi enkeltbordsdatamaskin, kanskje som en del av et værstasjonsoppsett. Mens du kan bruke en ekstern sensor koblet til Raspberry Pis GPIO-pinner, vil vi her forklare hvordan du overvåker temperaturen med en Raspberry Pi utstyrt med en Sense HAT.
Hva er Sense HAT?
En tjenestemann Raspberry Pi HAT (Hardware Attached on Top) tilleggskort designet og produsert av Raspberry Pi-selskapet, Sense HAT ble opprinnelig laget for å brukes av astronauter ombord på den internasjonale romstasjonen. Siden 2015 har to Raspberry Pi-datamaskiner utstyrt med Sense-HAT blitt brukt i vitenskapelige eksperimenter designet av skolebarn som gikk inn i den pågående Astro Pi utfordring Disse to enhetene har siden blitt erstattet av oppgraderte versjoner basert på en Raspberry Pi 4 og utstyrt med et høykvalitetskamera.
Selv om det mangler den spesielle sølvkassen designet for bruk i verdensrommet, har standard Sense HAT-brett nøyaktig samme funksjonalitet. Kompatibel med alle Raspberry Pi-modell med en 40-pinners GPIO-header har den en rekke innebygde sensorer som gjør den i stand til å overvåke omgivelsene og også oppdage sin egen orientering og bevegelse. I tillegg har den en 8x8 RGB LED-matrise for å vise tekst, data og bilder. Det er også en mini femveis joystick.
Hele utvalget av Sense HAT sensoriske funksjoner er som følger:
- Luftfuktighet: En STMicro HTS221-sensor med 0 til 100 % relativ luftfuktighetsområde, pluss temperaturføling fra 32°F til 149°F (0°C til 65°C ± 2°C).
- Barometrisk trykk: En STMicro LPS25HB-sensor med et område på 260 til 1260 hPa, pluss temperaturføling fra 59 °F til 104 °F (15 °C til 40 °C ±0,5 °C).
- Temperatur: Dette kan avleses fra fuktighets- eller trykksensoren, eller måles ved å ta et gjennomsnitt av begge avlesningene.
- Gyroskop: STMicro LSM9DS1 IMU kan måle rotasjon av Sense HAT i forhold til jordens overflate (og hvor raskt den roterer).
- Akselerometer: En annen funksjon av IMU, denne kan måle akselerasjonskraft i flere retninger.
- Magnetometer: Ved å sanse jordens magnetfelt kan IMU bestemme retningen til magnetisk nord og dermed gi en kompassavlesning.
Nå som du har forstått hva denne flerbruks Raspberry Pi HAT kan gjøre, er det på tide å komme i gang med prosjektet.
Trinn 1: Monter Sense HAT
For å koble til Sense HAT, sørg først for at Raspberry Pi er slått av og koblet fra strømmen. Skyv deretter Sense HAT (med den medfølgende sorte header-forlengeren montert) forsiktig inn på Raspberry Pis 40-pinners GPIO-header slik at Sense HAT-kortet er plassert over Raspberry Pi-kortet. Pass på at alle pinnene er riktig på linje og at begge radene er koblet sammen. Du kan også bruke innskruningsstøtter for å sikre den.
Du kan bruke hvilken som helst standard Raspberry Pi-modell som har en 40-pinners GPIO-header. En av viktige begrensninger for en Raspberry Pi 400GPIO-hodet er imidlertid plassert på baksiden av det integrerte tastaturet. Dette betyr at Sense HAT vender bakover, så det kan være lurt å bruke en GPIO-forlengelseskabel for å koble den til.
Trinn 2: Sett opp Raspberry Pi
Som med alle andre prosjekter, bør du koble til et USB-tastatur og en mus og deretter koble Raspberry Pi til en skjerm eller TV. Du bør også ha et microSD-kort satt inn med standard Raspberry Pi OS på – hvis du ikke har gjort dette allerede, sjekk ut hvordan installere et operativsystem på en Raspberry Pi. Du er da klar til å slå på strømmen.
Alternativt kan du bruke din Raspberry Pi med Sense HAT i hodeløs modus, uten en skjerm tilkoblet og koble til Raspberry Pi eksternt ved hjelp av SSH fra en annen datamaskin eller enhet. Hvis du gjør dette, vil du ikke kunne bruke Thonny Python IDE, buy kan fortsatt redigere programmer ved å bruke nanotekstredigereren og kjøre dem fra kommandolinjen.
Sense HAT-fastvaren skal være installert som standard. For å dobbeltsjekke, åpne et terminalvindu og skriv inn:
sudo apt install sense-hat
Deretter, hvis pakken nettopp har blitt installert, starter du Raspberry Pi på nytt:
sudo reboot
Trinn 3: Start programmering i Python
Mens du kan bruke Raspberry Pi Sense HAT med det Scratch-blokkbaserte programmeringsspråket, bruker vi Python til å lese og vise sensoravlesningene.
Thonny IDE (integrert utviklingsmiljø) er en god måte å gjøre Python-programmering på en Raspberry Pi, siden den har mye funksjonalitet inkludert nyttige feilsøkingsfunksjoner. I Raspberry Pi OSs desktop GUI, gå til Meny (øverst til venstre bringebærikon) > Programmering > Thonny IDE for å starte den.
Trinn 4: Ta en temperaturavlesning
I hovedvinduet til Thonny IDE skriver du inn følgende kodelinjer:
from sense_hat import SenseHatsense = SenseHat()
sense.clear()
temp = sense.get_temperature()
print(temp)
Den første linjen importerer SenseHat klasse fra sense_hat Python-bibliotek (som er forhåndsinstallert i Raspberry Pi OS). Dette tildeles så til føle variabel. Den tredje linjen sletter Sense HATs LED-matrise.
Vi tar deretter temperaturavlesningen og skriver den ut til Shell-området til Thonny IDE. Dette er i grader Celsius, så det kan være lurt å først konvertere det til Fahrenheit:
temp = (sense.get_temperature() * 1.8 + 32)
Temperatursensoravlesningen vil ha flere sifre etter desimaltegnet. Så vi bruker rund funksjon for å avrunde det til en enkelt desimal:
temp = round(temp, 1)
De sense.get_temperature() funksjonen leser temperatursensoren innebygd i fuktighetssensoren. Alternativt kan du ta en temperaturavlesning fra trykksensoren med sense.get_temperature_from_pressure() eller til og med ta begge målingene og beregne et gjennomsnittlig gjennomsnitt (ved å legge dem til og dele på to).
Trinn 5: Vis temperaturen på Sense HAT
Å skrive ut en enkelt temperaturlesing til Python Shell er litt kjedelig, så la oss i stedet ta en ny avlesning regelmessig og vise den på Sense HATs RGB LED-matrise. For å vise en rullende tekstmelding bruker vi Vis melding funksjon. Vi vil også bruke en mens: Sant løkke for å fortsette å ta en ny avlesning hvert 10. sekund – som vi bruker sove funksjon fra tid bibliotek.
Her er det komplette programmet:
from sense_hat import SenseHat
from time import sleepsense = SenseHat()
sense.clear()
whileTrue:
temp = (sense.get_temperature() * 1.8 + 32)
temp = round(temp, 1)
message = "Temp: " + str(temp)
sense.show_message(message)
sleep (10)
Kjør denne koden, og du vil se hver ny temperaturlesing rulle over LED-matrisen. Prøv å blåse på Sense HAT for å se om temperaturen endres.
Temperaturavlesninger kan bli påvirket av varme som overføres fra Raspberry Pis CPU like under, så en justering kan være nødvendig for å få et mer nøyaktig tall. En annen løsning er å bruke en stableheader for å heve Sense HAT høyere over Raspberry Pi.
Bruk en Raspberry Pi for å overvåke temperaturen
Mens du kan bruke en frittstående temperatursensor i stedet for dette prosjektet, gjør Sense HAT det enkelt å overvåke temperaturen med Raspberry Pi. Du kan også bruke den til å ta en rekke andre sensoravlesninger, for eksempel barometertrykk og relativ fuktighet, og vise dem på LED-en. matrise.