Skip to content

วิธีต่อจอ OLED กับ ESP32 แสดงผลค่าโวลต์และสถานะระบบแบบ Real-time

  • by

วิธีต่อจอ OLED กับ ESP32 แสดงผลค่าโวลต์และสถานะระบบแบบ Real-time

 

สอนวิธีใช้จอ OLED 0.96″ ร่วมกับ ESP32 เพื่อแสดงข้อมูลจากเซนเซอร์และสถานะการเชื่อมต่อ แจกโค้ดภาษาไทยพร้อมวิธีต่อสายที่ง่ายที่สุด


ทำไมต้องติดจอให้ ESP32?

ในบทความที่ผ่านมา เราดูค่าผ่านมือถือหรือ LINE กันไปแล้ว แต่ถ้า Wi-Fi หลุด หรือเราอยู่หน้าเครื่องล่ะ? การมี จอ OLED ขนาดจิ๋วจะช่วยบอกเราได้ทันทีว่า “เครื่องยังทำงานอยู่ไหม” หรือ “ตอนนี้แบตเตอรี่เหลือกี่โวลต์” โดยไม่ต้องพึ่งอินเทอร์เน็ตครับ

อุปกรณ์ที่ต้องใช้

  1. บอร์ด ESP32

  2. จอ OLED 0.96 นิ้ว (I2C interface): จอรุ่นนี้มีแค่ 4 สาย ต่อใช้งานง่ายมากครับ

  3. สาย Jump (เมีย-เมีย): 4 เส้น


วิธีการต่อสาย (แบบ I2C)

จอ OLED ส่วนใหญ่จะมีขา 4 ขา ให้ต่อเข้ากับ ESP32 ตามนี้ครับ:

  • VCC -> ต่อเข้า 3.3V

  • GND -> ต่อเข้า GND

  • SCL -> ต่อเข้า GPIO 22

  • SDA -> ต่อเข้า GPIO 21


ขั้นตอนการเตรียมโปรแกรม (Library)

ก่อนจะอัปโหลดโค้ด ให้คุณไปที่ Arduino IDE แล้วติดตั้ง Library ที่ชื่อว่า “Adafruit SSD1306” และ “Adafruit GFX Library” ให้เรียบร้อยก่อนนะครับ


แจก Full Source Code: OLED Monitor v1.0

โค้ดนี้ผมปรับจูนให้แสดงชื่อโฮสต์ esp32-0B060089FD08 และค่าสมมติของแบตเตอรี่ 12V บนหน้าจอครับ

C++

/* * Project: ESP32 OLED Display Monitor v1.0
 * Source: satawat.com
 * Update: 2026-03-20
 */

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // ความกว้างจอ
#define SCREEN_HEIGHT 64 // ความสูงจอ
#define OLED_RESET    -1 
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

const char* hostName = "esp32-0B060089FD08";
float mockVolt = 13.82; // ค่าสมมติจากบทความที่ 1

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

  // เริ่มต้นใช้งานจอ OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); 
  }

  display.clearDisplay();
  display.setTextSize(1);      
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.println("SATAWAT.COM");
  display.display();
  delay(2000);
}

void loop() {
  display.clearDisplay();
  
  // แสดงหัวข้อ
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println("SYSTEM MONITOR");
  display.drawLine(0, 10, 128, 10, SSD1306_WHITE);

  // แสดงชื่อเครื่อง
  display.setCursor(0, 20);
  display.print("ID: ");
  display.println(hostName);

  // แสดงค่าโวลต์ (ตัวใหญ่ชัดๆ)
  display.setTextSize(2);
  display.setCursor(0, 40);
  display.print(mockVolt);
  display.print(" V");

  display.display(); // สั่งให้จอแสดงผลตามที่เราตั้งค่าไว้
  
  // จำลองค่าเปลี่ยนไปเรื่อยๆ
  mockVolt -= 0.01;
  if(mockVolt < 11.0) mockVolt = 14.4;
  
  delay(1000);
}

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Exit mobile version