Pomiar wilgotności powietrza z Raspberry Pi
W tym artykule Blis zaprezentuje czujnik wilgotności powietrza obsługiwany przez Raspberry Pi. Jak można się domyśleć czujnik wykorzystuje interfejs zbliżony do I2C (lecz niezgodny z nim). Na rynku dodatków do Arduino, czy i do Raspberry Pi znajdziemy wiele płytek z czujnikiem wilgotności. Większość z nich nie będzie zbyt precyzyjna w pomiarach, lecz nada się do wielu zastosowań (i będzie tania). Blis potrzebował rozwiązania o możliwie dużej precyzji pomiaru. Znajomość wilgotności powietrza jest ważna nie tylko w np. szklarniach, ale także w serwerowniach, gdzie zbyt suche powietrze może sprzyjać wyładowaniom elektrostatycznym.
Wilgotność powietrza stanowi bardzo ważny parametr zarówno jeśli idzie o samopoczucie człowieka, klimatyzację czy procesy technologiczne. Dokładne sterowanie poziomem wilgotności wymaga jej precyzyjnego pomiaru. Ilość pary jaka może znajdować się w powietrzu silnie zależy od jego temperatury. Dlatego pomiar wilgotności najczęściej wspierany jest pomiarem temperatury.
W tym artykule chciałbym przedstawić wykorzystanie scalonego czujnika wilgotności i temperatury SHT75 firmy Sensiron. Wewnątrz tego układu zintegrowane są czujniki temperatury oraz wilgotności, układy konwersji analogowo cyfrowej, pamięć danych kalibracyjnych oraz układ komunikacji cyfrowej. Czujnik SHT75 charakteryzuje się małym poborem mocy, szerokim zakresem pracy (0-100% RH - wilgotność względna, -40-125oC) i stosunkowo krótkim czasem odpowiedzi. Dokładność pomiaru wilgotności zależy od zakresu i wynosi ~2% od 10-90% RH, a temperatury 1oC.
Minusem opisywanego czujnika wydaje się być cena porównywalna z kosztem samego komputera Raspberry Pi. Rozwiązaniem może być użycie tańszego członka rodziny np. SHT11, który sprawdzi się w większości projektów. Drugą wadą jest sposób komunikacji nie pozwalający na podłączenie więcej czujników do magistrali jak to ma miejsce w przypadku komunikacji I2C.
Podłączenie czujnika SHT75 wymaga dodatkowo tylko jednego rezystora ok 10k. Jeśli planujemy użycie dłuższych kabli, należy ponadto zastosować kondensator 100nF dołączony możliwie blisko czujnika pomiędzy linią V+ i GND.
Osoby posiadające nadmiar wolnego czasu mogą napisać własny kod obsługi czujnika bazując na dokładnej charakterystyce protokołu komunikacyjnego opisanej w karcie katalogowej. Z drugiej strony w internecie dostępny jest gotowy moduł rpiSht1x 1.2. Moduł ten został napisany do współpracy z układami serii SHT1x. Jednak seria SHT7x różni się tylko dokładnością i obudową, nie zaś protokołem komunikacyjnym.
from sht1x.Sht1x import Sht1x # zaimportowanie modułu obsługi czujnika
dataPin = 24 #wybór pinu do którego podpięta jest linia danych
clkPin = 23 # wybór pinu do którego podpięta jest linia zegara
sht75 = Sht1x(dataPin, clkPin, Sht1x.GPIO_BCM)
#utworzenie obiektu czujnika, konfiguracja komunikacji
temperatura = sht75.read_temperature_C() #odczyt pomiaru temperatury
wilgotnosc = sht75.read_humidity() #odczyt pomiaru wilgotnosci
punkt_rosy = sht75.calculate_dew_point(temperatura,wilgotnosc) #obliczenie temperatury punktu rosy
print("Temperatura: {} Wilgotnosc: {} Temperatura punktu rosy: {}".format(temperatura, wilgotnosc, punkt_rosy))
Moduł rpiSht1x oparty jest na module obsługi portu RPi.GPIO. Do poprawnej pracy wymaga uprawnień administratora lub uruchomienia z użyciem sudo. Skutkiem wykonania przykładowego programu będzie wyświetlenie w konsoli wyników pomiarów wilgotności i temperatury. Należy pamiętać, że ich dokładność jest dużo mniejsza niż to co zostanie wyświetlone. Odczytane wyniki zawsze można zapisać do bazy danych czy wyświetlić na stronie www.
pi@raspberrypi ~/sht $ sudo python sht75przyklad.py
Temperatura: 20.59 Wilgotnosc: 56.63798125 Temperatura punktu rosy: 11.6731616281
Tym razem pokazałem jak podłączyć czujnik SHT75 do Raspberry bezpośrednio przez port GPIO. Połączenie czujnika temperatury i wilgotności może być pierwszym krokiem w stronę budowy stacji pogodowej czy kontrolera mikroklimatu pomieszczeń.
Autor: Blis
Comment article