ESP32 OLED Display with Arduino IDE

Pada project ke 5 ini, kita akan membuat Display menggunakan layar OLED SSD1306 0,96 inci dengan ESP32 tentunya dengan Arduino IDE. kita bisa mebuat teks, mengatur font yang berbeda, gambar bitmap dll. sebagai contoh hasil outputnya nanti kita akan menampilkan kata "Hello World!"

enter image description here

Persiapan

Pada panduan ini kita akan menggunakan layar OLED SSD 1306, dengan layar monowarna berukungan 0,96 inch, dan dengan jumlah bit 128x64 px. Perangkat yang akan kita pakai cukup sederhana, hanya ESP32 dan Layar OLED SS1306 dilengkapi dengan Jumper sebagai menghubung pin ESP32 dan Layar OLED Model yang kita gunakan menggunakan protokol komunikasi I2C.

Pin OLED

Karena layar OLED menggunakan protokol komunikasi I2C, pengkabelan menjadi sangat sederhana. Anda dapat menggunakan tabel berikut sebagai referensi. enter image description here

Skema

Untuk lebih jelasnya hubungan antar pin ESP32 dan Layar OLED dapat kita lihat pada gambar berikut : enter image description here

Librari

Untuk mengontrol Layar OLED 1306 ini kita membutuhkan setidaknya ada 2 librari, yaitu Adafruit_SSD1306 dan Adafruit_GFX . Lakukan instalasi kedua librari tersebut jika belum terinstal pada Arduino IDE, Ikuti cara barikut :
1 . Buka Arduino IDE, klik pada Menu Sketch > Include Library > Manage Libraries
2. setelah jendela Manage Libraries terbuka, ketikan pada kolom pencarian "SSD 1306" enter image description here 3. Selanjutnya kita cari lagi pada kotak pencarian Adafruit GFX enter image description here 4. Sekarang Arduino IDE sudah siap digunakan

Kode

Langkah selanjutnya kita akan mengkompile Kode Program yang akan kita gunakan. kita buat Sketch baru, kemudian pastekan saja kode program dibawah ini :

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.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);

void setup() {
  Serial.begin(115200);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();

  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.setCursor(0, 10);
  // Display static text
  display.println("Hello,");
  display.println("World!!");
  display.display(); 
}

void loop() {

}

Display "Hello World!!"

Unggah kode ke papan ESP32 Anda. Jangan lupa untuk memilih board kanan dan port COM di menu Tools.

Anda akan mendapatkan serangkaian animasi berbeda di OLED seperti yang ditunjukkan dalam video pendek berikut.


PWM With Adruino IDE

Selanjutnya kita akan melakukan percobaan cara bagaimana menghasilkan sinyal PWM dengan ESP32 menggunakan Arduino IDE, dimana dengan pengontrol PWM pada ESP32 kita akan menboba meredupkan LED enter image description here

Peralatan

  • ESP32 DOIT DEVKIT V1
  • LED 3x5mm
  • Resistor 3x330 ohm
  • Breadboard
  • Kabel Jumper

Pengontrol PWM LED ESP32

Pada ESP32 memiliki 16 saluran yang dapat difungsikanuntuk menghasilkan sinyal PWM dengan konfigurasi dan propertis yang berbeda satu sama lainnya. saluran tersebut dapat anda pilih dari saluran 0 sampai dengan 16. anda bisa mengatur frekuensi ataupun resolusi dari nilai 1 sampai 16 bit dengan kode berikut ini

ledcAttachPin(GPIO, channel)

kita bisa menentukan GPIO mana yang akan kita munculkan sinyalnya. Sedangkan untuk mengontrol kecerahan LED kita dapat menggunakan kode ini :

ledcWrite(channel, dutycycle)

Skema rangkaian

Untuk lebih jelasnya, kita akan coba melakukan percobaan. Kita langsung saja melakukan percobaan dengan menggunakan 3 LED, pada 3 saluran berbeda, yakni GPIO 5, 16 dan 17. Pertama kita rangkai terlebih dahulu komponen yang dibutuhkan seperti yang di tunjukan pada gambar berikut :

enter image description here

dimana, masing masing kaki Anoda pada LED dihubungkan secara seri menggunakan resitor 330 ohm ke pin GPIO5 (D5), GPIO 16(TX2) dan GPIO17(RX17), dan Kaki katoda LED dihubungkan ke Ground (GND).

Upload kode

Setelah itu kita hubungkan ESP32 dengan laptop, jalankan Arduino IDE, buat sketch baru, dan kopi paste kode berikut :

// the number of the LED pin
const int ledPin = 16;  // 16 corresponds to GPIO16
const int ledPin2 = 17; // 17 corresponds to GPIO17
const int ledPin3 = 5;  // 5 corresponds to GPIO5

// setting PWM properties
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;

void setup(){
  // configure LED PWM functionalitites
  ledcSetup(ledChannel, freq, resolution);

  // attach the channel to the GPIO to be controlled
  ledcAttachPin(ledPin, ledChannel);
  ledcAttachPin(ledPin2, ledChannel);
  ledcAttachPin(ledPin3, ledChannel);
}

void loop(){
  // increase the LED brightness
  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);
    delay(15);
  }

  // decrease the LED brightness
  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);   
    delay(15);
  }
}

Simulasi

Selanjutnya setelah Kode terupload ke ESP, maka LED akan Meredup secara bergantian sesuai dengan pengaturan sinyal pada masing masing saluran (pin) pada kode yang telah kita buat. hasilnya dapat kita lihat seperti ditunujkan oleh video berikut:

Demikian percobaan pada project kali ini, semoga dapat bermanfaat.

Rangkaian menggunakan power external

enter image description here

Referensi

https://randomnerdtutorials.com/