Serwisy partnerskie:
Close icon
Serwisy partnerskie

Stacja pogodowa Arduino wykorzystująca DHT11

Odczyt na wyświetlaczu temperatury i wilgotności otoczenia z zastosowaniem czujnika DHT11 lub DHT22 i łatwej w użyciu platformy mikrokontrolera Arduino to cel tego projektu. Zastosujemy moduł wyświetlacza LCD 16×2 do wyświetlania odczytów temperatury i wilgotności zebranych z otoczenia za pomocą czujnika temperatury i wilgotności DHT11.
Article Image

Wykaz komponentów niezbędnych do budowy stacji pogody

  • Czujnik temperatury i wilgotności DHT11
  • Wyśwwietlacz LCD 16×2n
  • Arduino Mega
  • Płytka prototypowa
  • Zworki
  • Rezystory

DHT11 jest tanim czujnikiem temperatury i wilgotności działającym w oparciu o protokół 1-wire, kosztuje około 2$.

Czujnik temperatury i wilgotności DHT11 (DHT11 Tempereature and Humidity Sensor)

Czujnik ten posiada trzy piny, pierwszy pin do zasilania VCC, środkowy pin do wyjścia sygnału lub DATA, a ostatni pin to GND.

Pomimo tego, że układ DHT11 nie jest najszybszym czujnikiem temperatury i wilgotności, ma on dość dużą dokładność, ±5% dla odczytów wilgotności i ±2% dla odczytów temperatury;

Ekran LCD Keypad shield sprawia, że podłączenie modułu LCD 16×2 do dowolnego systemu jest dość proste, ponieważ po prostu podłącza się go do Arduino Mega, które jest używane w tym projekcie.

Ekran LCD Keypad shield

Zwykły moduł LCD 16×2 (bez shielda) może być również użyty. Wystarczy upewnić się, że piny są podłączone zgodnie z opisem w kodzie i schemacie poniżej.

Podłącz LCD i czujnik DHT11 jak pokazano powyżej

Połączenie elementów jest bardzo proste, jeśli używasz shielda klawiatury LCD. Wszystko co musisz zrobić to podłączyć LCD jak pokazano poniżej i podłączyć DHT jak opisano na schemacie powyżej.

Ekran LCD zamontowany na Arduino Mega

Dla lepszego zrozumienia połączeń, poniżej znajduje się zestawienie wszystkich podłączonych komponentów.

Połączenie wyświetlacza LCD z Arduino Mega
LCD
Arduino
PIN 1(VSS)
GND
PIN 2(VDD)
5V
PIN 3(Vo)
środkowy pin potencjometru
PIN 4(RS)
D8
PIN 5(RW)
GND
PIN 6(E)
D9
PIN 7-10
GND LUB FLOAT
PIN 11
D4
PIN 12
D5
PIN 13
D6
PIN 14
D7
PIN 15
5V
PIN 16
GND

Zauważ, że pin RW jest podłączony do GND, ponieważ będziemy pisać tylko do wyświetlacza LCD, a nie odczytywać z niego, aby to było możliwe pin RW musi być podciągnięty do LOW.

Podłączenie DHT11 z Arduino

Podłączenie pinów  DHT11 do Arduino pokazano poniżej. Wszystkie czujniki DHT11 mają trzy główne piny funkcyjne. Typy DHT z czterema pinami zawsze mają pin void, który nigdy nie jest podłączony do niczego.

DHT11
Arduino
VCC
5V
DATA
D22
GND
GND

Mając schemat za sobą, przejdźmy do kodu.

Kod stacji pogody do Arduino

Zanim zaczniemy, musimy pobrać bibliotekę DHT oraz ustawić jej typ. Potrzebna biblioteka jest dostępna na githubie. Należy ją pobrać i rozpakować do folderu Arduino libraries, a następnie otworzyć Arduino IDE. W tym miejscu warto zaznaczyć, że biblioteka nie będzie widoczna dla instancji Arduino IDE, która była uruchomiona przed instalacją, po zainstalowaniu biblioteki należy ponownie uruchomić Arduino IDE.

Mając zainstalowaną bibliotekę, możemy przejść do analizy kodu:

Pierwszą rzeczą, którą należy zrobić, jest włączenie wszystkich zależności, których kod potrzebuje do poprawnego działania bibliotek w tym przypadku.

//written by Nick Koumaris
//info@educ8s.tv
//educ8s.tv
#include "DHT.h"
#include <LiquidCrystal.h>

Następnie definiujemy pin, do którego podłączony jest pin DHT11 DATA, a także uwzględniamy typ używanego przez nas czujnika DHT, którym jest DHT11.

#define DHTPIN 22     // what pin we're connected to

#define DHTTYPE DHT11

W linii 4 tworzymy obiekt DHT, a następnie podajemy numer pinu (DHTPIN) oraz typ czujnika (DHTTYPE).

DHT dht(DHTPIN, DHTTYPE);

W następnej linii tworzymy obiekt LCD, podając numery pinów Arduino, do których podłączone są nasze piny LCD w następującym formacie lcd (RS, E, D4, D5, D6, D7).

LiquidCrystal lcd(8,9,4,5,6,7);

Po wykonaniu tych czynności, jesteśmy gotowi do przejścia do funkcji setup.

W funkcji setup, wywołujemy metodę LCD begin, przekazując rozmiar LCD, który jest 16×2. Następnie wypisujemy komunikat informujący, że urządzenie rozpoczęło odczytywanie danych z czujnika w pierwszej linii wyświetlacza LCD, po czym wywołujemy metodę DHT begin.

void setup(void) {
  lcd.begin(16, 2);
  lcd.print("Reading sensor");
  dht.begin();
}

To wszystko jeśli chodzi o funkcję setup().

Przechodząc do funkcji loop(), tworzymy dwie zmienne typu float, które będą przechowywały wartość temperatury i wilgotności, nadajemy im opóźnienie dwóch sekund po wczytaniu do nich wartości, a następnie czyścimy wyświetlacz LCD.

void loop() {
  
  float temperature, humidity;
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  delay(2000); 
 lcd.clear();

Następnie tworzymy dwie tablice znaków, obie o rozmiarze sześć, po czym używamy funkcji dtostrf do konwersji wartości temperatury i wilgotności z typu float na string, a następnie wypisujemy je na LCD. Zauważ, że jawne rzutowanie na typ użyte w funkcji lcd.print() ((char)223) jest użyte do wypisania symbolu stopnia na wyświetlaczu.

char tempF[6]; 
 char humF[6];
 dtostrf(temperature, 5, 1, tempF);
 dtostrf(humidity, 2, 0, humF);

 lcd.print("T:"); 
 lcd.print(tempF);
 lcd.print((char)223);
 lcd.print("C ");
 lcd.print("H: ");
 lcd.print(humF);
 lcd.print("%");
}

To tyle jeśli chodzi o pętlę i koniec kodu.

więc tutaj jest kompletny kod:

//written by Nick Koumaris
//info@educ8s.tv
//educ8s.tv

#include "DHT.h"
#include <LiquidCrystal.h>


#define DHTPIN 22     // what pin we're connected to

#define DHTTYPE DHT11   

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(8,9,4,5,6,7); 

void setup(void) {
  lcd.begin(16, 2);
  lcd.print("Reading sensor");
  dht.begin();
}

void loop() {
  
  float temperature, humidity;

  humidity = dht.readHumidity();
  temperature = dht.readTemperature();
  delay(2000); 

 lcd.clear();

 char tempF[6]; 
 char humF[6];
 dtostrf(temperature, 5, 1, tempF);
 dtostrf(humidity, 2, 0, humF);

 lcd.print("T:"); 
 lcd.print(tempF);
 lcd.print((char)223);
 lcd.print("C ");
 lcd.print("H: ");
 lcd.print(humF);
 lcd.print("%");
}

Zapisz swój kod, podłącz Mega do komputera i upewnij się, że w menu narzędzi wybrana płytka to "Arduino/Genuino Mega lub Mega 2560", a także upewnij się, że wybrany jest właściwy port COM. Po zakończeniu kliknij "prześlij" i powinieneś mieć coś takiego jak na zdjęciu tytułowym.

Wykaz elementów (wariant z płytką stykową)
Ilość
Symbol
Nazwa/opis/gdzie kupić
1
 
DHT11

 

Wykaz elementów (wariant z modułem)
Ilość
Symbol
Nazwa/opis/gdzie kupić
1
 
DHT11
Galeria
Wideo
Do pobrania
Download icon Program dla Arduino Mega - stacja pogody na DHT11

Artykuł ARDUINO WEATHER STATION USING DHT11 opracowano w wersji polskiej na podstawie współpracy z portalem www.electronics-lab.com.

Tematyka materiału: DHT11, Arduino Mega, LCD
AUTOR
Źródło
www.electronics-lab.com
Udostępnij
UK Logo