Overvåk temperatur med Raspberry Pi & Sense HAT: Trinn-for-trinn guide

Overvåk omgivelsestemperaturen med din Raspberry Pi

Det finnes flere tilnærminger for å følge med på temperaturen i omgivelsene ved hjelp av en Raspberry Pi, kanskje som en del av en hjemmelaget værstasjon. I stedet for å bruke eksterne sensorer koblet til Raspberry Pi’s GPIO-pinner, vil vi her utforske hvordan man kan spore temperatur med en Raspberry Pi som er utstyrt med en Sense HAT.

Hva er Sense HAT?

Bildekreditt: Raspberry Pi

Sense HAT er et offisielt tilleggskort, designet og produsert av Raspberry Pi-stiftelsen. Det er en såkalt «Hardware Attached on Top» (HAT), og var opprinnelig laget for bruk av astronauter på den internasjonale romstasjonen. Siden 2015 har to Raspberry Pi-enheter med Sense HAT blitt brukt i vitenskapelige prosjekter utarbeidet av skoleelever som deltar i den pågående Astro Pi-utfordringen. Disse to enhetene har senere blitt erstattet av oppgraderte versjoner basert på Raspberry Pi 4, og er utstyrt med et kamera av høy kvalitet.

Bildekreditt: Raspberry Pi

Selv om standard Sense HAT mangler den spesielle sølvinnkapslingen som er designet for bruk i verdensrommet, har den nøyaktig samme funksjonalitet. Den er kompatibel med alle Raspberry Pi-modeller som har en 40-pinners GPIO-header, og har en rekke innebygde sensorer som gjør den i stand til å overvåke omgivelsene og også registrere egen orientering og bevegelse. I tillegg har den en 8×8 RGB LED-matrise for å vise tekst, data og bilder, samt en liten femveis joystick.

Hele spekteret av sensoriske funksjoner til Sense HAT omfatter:

  • Fuktighet: En STMicro HTS221-sensor med et område på 0 til 100 % relativ fuktighet, samt temperaturmåling fra 0 °C til 65 °C ± 2 °C.
  • Barometrisk trykk: En STMicro LPS25HB-sensor med et område på 260 til 1260 hPa, i tillegg til temperaturmåling fra 15 °C til 40 °C ±0,5 °C.
  • Temperatur: Denne verdien kan avleses fra fuktighets- eller trykksensoren, eller måles ved å beregne et gjennomsnitt av begge målingene.
  • Gyroskop: STMicro LSM9DS1 IMU kan måle rotasjon av Sense HAT i forhold til jordens overflate, samt hvor raskt den roterer.
  • Akselerometer: En annen funksjon i IMU som kan måle akselerasjonskraft i forskjellige retninger.
  • Magnetometer: Ved å registrere jordens magnetfelt kan IMU bestemme retningen til magnetisk nord, og dermed gi en kompassavlesning.

Nå som du er klar over hva denne allsidige Raspberry Pi HAT kan gjøre, la oss sette i gang med prosjektet.

Trinn 1: Montering av Sense HAT

For å koble til Sense HAT, sørg først for at Raspberry Pi er slått av og frakoblet strømforsyningen. Plasser deretter Sense HAT (med den medfølgende svarte header-forlengeren) forsiktig inn på Raspberry Pi’s 40-pinners GPIO-header slik at Sense HAT-kortet ligger over Raspberry Pi-kortet. Sørg for at alle pinnene er korrekt justert og at begge radene er koblet sammen. Du kan også bruke skruer for å sikre den.

Du kan bruke hvilken som helst standard Raspberry Pi-modell som har en 40-pinners GPIO-header. En av hovedbegrensningene med en Raspberry Pi 400 er imidlertid at GPIO-headeren er plassert på baksiden av det integrerte tastaturet. Dette betyr at Sense HAT vil peke bakover, og det kan være nødvendig å bruke en GPIO-forlengelseskabel for å koble den til.

Trinn 2: Konfigurer 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 – hvis du ikke allerede har gjort dette, kan du finne informasjon om hvordan du installerer et operativsystem på en Raspberry Pi. Deretter kan du slå på strømmen.

Alternativt kan du bruke Raspberry Pi med Sense HAT i «hodeløs» modus, uten en skjerm tilkoblet. Koble deg 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, men du kan fortsatt redigere programmer ved hjelp av nanotekstredigereren og kjøre dem fra kommandolinjen.

Sense HAT-programvaren skal være installert som standard. For å dobbeltsjekke, åpne et terminalvindu og skriv:

sudo apt install sense-hat

Dersom pakken nettopp er blitt installert, må du starte Raspberry Pi på nytt:

sudo reboot

Trinn 3: Start programmering i Python

Selv om du kan bruke Raspberry Pi Sense HAT med det blokkbaserte programmeringsspråket Scratch, vil vi bruke Python for å lese og vise sensoravlesningene.

Thonny IDE (integrert utviklingsmiljø) er et godt valg for Python-programmering på en Raspberry Pi, siden det tilbyr mange funksjoner, inkludert nyttige feilsøkingsverktøy. I Raspberry Pi OS-skrivebordsgrensesnittet, gå til Meny (bringebærikonet øverst til venstre) > Programmering > Thonny IDE for å starte programmet.

Trinn 4: Ta en temperaturavlesning

I Thonny IDEs hovedvindu skriver du inn følgende kodelinjer:

from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

temp = sense.get_temperature()
print(temp)

Den første linjen importerer SenseHat-klassen fra sense_hat Python-biblioteket (som er forhåndsinstallert i Raspberry Pi OS). Denne tildeles deretter «sense»-variabelen. Den tredje linjen sletter LED-matrisen på Sense HAT.

Deretter henter vi temperaturavlesningen og skriver den ut til «Shell»-området i Thonny IDE. Dette er i grader Celsius, så det kan være lurt å konvertere det til Fahrenheit:

temp = (sense.get_temperature() * 1.8 + 32)

Temperaturavlesningen vil ha flere desimaler. Derfor bruker vi avrundingsfunksjonen for å avrunde den til én desimal:

temp = round(temp, 1)

Funksjonen sense.get_temperature() leser temperatursensoren som er 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 gjennomsnitt (ved å legge dem sammen og dele på to).

Trinn 5: Vis temperaturen på Sense HAT

Å bare skrive ut en enkelt temperaturavlesning til Python Shell er litt kjedelig, så la oss heller ta en ny avlesning med jevne mellomrom og vise den på Sense HATs RGB LED-matrise. For å vise en rullende tekstmelding, bruker vi funksjonen show_message. Vi vil også bruke en while True-løkke for å fortsette å ta en ny avlesning hvert 10. sekund – ved hjelp av sleep-funksjonen fra tidsbiblioteket.

Her er det fullstendige programmet:

from sense_hat import SenseHat
from time import sleep

sense = SenseHat()
sense.clear()

while True:
    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 nye temperaturavlesning rulle over LED-matrisen. Prøv å blåse på Sense HAT for å se om temperaturen endrer seg.

Temperaturavlesningene kan påvirkes av varme som overføres fra Raspberry Pi sin CPU rett 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

Selv om du kan bruke en frittstående temperatursensor i stedet for dette prosjektet, gjør Sense HAT det enkelt å overvåke temperaturen med din Raspberry Pi. Du kan også bruke den til å ta en rekke andre sensoravlesninger, som for eksempel barometertrykk og relativ fuktighet, og vise dem på LED-matrisen.