Det finns flera metoder för att observera omgivningstemperaturen med en Raspberry Pi-dator, kanske som en del av en väderstationslösning. Medan du kan använda en extern sensor kopplad till Raspberry Pis GPIO-stift, ska vi här beskriva hur man övervakar temperaturen med en Raspberry Pi som är utrustad med en Sense HAT.
Vad är en Sense HAT?
Bildkälla: Raspberry Pi
Sense HAT är ett officiellt tilläggskort (Hardware Attached on Top) för Raspberry Pi, designat och producerat av Raspberry Pi-stiftelsen. Den skapades ursprungligen för att användas av astronauter på den internationella rymdstationen. Sedan 2015 har två Raspberry Pi-enheter med Sense HAT använts i vetenskapliga experiment designade av skolelever som deltar i Astro Pi-utmaningen. Dessa enheter har senare ersatts av uppdaterade versioner som bygger på en Raspberry Pi 4, utrustade med en högkvalitetskamera.
Bildkälla: Raspberry Pi
Även om standardversionen av Sense HAT saknar det specialdesignade silverhöljet för rymdbruk, har den exakt samma funktionalitet. Den är kompatibel med alla Raspberry Pi-modeller som har en 40-pins GPIO-header och har en uppsättning inbyggda sensorer som gör det möjligt att övervaka omgivningen, samt 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 liten femvägs joystick.
Sense HAT erbjuder följande sensorfunktioner:
- Fuktighet: En STMicro HTS221-sensor med 0 till 100% relativ luftfuktighet, plus temperaturavläsning från 0°C till 65°C ± 2°C.
- Barometertryck: En STMicro LPS25HB-sensor med ett område på 260 till 1260 hPa, plus temperaturavläsning från 15°C till 40°C ±0,5°C.
- Temperatur: Kan läsas från fukt- eller trycksensorn, eller beräknas som ett medelvärde av båda.
- Gyroskop: STMicro LSM9DS1 IMU mäter Sense HATs rotation i förhållande till jordytan (och hur snabbt den roterar).
- Accelerometer: En annan IMU-funktion som mäter accelerationskraft i flera riktningar.
- Magnetometer: Genom att känna av jordens magnetfält, kan IMU bestämma riktningen mot magnetisk nord och ge en kompassavläsning.
Nu när du har en förståelse för vad denna mångsidiga Raspberry Pi HAT kan åstadkomma, är det dags att inleda projektet.
Steg 1: Montera Sense HAT
Innan du kopplar in Sense HAT, försäkra dig om att din Raspberry Pi är avstängd och inte ansluten till någon strömkälla. Tryck därefter försiktigt in Sense HAT (med den medföljande svarta header-förlängaren monterad) på Raspberry Pi:s 40-pins GPIO-header, så att Sense HAT-kortet hamnar ovanpå Raspberry Pi-kortet. Kontrollera att samtliga stift linjerar med varandra och att båda raderna är ordentligt anslutna. Du kan också använda skruvbara distanser för att göra det ännu säkrare.
Du kan använda valfri Raspberry Pi-modell som har en 40-pins GPIO-header. En viktig begränsning med en Raspberry Pi 400 är dock att dess GPIO-header sitter på baksidan av det integrerade tangentbordet. Det innebär att Sense HAT kommer att vändas bakåt, så du kan behöva använda en GPIO-förlängningskabel för att ansluta den.
Steg 2: Konfigurera Raspberry Pi
Som med andra projekt, bör du ansluta ett USB-tangentbord och en mus, och därefter koppla din Raspberry Pi till en skärm eller TV. Du bör även ha ett microSD-kort isatt med standard Raspberry Pi OS – om du inte redan har gjort det, kolla in hur du installerar operativsystem på en Raspberry Pi. Efter det är du redo att slå på strömmen.
Alternativt kan du använda din Raspberry Pi med Sense HAT i ett så kallat ”headless”-läge, utan en ansluten skärm. Du kan då ansluta till Raspberry Pi på distans via SSH från en annan dator eller enhet. Om du gör detta kan du inte använda Thonny Python IDE, men du kan fortfarande redigera program med nanotextredigeraren och köra dem från kommandoraden.
Sense HAT-firmware ska vara installerad som standard. För att kontrollera detta, öppna ett terminalfönster och skriv in:
sudo apt install sense-hat
Om paketet installerats nyligen, starta om Raspberry Pi:
sudo reboot
Steg 3: Börja programmera i Python
Även om Raspberry Pi Sense HAT kan användas med det blockbaserade programmeringsspråket Scratch, kommer vi här att använda Python för att läsa och presentera sensoravläsningar.
Thonny IDE (integrerad utvecklingsmiljö) är ett utmärkt sätt att programmera i Python på en Raspberry Pi, med många funktioner inklusive användbara felsökningsverktyg. I Raspberry Pi OS skrivbordsgränssnitt, klicka på Meny (hallonikonen uppe till vänster) > Programmering > Thonny IDE för att starta programmet.
Steg 4: Utför en temperaturavläsning
I Thonny IDEs huvudfönster skriver du in följande kodrader:
from sense_hat import SenseHat sense = SenseHat() sense.clear() temp = sense.get_temperature() print(temp)
Den första raden importerar klassen SenseHat från sense_hat Python-biblioteket (som är förinstallerat i Raspberry Pi OS). Den tilldelas sedan variabeln ’sense’. Den tredje raden rensar Sense HATs LED-matris.
Vi tar sedan en temperaturavläsning och skriver ut den i Shell-området i Thonny IDE. Detta är i grader Celsius, så du kan konvertera det till Fahrenheit:
temp = (sense.get_temperature() * 1.8 + 32)
Temperatursensorns avläsning har flera siffror efter decimaltecknet. Vi använder avrundningsfunktionen för att avrunda till en decimal:
temp = round(temp, 1)
Funktionen sense.get_temperature() läser temperatursensorn som är inbyggd i fuktighetssensorn. Alternativt kan du läsa temperaturen från trycksensorn med sense.get_temperature_from_pressure() eller ta båda avläsningarna och beräkna ett medelvärde (genom att addera dem och dela med två).
Steg 5: Visa temperaturen på Sense HAT
Att enbart skriva ut en temperaturavläsning i Python Shell är inte så visuellt spännande, så låt oss istället utföra nya avläsningar regelbundet och visa dem på Sense HATs RGB LED-matris. För att visa ett rullande textmeddelande används funktionen show_message. Vi använder också en while True-loop för att kontinuerligt ta nya mätningar var tionde sekund – vilket vi åstadkommer med sleep-funktionen från time-biblioteket.
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)
När du kör koden ser du 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 processor strax under, så en justering kan krävas för att få mer exakta värden. En annan lösning är att använda en stacking header för att höja Sense HAT lite högre över Raspberry Pi.
Använd en Raspberry Pi för att övervaka temperaturen
Även om du kan använda en separat temperatursensor istället för detta projekt, gör Sense HAT det enkelt att övervaka temperaturen med din Raspberry Pi. Du kan också använda den för att samla in en mängd andra sensorvärden, såsom barometertryck och relativ luftfuktighet, och visa dem på LED-matrisen.