Istnieje wiele metod pozwalających na śledzenie temperatury otoczenia za pomocą komputera jednopłytkowego Raspberry Pi, co jest szczególnie przydatne na przykład przy tworzeniu stacji meteorologicznej. Choć możliwe jest wykorzystanie zewnętrznego czujnika podłączonego do pinów GPIO Raspberry Pi, w tym poradniku skupimy się na monitorowaniu temperatury przy użyciu Raspberry Pi z nakładką Sense HAT.
Co to jest Sense HAT?
Źródło obrazu: Raspberry Pi
Sense HAT, będący oficjalną płytką rozszerzającą HAT (Hardware Attached on Top) dla Raspberry Pi, został zaprojektowany i wyprodukowany przez Raspberry Pi Foundation. Pierwotnie stworzony z myślą o astronautach na Międzynarodowej Stacji Kosmicznej, jest wykorzystywany w eksperymentach naukowych opracowywanych przez uczniów w ramach projektu Astro Pi od roku 2015. Pierwotne dwie jednostki zostały z czasem zastąpione unowocześnionymi wersjami opartymi na Raspberry Pi 4, wyposażonymi dodatkowo w kamerę wysokiej rozdzielczości.
Źródło obrazu: Raspberry Pi
Standardowa płytka Sense HAT, choć pozbawiona specjalnej srebrnej osłony stosowanej w kosmosie, oferuje identyczną funkcjonalność. Jest kompatybilna z każdym modelem Raspberry Pi posiadającym 40-pinowe złącze GPIO. Wyposażona jest w szereg wbudowanych sensorów, które umożliwiają obserwację środowiska, a także wykrywanie własnej orientacji i ruchu. Dodatkowo posiada matrycę diod LED RGB o wymiarach 8×8, służącą do wyświetlania tekstu, danych oraz obrazów. Dostępny jest również mini joystick pięciokierunkowy.
Pełna gama możliwości sensorycznych Sense HAT obejmuje:
- Wilgotność: sensor STMicro HTS221 o zakresie wilgotności względnej od 0 do 100%, z czujnikiem temperatury operującym w zakresie od 0°C do 65°C (± 2°C).
- Ciśnienie barometryczne: sensor STMicro LPS25HB z zakresem od 260 do 1260 hPa, oraz czujnik temperatury w przedziale od 15°C do 40°C (± 0,5°C).
- Temperatura: może być odczytywana z czujnika wilgotności lub ciśnienia, bądź poprzez obliczenie średniej z obu tych pomiarów.
- Żyroskop: Jednostka IMU STMicro LSM9DS1 mierzy obrót Sense HAT względem powierzchni Ziemi (wraz z prędkością tego obrotu).
- Akcelerometr: Kolejna funkcja IMU, która pozwala mierzyć siłę przyspieszenia w różnych kierunkach.
- Magnetometr: Wykrywając pole magnetyczne Ziemi, IMU umożliwia określenie kierunku północy magnetycznej, dostarczając tym samym danych kompasu.
Teraz, gdy znasz możliwości tej wszechstronnej nakładki dla Raspberry Pi, możemy przejść do praktycznej realizacji projektu.
Krok 1: Montaż Sense HAT
Przed podłączeniem Sense HAT, upewnij się, że Raspberry Pi jest wyłączone i odłączone od zasilania. Delikatnie nałóż Sense HAT (wraz z czarną przedłużką złącza) na 40-pinowe złącze GPIO Raspberry Pi, tak aby płytka Sense HAT znajdowała się nad płytką Raspberry Pi. Upewnij się, że wszystkie piny są prawidłowo ustawione i obie strony są połączone. Możesz dodatkowo użyć wkręcanych podkładek dystansowych, aby zapewnić stabilne połączenie.
Możesz użyć dowolnego standardowego modelu Raspberry Pi z 40-pinowym złączem GPIO. Jednym z wyjątków jest Raspberry Pi 400, w którym złącze GPIO znajduje się z tyłu zintegrowanej klawiatury. W takim przypadku Sense HAT będzie skierowany do tyłu, co wymaga użycia przedłużacza GPIO.
Krok 2: Konfiguracja Raspberry Pi
Jak w przypadku każdego projektu, podłącz klawiaturę i mysz USB, a następnie podłącz Raspberry Pi do monitora lub telewizora. Upewnij się również, że masz włożoną kartę microSD ze standardowym systemem operacyjnym Raspberry Pi – jeśli jeszcze tego nie zrobiłeś, zapoznaj się z instrukcją instalacji systemu operacyjnego. Następnie możesz włączyć zasilanie.
Alternatywnie, Raspberry Pi z Sense HAT można używać w trybie „bezgłowym”, bez podłączonego monitora. W takim przypadku łączenie z Raspberry Pi odbywa się zdalnie za pomocą protokołu SSH z innego komputera. W takim scenariuszu nie będziesz mógł korzystać z Thonny Python IDE, ale nadal będziesz miał dostęp do edycji programów za pomocą edytora tekstu nano i uruchamiania ich z poziomu wiersza poleceń.
Oprogramowanie Sense HAT powinno być domyślnie zainstalowane. Aby to zweryfikować, otwórz okno Terminala i wpisz:
sudo apt install sense-hat
Po instalacji, jeśli pakiet był nowo dodany, zrestartuj Raspberry Pi:
sudo reboot
Krok 3: Rozpocznij programowanie w Pythonie
Mimo że możesz używać Raspberry Pi Sense HAT z językiem programowania blokowego Scratch, my wykorzystamy Pythona do odczytu i prezentacji danych z czujników.
Thonny IDE (zintegrowane środowisko programistyczne) to wygodne narzędzie do programowania w Pythonie na Raspberry Pi, oferujące przydatne funkcje, w tym debugowanie. W graficznym interfejsie użytkownika Raspberry Pi OS znajdziesz go w Menu (ikona maliny w lewym górnym rogu) > Programowanie > Thonny IDE.
Krok 4: Odczyt temperatury
W głównym oknie Thonny IDE wprowadź poniższe linie kodu:
from sense_hat import SenseHatsense = SenseHat()
sense.clear()temp = sense.get_temperature()
print(temp)
Pierwsza linia importuje klasę SenseHat z biblioteki Pythona sense_hat, która jest standardowo instalowana w systemie operacyjnym Raspberry Pi. Następnie ta wartość jest przypisywana do zmiennej 'sense’. Trzecia linia czyści matrycę LED na Sense HAT.
Kolejny krok to pobranie odczytu temperatury i wyświetlenie go w obszarze Shell w Thonny IDE. Odczyt jest domyślnie w stopniach Celsjusza, więc możesz chcieć przekonwertować go na stopnie Fahrenheita:
temp = (sense.get_temperature() * 1.8 + 32)
Odczyt temperatury będzie zawierał kilka cyfr po przecinku. Aby zaokrąglić go do jednego miejsca po przecinku, użyjemy funkcji ’round’:
temp = round(temp, 1)
Funkcja 'sens.get_temperature()’ pobiera dane z czujnika temperatury wbudowanego w czujnik wilgotności. Alternatywnie, temperaturę można odczytać z czujnika ciśnienia za pomocą funkcji 'sens.get_temperature_from_pressure()’, lub obliczyć średnią z obu odczytów.
Krok 5: Wyświetlanie temperatury na Sense HAT
Wyświetlanie pojedynczego odczytu temperatury w konsoli Pythona jest mało interesujące, dlatego lepiej regularnie pobierać nowe odczyty i wyświetlać je na matrycy LED RGB Sense HAT. Użyjemy funkcji 'show_message’ do wyświetlania przewijanej wiadomości tekstowej. Zastosujemy również pętlę 'while: True’, aby co 10 sekund wykonywać nowy odczyt – w tym celu użyjemy funkcji 'sleep’ z biblioteki 'time’.
Poniżej znajduje się pełny kod programu:
from sense_hat import SenseHat
from time import sleepsense = 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)
Po uruchomieniu tego kodu, na matrycy LED zaczną się wyświetlać nowe odczyty temperatury. Możesz sprawdzić, czy odczyty się zmieniają, dmuchając na Sense HAT.
Odczyty temperatury mogą być zakłócone przez ciepło generowane przez procesor Raspberry Pi, który znajduje się tuż pod spodem. Może być konieczne wprowadzenie korekty, aby uzyskać dokładniejsze wyniki. Innym rozwiązaniem jest użycie specjalnej nakładki dystansowej, która podniesie Sense HAT ponad płytkę Raspberry Pi.
Wykorzystanie Raspberry Pi do monitorowania temperatury
Chociaż do pomiaru temperatury można użyć samodzielnego czujnika, Sense HAT znacznie upraszcza proces monitorowania temperatury za pomocą Raspberry Pi. Dodatkowo umożliwia odczyt wielu innych parametrów, takich jak ciśnienie atmosferyczne i wilgotność, które można wyświetlić na matrycy LED.