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.