Postoji nekoliko metoda za praćenje temperature okoline pomoću Raspberry Pi računara sa jednom pločicom, što je posebno korisno prilikom kreiranja meteorološke stanice. Umesto korišćenja spoljnih senzora povezanih na GPIO pinove Raspberry Pi-a, u ovom tekstu ćemo objasniti kako pratiti temperaturu koristeći Raspberry Pi opremljen Sense HAT-om.
Šta je Sense HAT?
Kredit za sliku: Raspberry Pi
Sense HAT je zvanična dodatna ploča (Hardware Attached on Top) koju je dizajnirala i proizvela kompanija Raspberry Pi. Prvobitno je kreirana za upotrebu od strane astronauta na Međunarodnoj svemirskoj stanici. Od 2015. godine, dva Raspberry Pi računara sa Sense HAT-om korišćena su u naučnim eksperimentima koje su osmislili učenici u okviru takmičenja Astro Pi. Ove dve jedinice su kasnije zamenjene unapređenim verzijama baziranim na Raspberry Pi 4, opremljenim kamerom visokog kvaliteta.
Kredit za sliku: Raspberry Pi
Standardna Sense HAT ploča, iako nema specijalno srebrno kućište dizajnirano za upotrebu u svemiru, ima istu funkcionalnost. Kompatibilna je sa bilo kojim Raspberry Pi modelom koji ima 40-pinski GPIO header. Poseduje ugrađene senzore za praćenje okoline i detekciju sopstvene orijentacije i kretanja. Dodatno, ima 8×8 RGB LED matricu za prikaz teksta, podataka i slika, kao i mini petosmerni džojstik.
Kompletan spisak senzorskih mogućnosti Sense HAT-a je sledeći:
- Vlažnost: STMmicro HTS221 senzor sa opsegom relativne vlažnosti od 0 do 100%, plus senzor temperature od 0°C do 65°C (± 2°C).
- Barometarski pritisak: STMmicro LPS25HB senzor sa opsegom od 260 do 1260 hPa, plus senzor temperature od 15°C do 40°C (± 0,5°C).
- Temperatura: Može se očitavati sa senzora vlažnosti ili pritiska, ili uzimanjem proseka oba očitavanja.
- Žiroskop: STMmicro LSM9DS1 IMU može meriti rotaciju Sense HAT-a u odnosu na površinu Zemlje.
- Akcelerometar: Još jedna funkcija IMU-a, koja meri silu ubrzanja u različitim pravcima.
- Magnetometar: Očitavanjem magnetnog polja Zemlje, IMU određuje smer magnetnog severa, što daje očitavanje kompasa.
Sada kada razumete šta ovaj višenamenski Raspberry Pi HAT može da uradi, vreme je da započnete projekat.
Korak 1: Montirajte Sense HAT
Pre povezivanja Sense HAT-a, uverite se da je vaš Raspberry Pi isključen sa napajanja. Zatim pažljivo postavite Sense HAT (sa pripadajućim crnim produžnim headerom) na 40-pinski GPIO header Raspberry Pi-a, tako da Sense HAT ploča bude iznad Raspberry Pi ploče. Proverite da li su svi pinovi pravilno poravnati i da su oba reda povezana. Takođe možete koristiti držače sa šrafovima za dodatnu stabilnost.
Možete koristiti bilo koji standardni Raspberry Pi model sa 40-pinskim GPIO headerom. Međutim, jedno od ograničenja Raspberry Pi 400 je da se njegov GPIO header nalazi na zadnjoj strani integrisane tastature, što znači da će Sense HAT biti okrenut unazad. U tom slučaju, možda ćete želeti da koristite GPIO produžni kabl za povezivanje.
Korak 2: Podesite Raspberry Pi
Kao i za svaki drugi projekat, priključite USB tastaturu i miša, a zatim povežite Raspberry Pi sa monitorom ili televizorom. Takođe bi trebalo da imate microSD karticu sa instaliranim standardnim Raspberry Pi OS-om. Ako to niste uradili, pogledajte uputstvo o instalaciji operativnog sistema na Raspberry Pi. Nakon toga ste spremni da uključite napajanje.
Alternativno, možete koristiti Raspberry Pi sa Sense HAT-om u „headless“ režimu, bez priključenog monitora, i povezati se na njega daljinski putem SSH-a sa drugog računara ili uređaja. Ako to uradite, nećete moći da koristite Thonny Python IDE, ali ćete i dalje moći da uređujete programe pomoću nano tekst editora i pokrećete ih iz komandne linije.
Firmver za Sense HAT bi trebalo da bude instaliran po defaultu. Da biste proverili, otvorite terminal i unesite:
sudo apt install sense-hat
Ako je paket tek instaliran, restartujte Raspberry Pi:
sudo reboot
Korak 3: Počnite sa programiranjem u Pythonu
Iako možete koristiti Sense HAT sa Raspberry Pi-jem i blokovskim programskim jezikom Scratch, mi ćemo koristiti Python za očitavanje i prikazivanje senzorskih vrednosti.
Thonny IDE (integrisano razvojno okruženje) je pogodan za Python programiranje na Raspberry Pi-ju, jer ima dosta funkcija, uključujući i korisne alate za debagovanje. U grafičkom korisničkom interfejsu Raspberry Pi OS-a, idite na Menu (ikona maline u gornjem levom uglu) > Programming > Thonny IDE da biste ga pokrenuli.
Korak 4: Očitajte temperaturu
U glavnom prozoru Thonny IDE-a unesite sledeće linije koda:
from sense_hat import SenseHat sense = SenseHat() sense.clear() temp = sense.get_temperature() print(temp)
Prva linija uvozi klasu SenseHat iz Python biblioteke sense_hat (koja je već instalirana u Raspberry Pi OS-u). Zatim se ona dodeljuje promenljivoj sense. Treća linija briše LED matricu Sense HAT-a.
Potom, očitavamo vrednost temperature i štampamo je u Shell području Thonny IDE-a. Vrednost je u Celzijusima, pa je možete konvertovati u Farenhajte:
temp = (sense.get_temperature() * 1.8 + 32)
Očitavanje senzora temperature imaće nekoliko decimalnih mesta. Zato ćemo koristiti funkciju round da zaokružimo na jedno decimalno mesto:
temp = round(temp, 1)
Funkcija sense.get_temperature() očitava temperaturu sa senzora ugrađenog u senzor vlažnosti. Alternativno, možete očitati temperaturu sa senzora pritiska koristeći sense.get_temperature_from_pressure() ili uzeti obe vrednosti i izračunati srednju vrednost (sabiranjem i deljenjem sa dva).
Korak 5: Prikažite temperaturu na Sense HAT-u
Štampanje jednog očitavanja temperature u Python Shell-u nije baš praktično. Umesto toga, očitavaćemo nove vrednosti redovno i prikazivati ih na RGB LED matrici Sense HAT-a. Da bismo prikazali tekstualnu poruku koja se pomera, koristićemo funkciju show_message. Takođe ćemo koristiti beskonačnu petlju (while True) da bismo kontinuirano očitavali nove vrednosti svakih 10 sekundi, za šta koristimo funkciju sleep iz biblioteke time.
Evo kompletnog programa:
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)
Pokrenite ovaj kod i videćete kako se svako novo očitavanje temperature pomera po LED matrici. Pokušajte da dunete na Sense HAT da vidite da li se temperatura menja.
Na očitavanje temperature može uticati toplota koju generiše CPU Raspberry Pi-a, pa možda treba izvršiti određena podešavanja da bi se dobila tačnija vrednost. Drugo rešenje je korišćenje „stacking header“-a kako biste podigli Sense HAT iznad Raspberry Pi-a.
Koristite Raspberry Pi za praćenje temperature
Iako biste umesto toga mogli koristiti samostalni senzor temperature, Sense HAT olakšava praćenje temperature pomoću vašeg Raspberry Pi-a. Takođe, možete ga koristiti za očitavanje drugih senzorskih vrednosti, kao što su barometarski pritisak i relativna vlažnost, i prikazati ih na LED matrici.