ESP32 to zaawansowana płytka mikrokontrolera, która może uruchamiać wiele instrukcji w celu generowania danych wyjściowych. Ekran OLED służy do wyświetlania różnego rodzaju danych. Za pomocą ESP32 z czujnikiem DHT11 możemy dokonywać odczytów temperatury i wilgotności. Wszystkie te dane można przedstawić na wyświetlaczu OLED. Ten samouczek obejmuje wszystkie kroki potrzebne do połączenia tych czujników z ESP32.
Ten samouczek obejmuje następujące treści:
1: Wprowadzenie do czujnika DHT11
3: moduł wyświetlacza OLED z ESP32
4: Instalowanie wymaganych bibliotek
4.1: Biblioteka Arduino dla czujnika DHT
4.2: Biblioteka Arduino dla wyświetlacza OLED
5: Połączenie ESP32 z czujnikiem DHT11
1: Wprowadzenie do czujnika DHT11
DHT11 jest jednym z powszechnie używanych czujników do monitorowania temperatury i wilgotności w społeczności elektronicznej. Dokładniej podaje temperaturę i wilgotność względną. Wyprowadza skalibrowany sygnał cyfrowy, który wypluwa na dwa różne odczyty temperatury i wilgotności.
Wykorzystuje cyfrową technikę akwizycji sygnału, która zapewnia niezawodność i stabilność. Czujnik DHT11 zawiera element rezystancyjny do pomiaru wilgotności oraz element do pomiaru temperatury NTC. Oba są zintegrowane z 8-bitowym, wysoce wydajnym mikrokontrolerem, który oferuje szybką reakcję, zdolność przeciwzakłóceniową i opłacalność.
Oto kilka głównych specyfikacji technicznych DHT11:
-
- Czujnik DHT11 pracuje przy napięciu od 5V do 5,5V.
- Prąd roboczy podczas pomiaru wynosi 0,3mA, aw czasie czuwania 60uA.
- Wyprowadza dane szeregowe w sygnale cyfrowym.
- Zakres temperatur czujnika DHT11 od 0°C do 50°C.
- Zakres wilgotności: od 20% do 90%.
- Dokładność ±1°C dla pomiaru temperatury i ±1% dla odczytów wilgotności względnej.
Skoro już omówiliśmy podstawowe wprowadzenie do czujnika DHT11, przejdźmy teraz do układu pinów DHT11.
2: Pinout czujnika DHT11
W większości przypadków czujnik DHT11 występuje w dwóch różnych konfiguracjach pinów. Czujnik DHT11, który występuje w konfiguracji 4-pinowej, ma 3 piny niedziałające lub oznaczone jako brak połączenia.
3-stykowy moduł czujnika DHT11 jest dostępny z trzema stykami, które obejmują zasilanie, GND i pin danych.
2.1: 3-pinowy czujnik DHT11
Podany obraz przedstawia konfiguracje 3-pinowe czujnika DHT11.
Te trzy piny to:
1. | Dane | Wyjściowa temperatura i wilgotność w danych szeregowych |
2. | Vcc | Moc wejściowa 3,5 V do 5,5 V |
3. | GND | GND obwodu |
2.2: 4-pinowy czujnik DHT11
Poniższy obraz ilustruje 4-pinowy moduł czujnika DHT11:
Te 4 piny obejmują:
1. | Vcc | Moc wejściowa 3,5 V do 5,5 V |
2. | Dane | Wyjściowa temperatura i wilgotność w danych szeregowych |
3. | NC | Brak połączenia lub nieużywany |
cztery. | GND | GND obwodu |
3: moduł wyświetlacza OLED z ESP32
Wyświetlacz OLED jest wyposażony głównie w dwa różne protokoły komunikacyjne. Dwa protokoły to I2C i SPI. Szeregowy interfejs urządzeń peryferyjnych (SPI) jest generalnie szybszy niż I2C, ale woleliśmy I2C niż protokół SPI, ponieważ wymagał mniejszej liczby pinów.
Poniższy obraz ilustruje schemat połączeń ESP32 z wyświetlaczem OLED 128×64 pikseli (0,96”).
Poniżej znajduje się tabela połączeń:
Po połączeniu ESP32 z wyświetlaczem OLED następnym krokiem na liście jest instalacja wszystkich wymaganych bibliotek do programowania ESP32 przy użyciu Arduino IDE.
4: Instalowanie wymaganych bibliotek
Tutaj zamierzamy połączyć dwa różne czujniki z ESP32, więc oba wymagają oddzielnych bibliotek do działania. Teraz zainstalujemy biblioteki dla wyświetlacza DHT11 i OLED.
4.1: Biblioteka Arduino dla czujnika DHT
Otwórz Arduino IDE, przejdź do: Szkic>Dołącz bibliotekę>Zarządzaj bibliotekami
Alternatywnie możemy również otworzyć menedżera bibliotek z bocznego przycisku na interfejsie Arduino IDE.
Wyszukaj bibliotekę DHT i zainstaluj najnowszą zaktualizowaną wersję. Biblioteka DHT pomoże w odczytaniu danych z czujnika.
Po zainstalowaniu biblioteki DHT następnie musimy zainstalować plik ujednolicona biblioteka czujników przez Adafruita.
4.2: Biblioteka Arduino dla wyświetlacza OLED
W Arduino IDE dostępnych jest wiele bibliotek do programowania ESP32 z wyświetlaczem OLED. Tutaj będziemy korzystać z dwóch bibliotek firmy Adafruit: SSD1306 i biblioteki GFX.
Otwórz IDE i kliknij Menedżer bibliotek i wyszukaj bibliotekę OLED SSD1306. Zainstaluj bibliotekę SSD1306 firmy Adafruit z paska wyszukiwania.
Alternatywnie można również przejść do: Szkic>Dołącz bibliotekę>Zarządzaj bibliotekami
Następną biblioteką, którą musimy zainstalować, jest GFX biblioteka firmy Adafruit.
Zainstalowaliśmy biblioteki zarówno dla wyświetlacza OLED, jak i czujnika DHT11. Teraz możemy łatwo połączyć oba z ESP32.
5: Połączenie ESP32 z czujnikiem DHT11 i OLED
Do połączenia ESP32 z czujnikiem DHT11 potrzebujemy cyfrowego pinu do odczytu danych z czujnika, a do zasilania czujnika DHT11 możemy użyć pinu 3V3 lub pinu Vin ESP32.
W przypadku wyświetlacza OLED zastosowane zostaną piny I2C SDA i SCL. Do zasilania możemy użyć pinu Vin lub 3V3 ESP32.
5.1: Schemat
Na podanym obrazku widać schemat ideowy ESP32 z DHT11, a do wyjścia wykorzystano ekran OLED. Ten obraz przedstawia 3-pinowy moduł czujnika współpracujący z ESP32. Pamiętaj o podłączeniu rezystora podciągającego 10kΩ.
Podobnie można podłączyć 4-pinowy DHT11, jedyną różnicą jest tutaj 3-pinowy, który jest bezużyteczny lub określany jako Brak połączenia. Styk danych znajduje się na styku 2 czujnika.
Wyświetlacz OLED jest podłączony za pomocą pinów I2C SDA i SCL odpowiednio w D21 i D22.
5.2: Kod
Połącz ESP32 z komputerem i otwórz Arduino IDE. Wgraj podany kod na płytkę ESP32.
#include#include
#include
#include
#include
#define SCREEN_WIDTH 128 /*Szerokość ekranu OLED 128 pikseli*/
#define SCREEN_HEIGHT 64 /*Wysokość ekranu OLED 64 piksele*/
Wyświetlacz Adafruit_SSD1306 ( SCREEN_WIDTH, SCREEN_HEIGHT, & Drut, - 1 ) ; /* Inicjalizacja wyświetlacza SSD1306 I2C */
#define DHTPIN 4 /*Styk sygnałowy dla czujnika DHT11*/
#define DHTTYPE DHT11
DHT dht ( DHTPIN, DHTTYPE ) ;
unieważnić konfigurację ( ) {
Serial.początek ( 115200 ) ;
dht.począć ( ) ;
jeśli ( ! wyświetl.rozpocznij ( SSD1306_SWITCHCAPVCC, 0x3C ) ) { /* Adres I2C pod adresem który OLED jest podłączony */
Serial.println ( F ( „Alokacja SSD1306 nie powiodła się” ) ) ;
dla ( ;; ) ;
}
opóźnienie ( 2000 ) ;
wyświetl.wyczyśćWyświetl ( ) ;
display.setTextColor ( BIAŁY ) ; /* Kolor tekstu wyjściowego biały */
}
pusta pętla ( ) {
opóźnienie ( 5000 ) ;
float t = dht.odczyttemperatury ( ) ; /* czytać temperatura */
float h = dht.readHumidity ( ) ; /* czytać wilgotność */
jeśli ( isan ( h ) || isan ( t ) ) {
Serial.println ( „Błąd odczytu z czujnika DHT!” ) ;
}
wyświetl.wyczyśćWyświetl ( ) ; /* jasny Wyświetlacz OLED przed wyświetleniem odczytu */
display.setTextSize ( 1 ) ; /* Czcionka tekstu OLED rozmiar */
display.setCursor ( 0 , 0 ) ;
wyświetl.drukuj ( 'Temperatura: ' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , 10 ) ;
wyświetl.drukuj ( t ) ; /* temperatura druku w Celsjusz */
wyświetl.drukuj ( ' ' ) ;
display.setTextSize ( 1 ) ;
wyświetlacz.cp437 ( prawdziwe ) ;
wyświetl.napisz ( 167 ) ;
display.setTextSize ( 2 ) ;
wyświetl.drukuj ( 'C' ) ;
display.setTextSize ( 1 ) ;
display.setCursor ( 0 , 35 ) ;
wyświetl.drukuj ( 'Wilgotność: ' ) ;
display.setTextSize ( 2 ) ;
display.setCursor ( 0 , Cztery pięć ) ;
wyświetl.wydrukuj ( h ) ; /* drukuje procent wilgotności */
wyświetl.drukuj ( '%' ) ;
wyświetlacz. wyświetlacz ( ) ;
}
Kod rozpoczął się od dołączenia niezbędnych bibliotek dla czujników OLED i DHT11. Następnie definiowane są wymiary wyświetlacza OLED. Następnie określany jest typ czujnika DHT w przypadku, gdy używasz DHT22, wymień go odpowiednio.
W części ustawień inicjalizowany jest czujnik DHT i wyświetlacz OLED. Ekran OLED jest podłączony pod adresem I2C 0x3C. W przypadku, gdy ktoś chce sprawdzić adres I2C, wgraj podany w tym kod artykuł .
Wartości temperatury i wilgotności są przechowywane wewnątrz zmiennej typu float t oraz h odpowiednio. Następnie obie te wartości są drukowane na wyświetlaczu OLED.
5.3: Wyjście
Na wyjściu możemy zobaczyć mierzoną w czasie rzeczywistym temperaturę i wilgotność wyświetlaną na ekranie OLED.
Pomyślnie zakończyliśmy interfejs ESP32 z czujnikiem DHT11 i ekranem OLED.
Wniosek
Wyświetlacze OLED z ESP32 mogą wyświetlać wiele danych odczytywanych za pomocą zewnętrznych czujników. W tym artykule opisano wszystkie kroki, aby połączyć ESP32 z czujnikiem DHT11 w celu pomiaru temperatury i wilgotności w pomieszczeniu. Następnie wszystkie odczytane dane są wyświetlane na module wyświetlacza I2C OLED.