Bacaan Suhu dan Kelembapan ESP32 DHT11 dalam Paparan OLED menggunakan Arduino IDE

Bacaan Suhu Dan Kelembapan Esp32 Dht11 Dalam Paparan Oled Menggunakan Arduino Ide



ESP32 ialah papan mikropengawal termaju yang boleh menjalankan berbilang arahan untuk menjana output. Skrin OLED digunakan untuk memaparkan pelbagai jenis data. Menggunakan ESP32 dengan penderia DHT11 kita boleh mengambil bacaan suhu dan kelembapan. Semua data ini boleh diwakili melalui paparan OLED. Tutorial ini merangkumi semua langkah yang diperlukan untuk antara muka penderia ini dengan ESP32.

Tutorial ini merangkumi kandungan berikut:







1: Pengenalan kepada Sensor DHT11



2: Pinout Sensor DHT11



2.1: Penderia DHT11 3 Pin





2.2: Penderia DHT11 4 Pin

3: Modul Paparan OLED dengan ESP32



4: Memasang Perpustakaan yang Diperlukan

4.1: Perpustakaan Arduino untuk Penderia DHT

4.2: Perpustakaan Arduino untuk Paparan OLED

5: Mengantaramuka ESP32 dengan Penderia DHT11

5.1: Skema

5.2: Kod

5.3: Output

1: Pengenalan kepada Sensor DHT11

DHT11 ialah salah satu penderia pemantauan suhu dan kelembapan yang biasa digunakan dalam komuniti elektronik. Ia lebih tepat dalam memberikan suhu dan kelembapan relatif. Ia mengeluarkan isyarat digital yang ditentukur yang memuntahkan ke dalam dua bacaan suhu dan kelembapan yang berbeza.

Ia menggunakan teknik pemerolehan isyarat digital yang memberikan kebolehpercayaan dan kestabilan. Penderia DHT11 mengandungi komponen pengukur kelembapan jenis perintang dan mempunyai komponen pengukur suhu NTC. Kedua-dua ini disepadukan kepada mikropengawal 8-bit yang sangat cekap yang menawarkan tindak balas pantas, keupayaan anti-gangguan dan keberkesanan kos.

Berikut ialah beberapa spesifikasi teknikal utama DHT11:

    • Sensor DHT11 beroperasi pada voltan 5V hingga 5.5V.
    • Arus kendalian semasa mengukur ialah 0.3mA dan semasa masa siap sedia ialah 60uA.
    • Ia mengeluarkan data bersiri dalam isyarat digital.
    • Suhu penderia DHT11 berjulat dari 0°C hingga 50°C.
    • Julat Kelembapan: 20% hingga 90%.
    • Ketepatan ±1°C untuk pengukuran suhu dan ±1% untuk bacaan kelembapan relatif.

Memandangkan kita telah membincangkan pengenalan asas kepada penderia DHT11 sekarang mari kita bergerak ke arah pinout DHT11.

2: Pinout Sensor DHT11

Selalunya sensor DHT11 datang dalam dua konfigurasi pin berbeza. Sensor DHT11 yang datang dalam konfigurasi 4 pin mempunyai 3 pin tidak berfungsi atau dilabelkan sebagai tiada sambungan.

Modul sensor 3 pin DHT11 didatangkan dalam tiga pin yang termasuk kuasa, GND dan pin data.

2.1: Penderia DHT11 3 Pin

Imej yang diberikan menunjukkan 3 konfigurasi pin bagi penderia DHT11.


Tiga pin ini ialah:

1. Data Suhu keluaran dan kelembapan dalam data bersiri
2. Vcc Kuasa input 3.5V hingga 5.5V
3. GND GND litar

2.2: Penderia DHT11 4 Pin

Imej berikut menggambarkan modul sensor DHT11 4 pin:


4 pin ini termasuk:

1. Vcc Kuasa input 3.5V hingga 5.5V
2. Data Suhu keluaran dan kelembapan dalam data bersiri
3. NC Tiada sambungan atau tidak digunakan
Empat. GND GND litar

3: Modul Paparan OLED dengan ESP32

Paparan OLED terutamanya datang dengan dua protokol komunikasi yang berbeza. Kedua-dua protokol tersebut ialah I2C dan SPI. Antara muka persisian bersiri (SPI) biasanya lebih pantas daripada I2C, tetapi kami lebih suka I2C berbanding protokol SPI kerana ia memerlukan bilangan pin yang lebih kecil.

Imej berikut menggambarkan gambar rajah sambungan ESP32 dengan paparan OLED 128×64 piksel (0.96’’).


Di bawah ialah jadual sambungan:


Setelah ESP32 disambungkan dengan paparan OLED, langkah seterusnya dalam senarai ialah memasang semua perpustakaan yang diperlukan untuk pengaturcaraan ESP32 menggunakan Arduino IDE.

4: Memasang Perpustakaan yang Diperlukan

Di sini kita akan antara muka dua sensor berbeza dengan ESP32 jadi kedua-duanya memerlukan perpustakaan berasingan untuk beroperasi. Sekarang kami akan memasang perpustakaan untuk paparan DHT11 dan OLED.

4.1: Perpustakaan Arduino untuk Penderia DHT

Buka Arduino IDE, pergi ke: Lakaran>Sertakan Perpustakaan>Urus Perpustakaan

Sebagai alternatif, kami juga boleh membuka pengurus perpustakaan dari butang sisi pada antara muka IDE Arduino.

Cari pustaka DHT dan pasang versi terkini yang dikemas kini. Pustaka DHT akan membantu membaca data penderia.


Selepas memasang perpustakaan DHT seterusnya kita perlu memasang a perpustakaan sensor bersatu oleh Adafruit.

4.2: Perpustakaan Arduino untuk Paparan OLED

Pelbagai perpustakaan tersedia dalam Arduino IDE untuk memprogram ESP32 dengan paparan OLED. Di sini kita akan menggunakan dua perpustakaan daripada Adafruit: perpustakaan SSD1306 dan GFX.

Buka IDE dan klik Pengurus Perpustakaan dan cari perpustakaan OLED SSD1306. Pasang perpustakaan SSD1306 oleh Adafruit dari bar carian.

Sebagai alternatif, seseorang juga boleh pergi ke: Lakaran>Sertakan Perpustakaan>Urus Perpustakaan


Perpustakaan seterusnya yang perlu kita pasang ialah GFX perpustakaan oleh Adafruit.


Kami telah memasang perpustakaan untuk paparan OLED dan sensor DHT11. Kini kita boleh dengan mudah antara muka kedua-duanya dengan ESP32.

5: Mengantaramuka ESP32 dengan Penderia DHT11 dan OLED

Untuk antara muka ESP32 dengan penderia DHT11 kami memerlukan pin digital untuk membaca data penderia dan untuk menggerakkan penderia DHT11 kami boleh menggunakan pin 3V3 atau pin Vin ESP32.

Untuk paparan OLED, pin I2C SDA dan SCL akan digunakan. Untuk penjanaan kita boleh menggunakan Vin atau pin 3V3 ESP32.

5.1: Skema

Dalam imej yang diberikan kita boleh melihat gambarajah skema ESP32 dengan DHT11 dan untuk output skrin OLED digunakan. Imej ini mewakili modul sensor 3-pin yang berantaramuka dengan ESP32. Ingat untuk menyambung perintang tarik ke atas 10kΩ.


Begitu juga, 4 pin DHT11 juga boleh disambungkan, cuma bezanya di sini ialah 3 pin yang tiada guna atau diistilahkan sebagai Tiada sambungan. Pin data berada pada pin 2 penderia.

Paparan OLED disambungkan menggunakan pin I2C SDA dan SCL pada D21 dan D22 masing-masing.

5.2: Kod

Sambungkan ESP32 dengan PC dan buka Arduino IDE. Muat naik kod yang diberikan ke papan ESP32.

#include             /*Sertakan pustaka komunikasi wayar*/
#include
#include /*Pustaka paparan OLED*/
#include
#include             /*Perpustakaan penderia suhu dan kelembapan*/
#define SCREEN_WIDTH 128    /*Lebar skrin OLED 128 piksel*/
#define SCREEN_HEIGHT 64   /*Ketinggian skrin OLED 64 piksel*/
Paparan Adafruit_SSD1306 ( SCREEN_WIDTH, SCREEN_HEIGHT, & Kawat, - 1 ) ; /* Pemulaan Paparan SSD1306 I2C */
#define DHTPIN 4          /*Pin isyarat untuk DHT11 Sensor*/
#define DHTTYPE    DHT11
DHT dht ( DHTPIN, DHTTYPE ) ;
persediaan kosong ( ) {
Bersiri.mulakan ( 115200 ) ;
dht.mula ( ) ;
jika ( ! paparan.mula ( SSD1306_SWITCHCAPVCC, 0x3C ) ) { /* Alamat I2C di yang OLED disambungkan */
Serial.println ( F ( 'Peruntukan SSD1306 gagal' ) ) ;
untuk ( ;; ) ;
}
kelewatan ( 2000 ) ;
paparan.clearDisplay ( ) ;
paparan.setTextColor ( PUTIH ) ; /* Warna teks keluaran putih */
}
gelung kosong ( ) {
kelewatan ( 5000 ) ;
terapung t = dht.readTemperature ( ) ; /* membaca suhu */
terapung h = dht.readKelembapan ( ) ; /* membaca kelembapan */
jika ( adalah ( h ) || adalah ( t ) ) {
Serial.println ( 'Gagal membaca daripada sensor DHT!' ) ;
}
paparan.clearDisplay ( ) ; /* jelas Paparan OLED sebelum memaparkan bacaan */
paparan.setTextSize ( 1 ) ; /* Fon teks OLED saiz */
display.setCursor ( 0 , 0 ) ;
paparan.cetak ( 'Suhu:' ) ;
paparan.setTextSize ( 2 ) ;
display.setCursor ( 0 , 10 ) ;
paparan.cetak ( t ) ; /* suhu cetakan dalam Celcius */
paparan.cetak ( ' ' ) ;
paparan.setTextSize ( 1 ) ;
paparan.cp437 ( benar ) ;
paparan.tulis ( 167 ) ;
paparan.setTextSize ( 2 ) ;
paparan.cetak ( 'C' ) ;

paparan.setTextSize ( 1 ) ;
display.setCursor ( 0 , 35 ) ;
paparan.cetak ( 'Kelembapan:' ) ;
paparan.setTextSize ( 2 ) ;
display.setCursor ( 0 , Empat lima ) ;
paparan.cetak ( h ) ; /* mencetak peratusan kelembapan */
paparan.cetak ( '%' ) ;
paparan.paparan ( ) ;
}


Kod bermula dengan memasukkan perpustakaan yang diperlukan untuk penderia OLED dan DHT11. Selepas itu dimensi paparan OLED ditentukan. Seterusnya jenis penderia DHT ditakrifkan sekiranya anda menggunakan DHT22 menggantikannya dengan sewajarnya.

Dalam bahagian persediaan penderia DHT dan paparan OLED dimulakan. Skrin OLED disambungkan pada alamat I2C 0x3C. Sekiranya seseorang ingin menyemak alamat I2C, muat naik kod yang diberikan dalam ini artikel .

Nilai suhu dan kelembapan disimpan di dalam pembolehubah apungan t dan h masing-masing. Selepas itu kedua-dua nilai ini dicetak pada paparan OLED.

5.3: Output

Dalam output kita boleh melihat suhu dan kelembapan diukur masa sebenar dipaparkan pada skrin OLED.




Kami telah berjaya melengkapkan antara muka ESP32 dengan penderia DHT11 dan skrin OLED.

Kesimpulan

Paparan OLED dengan ESP32 boleh menunjukkan berbilang data yang dibaca menggunakan penderia luaran. Di sini artikel ini merangkumi semua langkah untuk antara muka ESP32 dengan penderia DHT11 untuk mengukur suhu dan kelembapan bilik. Selepas itu semua data baca dipaparkan pada modul paparan OLED I2C.