W artykule omówimy czujnik wilgotności i temperatury, dokładnie model Si7021 I2C, zostanie pokazane podłączenie, odczytywanie z niego wilgotności oraz temperatury panującej w aktualnej lokalizacji czujnika.

Spis treści
- Opis czujnika
- Specyfikacja
- Podłączenie
- Pobranie i zaimportowanie biblioteki
- Wykorzystanie przykładu z biblioteki
- Programowanie arduino
Opis czujnika
Czujnik Si7021 wilgotności i temperatury komunikujący się za pomocą magistrali I2C. Wykorzystywany do kontrolowania warunków na zewnątrz i wewnątrz pomieszczeń.
Specyfikacja
zakres pomiaru Temperatury -40 do +125
Pomiar wilgotności 0-100%
Wymiary 13x14mm
Podłączenie
Zaczniemy od podłączenia czujnika do arduino, SDA podłączamy do A5, SCL do A4, GND do GND i vin do zasialania 3V3. Schemat połączenia znajduje się poniżej

Pobieranie i zaimportowanie biblioteki
Bibiliotekę pobieramy z tego linku (link do pobrania bilbioteki SparkFun_Si7021_Humidity_and_Temperature_Sensor), następnie importujemy ją do arduino i gotowe (dla tych co nie wiedzą jak zaimportować bibliotekę do arduino odsyłam tutaj).
Wykorzystanie przykładu z biblioteki
Po zaimportowaniu naszej biblioteki, skorzystamy z jej przykładu, który od razu pozwoli nam wczytywać wartości z naszego czujnika i wyświetli nam temperaturę i wilgotność. Włączamy program Arduino i wybieramy następująco
Plik → Przykłady → SparkFun Si7021 Humidity and Temperature Sensor → SparkFun_Si7021_Breakout_Example

Po jego wybraniu otworzy nam się nowe okno z napisanym już kodem, wgrajmy go do naszego Arduino i zobaczmy co się wydarzy. Aby zobaczyć efekty musimy otworzyć monitor portu szeregowego, po jego otwarciu powinniśmy ujrzeć następujące wyniki.

Oczywiście widzimy, że stopnie są podane w Fahrenheitach, aby zmienić je na Celsjusza, musimy zmienić funkcję i zamiast literki F podmienić na C, aby wszystko się zgadzało, całość zrobimy w prosty sposób.

W pierwszej podkreślonej linijce usuwamy F i powinniśmy uzyskać sensor.getTemp(), natomiast podkreśloną literkę F usuwamy i wpisujemy C, po poprawkach wgrywamy program na arduino i teraz temperatura powinna być w dobrze nam znanych Celsjuszach.
Programowanie arduino
Teraz napiszemy samodzielnie program który będzie nam zwracał temperaturę oraz wilgotność, przy okazji zostanie wytłumaczone jego działanie.
Zaczniemy od importowania potrzebnych bibliotek
#include "SparkFun_Si7021_Breakout_Library.h" #include <Wire.h>
Następnie utworzymy obiekt którym będziemy się posługiwać, dodatkowo w funkcji setup rozpoczniemy transmisję na porcie szeregowym, aby później móc wyświetlić dane. Zainicjujemy również działanie czujnika przy pomocy czujnik.begin().
Weather czujnik;//stworzenie obiektu czujnik
void setup() {
Serial.begin(9600);//rozpoczęcie transmisji na porcie szeregowym
czujnik.begin();//inicjacja czujnika
}Tworzymy teraz zmienne które przydadzą nam się do przechowania temperatury, oraz wilgotnosci.
float wilgotnosc = 0;//utworzenie zmiennej wilgotność float temperatura = 0;//utworzenie zmiennej temperatura
W funkcji loop zajmiemy się przypisaniem do zmiennych danych z czujnika przy pomocy funkcji getRH i getTemp, pozwolą nam na pobranie temperatury i wilgotności. Po pobraniu i wczytaniu do zmiennych, możemy wyświetlić je na ekranie.
void loop() {
wilgotnosc = czujnik.getRH();//wczytanie do zmiennej procentu wilgotności przy pomocy funkcji getRH()
temperatura = czujnik.getTemp();//wczytanie do zmiennej stopni Celsjusza przy pomocy funkcji getTemp()
//wypisanie w monitorze portu szeregowego wilgotności
Serial.print("Wilgotnosc: ");
Serial.print(wilgotnosc);
Serial.print(" %");
Serial.print(" | ");
//wypisanie w monitorze portu szeregowego temperatury
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
}Po wgraniu tego programu wyniki z czujnika powinniśmy ujrzeć w monitorze portu szeregowego, tak jak mogliśmy to zobaczyć w wcześniej prezentowanym przykładzie.







