Skapa en Raspberry Pi temperaturmonitor med hjälp av en Sense HAT och visa regelbundna avläsningar på dess LED-matris.
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?
En officiell Raspberry Pi HAT (Hardware Attached on Top) tilläggskort designat och producerat 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.
Även om det saknar det speciella silverfodralet som är designat för användning i rymden, har standardskivan Sense HAT exakt samma funktionalitet. Kompatibel med alla Raspberry Pi-modell med en 40-stifts GPIO-header har den 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 8x8 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, detta kan mäta accelerationskraft i flera riktningar.
- Magnetometer: Genom att känna av jordens magnetfält kan IMU bestämma riktningen för den magnetiska norden och därmed ge en kompassavläsning.
Nu när du vet vad denna 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 Pis 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 viktiga begränsningar för en Raspberry Pi 400GPIO-huvudet är dock 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 anslut 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 det, kolla in hur man 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 SSH från en annan dator eller enhet. Om du gör detta kommer du inte att kunna använda Thonny Python IDE, köp 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 SenseHatsense = SenseHat()
sense.clear()
temp = sense.get_temperature()
print(temp)
Den första raden importerar SenseHat klass från sense_hat Python-biblioteket (som är förinstallerat i Raspberry Pi OS). Detta tilldelas sedan till känsla variabel. 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 kommer att använda runda funktion för att runda av det till en enda decimal:
temp = round(temp, 1)
De sense.get_temperature() funktionen läser temperatursensorn inbyggd i fuktsensorn. Alternativt kan du ta en temperaturavläsning från tryckgivaren med sense.get_temperature_from_pressure() eller till och med ta båda avläsningarna och beräkna ett medelvä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 visa_meddelande fungera. Vi kommer också att använda en medan: Sant loop för att fortsätta ta en ny avläsning var 10:e sekund - för vilket vi använder sova funktion från tid bibliotek.
Här är hela 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)
Kör den här koden och du kommer 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 detta projekt, 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.