The Force of ESP32

Ichsan Sholeh
ESP32 DEVKIT — AR Tech
5 min readFeb 23, 2020

23 Februari 2020.

Halo! Pada tulisan kali ini, seperti biasa, gue akan menceritakan dan berbagi sedikit langkah-langkah yang gua lakukan dalam mengerjakan tugas ‘Sistem Embedded’ kali ini. Pada minggu ini, gue mendapatkan tugas untuk mengawinkan antara display yang baru banget minggu lalu gue coba, dengan sensor cuaca yang dua minggu lalu sempat gua coba namun gagal :). Karena sensor cuaca yang waktu itu gue gunakan bisa dibilang udah rusak, maka pada tugas kali ini gue akan menggantinya dengan sensor cuaca DHT11, sensor yang udah terpasang pinnya, sehingga gak perlu nyolder-nyolder lagi huehuehue :).

Sebelum memulai tugas kali ini, berikut adalah peralatan yang dibutuhkan:
1. Laptop/PC/atau apa ajalah suka-suka kalian guys. Selama bisa digunakan untuk coding dan ada Arduino IDE, it’s okay.
2. ESP32
3. Arduino IDE
4. SSD1306 0.96 inch OLED Display
5. Sensor cuaca DHT11
6. Kabel jumper
7. Kabel micro USB
8. Breadboard
Berikut penampakannya:

Sekarang, mari langsung ke pengerjaannya!

Pin Wiring

Karena OLED Display yang akan kita gunakan akan menggunakan protokol I2C, maka kita harus menguhubunkan display ini dengan ESP32 menggunakan protokol I2C juga. Umumnya, pin I2C ESP32 adalah: (GPIO 22: SCL; GPIO 21: SDA).

Berikut adalah penampakan skema rangkaian yang akan kita gunakan:

Sumber: https://randomnerdtutorials.com/esp32-esp8266-dht-temperature-and-humidity-oled-display/#more-85288

Pada gambar diatas, kita akan melihat bahwa ada resistor 10k Ω pada rangkaian tersebut. Namun, jika kita tidak memiliki resistor tersebut, kita dapat menggantinya dengan menghubungkan kabel male-to-male pada rangkaian tersebut agar aliran listrik tetap terhubung.

Installing Library — ESP32

Sebelum mengupload kode, kita harus memastikan terlebih dahulu apakah library dari sensor dan display yang kita gunakan sudah terinstall pada Arduino IDE.

1. Installing SSD1306 OLED Library

Ada banyak library yang dapat kita gunakan untuk OLED display yangakan kita gunakan. Tetapi pada tugas kali ini kita akan menggunakan library dari Adafruit, yaitu: Adafruit_SSD1306 dan Adafruit_GFX library. Berikut langkah-langkah:

  1. Buka Arduino IDE dan pilih Sketch > Include Library > Manage Libraries. Selanjutnya Library Manager akan terbuka.
  2. Ketik “SSD1306” pada kolom pencarian dan install SSD1306 library dari Adafruit.

3. Setelah menginstall SSD1306 library from Adafruit, ketik “GFX” pada kolom pencarian dan install library tersebut.

Installing DHT Sensor libraries

Untuk membaca sensor dari DHT11, kita akan menggunakan library dari Adafruit.

  1. Buka Arduino IDE dan pilih Sketch > Include Library > Manage Libraries.
  2. Cari “DHT” pada kolom pencarian dan install DHT library dari Adafruit.

3. Setelah DHT library dari Adafruit, ketik “Adafruit Unified Sensor” pada kolom pencarian. Pilih, dan install library tersebut.

Yeay! Selesai deh install library-nya. Sekarang, yuk ke bagian selanjutnya!

Kode

Setelah menginstall library yang diperlukan untuk sensor dan display yang akan kita gunakan, selanjutnya kita hanya perlu memasukkan kode dibawah ini ke Arduino IDE. Berikut kodenya:

/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define DHTPIN 14 // Digital pin connected to the DHT sensor// Uncomment the type of sensor in use:
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);void setup() {
Serial.begin(115200);
dht.begin(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
}
void loop() {
delay(5000);
//read temperature and humidity
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
}
// clear display
display.clearDisplay();

// display temperature
display.setTextSize(1);
display.setCursor(0,0);
display.print("Temperature: ");
display.setTextSize(2);
display.setCursor(0,10);
display.print(t);
display.print(" ");
display.setTextSize(1);
display.cp437(true);
display.write(167);
display.setTextSize(2);
display.print("C");

// display humidity
display.setTextSize(1);
display.setCursor(0, 35);
display.print("Humidity: ");
display.setTextSize(2);
display.setCursor(0, 45);
display.print(h);
display.print(" %");

display.display();
}
// Sumber: https://randomnerdtutorials.com/esp32-esp8266-dht-temperature-and-humidity-oled-display/#more-85288

Melakukan Testing

Setelah memastikan rangkaian telah terhubung dengan benar dan kode yang siap diupload sudah benar, maka sekarang kita hanya perlu melakukan demonstrasi apakah rangkaian ini sudah dapat berjalan dengan baik atau tidak.

Dengan melakukan upload seperti biasa, apabila nantinya proses upload telah berhasil, maka display akan langsung menampilkan hasil yang didapatkan dari sensor DHT11 tersebut. Berikut penampakannya:

Jika, display telah menunjukan hasil seperti penampakan diatas, Selamat! Artinya rangkaian kita telah berjalan dengan baik. Yeay! Mudah kan? huehuehue.

Jika, display nantinya belum menampilkan tulisan/gambar seperti pada penampakan diatas, bisa jadi rangkaian yang kita buat masih belum tepat atau terdapat beberapa bagian kode yang harus diubah seperti:

#define DHTTYPE    DHT11     // DHT 11 
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

block code tersebut harus disesuaikan dengan tipe sensor DHT yang akan kita gunakan. Karena dalam hal ini kita menggunakan DHT11, maka kode yang digunakan ada kode pada bagian paling atas.

Sekian dulu tulisan gue kali ini, semoga dapat bermanfaat untuk kalian yang membaca,

Enjoy!

--

--

Ichsan Sholeh
ESP32 DEVKIT — AR Tech

Information System and Technology Student at Bandung Institute of Technology