Hur man använder en Raspberry Pi för att övervaka temperaturer med en Sense HAT

Det finns flera sätt på vilka du kan övervaka omgivningstemperaturen med en Raspberry Pi-enkortsdator, kanske som en del av en väderstationsinställning. Även om du kan använda en extern sensor ansluten till Raspberry Pis GPIO-stift, kommer vi här att förklara hur man övervakar temperaturen med en Raspberry Pi utrustad med en Sense HAT.

Vad är Sense HAT?

Bildkredit: Raspberry Pi

En officiell Raspberry Pi HAT (Hardware Attached on Top) tilläggskort designad och producerad av Raspberry Pi-företaget, Sense HAT skapades ursprungligen för att användas av astronauter ombord på den internationella rymdstationen. Sedan 2015 har två Raspberry Pi-datorer utrustade med en Sense HAT använts i vetenskapliga experiment designade av skolbarn som gick in i den pågående Astro Pi utmaning Dessa två enheter har sedan ersatts av uppgraderade versioner baserade på en Raspberry Pi 4 och utrustade med en högkvalitativ kamera.

Bildkredit: Raspberry Pi

Även om det saknar det speciella silverfodralet som är designat för användning i rymden, har standardskivan Sense HAT exakt samma funktionalitet. Den är kompatibel med alla Raspberry Pi-modeller med en 40-stifts GPIO-header och har en rad inbyggda sensorer som gör att den kan övervaka den omgivande miljön och även upptäcka sin egen orientering och rörelse. Dessutom har den en 8×8 RGB LED-matris för att visa text, data och bilder. Det finns också en mini femvägs joystick.

Hela utbudet av Sense HAT sensoriska funktioner är som följer:

  • Fuktighet: En STMicro HTS221-sensor med 0 till 100 % relativ luftfuktighet, plus temperaturavkänning från 32°F till 149°F (0°C till 65°C ± 2°C).
  • Barometertryck: En STMicro LPS25HB-sensor med ett område på 260 till 1260 hPa, plus temperaturavkänning från 59°F till 104°F (15°C till 40°C ±0,5°C).
  • Temperatur: Detta kan avläsas från fukt- eller trycksensorn, eller mätas genom att ta ett medelvärde av båda avläsningarna.
  • Gyroskop: STMicro LSM9DS1 IMU kan mäta rotationen av Sense HAT i förhållande till jordens yta (och hur snabbt den roterar).
  • Accelerometer: En annan funktion hos IMU, denna kan mäta accelerationskraft i flera riktningar.
  • Magnetometer: Genom att känna av jordens magnetfält kan IMU bestämma riktningen för magnetisk nord och på så sätt ge en kompassavläsning.

Nu när du vet vad den här mångsidiga Raspberry Pi HAT kan göra, är det dags att börja med projektet.

Steg 1: Montera Sense HAT

För att ansluta Sense HAT, se först till att din Raspberry Pi är avstängd och frånkopplad från strömmen. Tryck sedan försiktigt Sense HAT (med den medföljande svarta header-förlängaren monterad) på Raspberry Pi:s 40-stifts GPIO-header så att Sense HAT-kortet placeras över Raspberry Pi-kortet. Se till att alla stift är i linje med varandra och att båda raderna är anslutna. Du kan också använda skruvbara avstånd för att säkra den.

Du kan använda vilken standard Raspberry Pi-modell som helst som har ett 40-stifts GPIO-huvud. En av de viktigaste begränsningarna för en Raspberry Pi 400 är dock att dess GPIO-huvud är placerat på baksidan av det integrerade tangentbordet. Detta innebär att Sense HAT kommer att vara vänd bakåt, så du kanske vill använda en GPIO-förlängningskabel för att ansluta den.

Steg 2: Ställ in Raspberry Pi

Som med alla andra projekt bör du koppla in ett USB-tangentbord och en mus och sedan ansluta din Raspberry Pi till en bildskärm eller TV. Du bör också ha ett microSD-kort isatt med standard Raspberry Pi OS – om du inte redan har gjort detta, kolla in hur du installerar ett operativsystem på en Raspberry Pi. Du är då redo att slå på strömmen.

Alternativt kan du använda din Raspberry Pi med Sense HAT i huvudlöst läge, utan en monitor ansluten och ansluta till Raspberry Pi på distans med hjälp av SSH från en annan dator eller enhet. Om du gör detta kommer du inte att kunna använda Thonny Python IDE, buy kan fortfarande redigera program med nanotextredigeraren och köra dem från kommandoraden.

Sense HAT-firmwaren bör vara installerad som standard. För att dubbelkolla, öppna ett terminalfönster och skriv in:

 sudo apt install sense-hat

Sedan, om paketet precis har installerats nyligen, starta om Raspberry Pi:

 sudo reboot

Steg 3: Börja programmera i Python

Även om du kan använda Raspberry Pi Sense HAT med det Scratch blockbaserade programmeringsspråket, kommer vi att använda Python för att läsa och visa dess sensoravläsningar.

Thonny IDE (integrerad utvecklingsmiljö) är ett bra sätt att göra Python-programmering på en Raspberry Pi, eftersom den har många funktioner inklusive användbara felsökningsfunktioner. I Raspberry Pi OS:s skrivbordsgränssnitt, gå till Meny (överst till vänster hallonikon) > Programmering > Thonny IDE för att starta den.

Steg 4: Gör en temperaturavläsning

I huvudfönstret för Thonny IDE anger du följande kodrader:

 
from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

temp = sense.get_temperature()
print(temp)

Den första raden importerar SenseHat-klassen från sense_hat Python-biblioteket (som är förinstallerat i Raspberry Pi OS). Denna tilldelas sedan avkänningsvariabeln. Den tredje raden rensar Sense HAT:s LED-matris.

Vi tar sedan temperaturavläsningen och skriver ut den till Shell-området på Thonny IDE. Detta är i grader Celsius, så du kanske vill först konvertera det till Fahrenheit:

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

Temperatursensorns avläsning kommer att ha flera siffror efter decimaltecknet. Så vi använder avrundningsfunktionen för att runda av den till en enda decimal:

 temp = round(temp, 1) 

Funktionen sense.get_temperature() läser temperatursensorn inbyggd i fuktighetssensorn. Alternativt kan du ta en temperaturavläsning från trycksensorn med sense.get_temperature_from_pressure() eller till och med ta båda avläsningarna och beräkna ett medelmedelvärde (genom att lägga till dem och dividera med två).

Steg 5: Visa temperaturen på Sense HAT

Att skriva ut en enda temperaturavläsning till Python Shell är lite tråkigt, så låt oss istället ta en ny avläsning regelbundet och visa den på Sense HAT:s RGB LED-matris. För att visa ett rullande textmeddelande använder vi funktionen show_message. Vi kommer också att använda ett tag: True loop för att fortsätta ta en ny läsning var 10:e sekund – för vilket vi använder vilofunktionen från tidsbiblioteket.

Här är hela 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)

Kör den här koden så kommer du att se varje ny temperaturavläsning rulla över LED-matrisen. Testa att blåsa på Sense HAT för att se om temperaturen ändras.

Temperaturavläsningar kan påverkas av värme som överförs från Raspberry Pi:s CPU precis nedanför, så en justering kan behövas för att få en mer exakt siffra. En annan lösning är att använda en stacking header för att höja Sense HAT högre över Raspberry Pi.

Använd en Raspberry Pi för att övervaka temperaturen

Även om du kan använda en fristående temperatursensor istället för det här projektet, gör Sense HAT det enkelt att övervaka temperaturen med din Raspberry Pi. Du kan också använda den för att ta en mängd andra sensoravläsningar, såsom barometertryck och relativ luftfuktighet, och visa dem på dess LED-matris.