Arduino โปรเจกต์นาฬิกา OLED 3 จอ

ภาพรวมโครงการ

โครงการนี้เป็นโปรเจกต์ DIY ที่สร้างนาฬิกาดิจิทัลโดยใช้ Arduino Uno กับจอ OLED ขนาด 0.96 นิ้ว ทั้ง 3 หน้าจออย่างไรก็ตาม ความท้าทายหลักคือการเชื่อมต่อจอ OLED หลายจอกับ Arduino เนื่องจากจอ OLED ส่วนใหญ่ใช้ที่อยู่ I2C เดียวกัน

การแก้ปัญหานี้คือการใช้ I2C Multiplexer ซึ่งช่วยให้สามารถเชื่อมต่อจอ OLED หลายจอกับ Arduino ได้พร้อมๆ กัน โครงการนี้แสดงให้เห็นวิธีแก้ปัญหาเชิงเทคนิคด้วยการใช้ Multiplexer อย่างเป็นกรรมการ

ดูวิดีโอการสร้างโครงการ:

OLED 3 Display Clock Project
นาฬิกา OLED 3 จอแบบสมบูรณ์
Inside Hardware Assembly
ภายในโครงการ: Arduino และจอ OLED
Animation and UI Display
การแสดงผลการเคลื่อนไหวและเอฟเฟกต์ UI
Circuit Schematic and Code
แบบวงจรและโค้ด Arduino

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

ในการสร้างโครงการนาฬิกา OLED 3 จอนี้ คุณจะต้องเตรียมอุปกรณ์ดังต่อไปนี้:

Arduino Uno

บอร์ด microcontroller หลักที่ใช้ประมวลผล

จอ OLED 0.96"

ใช้ 3 ตัว สำหรับแสดงเวลา นาที วินาที

I2C Multiplexer (TCA9548A)

เพื่อเชื่อมต่อจอ OLED หลายตัวกับ Arduino

สายเคเบิล Jumper

สำหรับการต่อวงจร SDA SCL 5V GND

แหล่งจ่ายไฟ

5V USB Power Supply หรือแบตเตอรี่

เมนบอร์ด (Breadboard)

สำหรับการต่อวงจรแบบชั่วคราวและทดสอบ

หมายเหตุ: หากต้องการให้อุปกรณ์ค่อนข้างเสถียร ควรใช้ PCB หรือเคสพิเศษแทน Breadboard เพื่อลดปัญหาการหลวม (Loose Connection)

วิธีการและคำอธิบายโครงการ

นาฬิกา OLED 3 จอนี้ทำงานได้อย่างไร? มาทำความเข้าใจทีละขั้นตอน:

ขั้นตอนที่ 1: I2C Communication

Arduino ใช้โปรโตคอล I2C (Inter-Integrated Circuit) ในการสื่อสารกับจอ OLED และ I2C Multiplexer ผ่านขา SDA (Serial Data) และ SCL (Serial Clock)

ขั้นตอนที่ 2: I2C Multiplexer

เนื่องจากจอ OLED ทั่วไปใช้ที่อยู่ I2C เดียวกัน (โดยปกติ 0x3C หรือ 0x3D) จึงต้องใช้ TCA9548A Multiplexer เพื่อให้ Arduino "มองเห็น" จอ OLED แต่ละตัวแยกจากกัน

ขั้นตอนที่ 3: RTC Module (ตัวเลือก)

เพื่อให้นาฬิกาเก็บเวลาได้อย่างแม่นยำ ควรเพิ่ม Real-Time Clock (RTC) Module เช่น DS3231 ซึ่งติดแบตเตอรี่และเก็บเวลาได้แม้ไม่มีไฟ

ขั้นตอนที่ 4: การแสดงผล

Arduino จะอ่านเวลาจาก RTC และแสดงผลบนจอ OLED 3 ตัว เช่น จอที่ 1 แสดงชั่วโมง จอที่ 2 แสดงนาที จอที่ 3 แสดงวินาที

ความท้าทายหลักของโครงการนี้คือการ "บอก" ให้ Arduino รู้ว่าจอแต่ละตัวเป็นตัวไหน และในการอ่านข้อมูลนั้น ให้ "สลับ" ระหว่างจอผ่าน Multiplexer

เคล็ดลับ: การทำความเข้าใจโปรโตคอล I2C และการทำงานของ Multiplexer เป็นทักษะสำคัญในการสร้าง IoT Projects ที่มีอุปกรณ์หลายตัว

แบบวงจร (Schematic)

แบบวงจรของโครงการนี้มีความซับซ้อนปานกลาง เนื่องจากต้องเชื่อมต่อ Arduino, I2C Multiplexer และจอ OLED หลายตัว:

  • Arduino Uno Pin 18 (SDA): ต่อ I2C Multiplexer SDA
  • Arduino Uno Pin 19 (SCL): ต่อ I2C Multiplexer SCL
  • I2C Multiplexer Channel 0: ต่อจอ OLED ที่ 1
  • I2C Multiplexer Channel 1: ต่อจอ OLED ที่ 2
  • I2C Multiplexer Channel 2: ต่อจอ OLED ที่ 3
  • 5V Power: ต่ออย่างแยกต่างหาก เพื่อเลี่ยงปัญหา Voltage Drop
  • GND: ต่อทุกอุปกรณ์เข้าด้วยกัน (Common Ground)

สิ่งสำคัญคือ ให้ขา SDA และ SCL มี Pull-up Resistor (ปกติ 4.7kΩ) เพื่อให้การสื่อสาร I2C ลื่นไหล

ทำไมต้องใช้ Pull-up Resistor? เพราะอุปกรณ์ I2C ใช้ Open-Drain Output ซึ่งต้องการ Pull-up Resistor เพื่อดึงแรงดัน (Pull) ให้กลับมาที่ HIGH เมื่อไม่มีการส่งข้อมูล

โค้ด Arduino

โค้ด Arduino สำหรับโครงการนี้มีหลายส่วนสำคัญ:

1. Library ที่ต้องใช้:
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
2. การตั้งค่า I2C Multiplexer:
void selectMultiplexer(uint8_t channel) {
  Wire.beginTransmission(0x70);
  Wire.write(1 << channel);
  Wire.endTransmission();
}
3. การอ่านเวลาและแสดงผล:

ลูป (Loop) ของ Arduino จะอ่านเวลาจาก RTC และแสดงผลบนจอ OLED ทั้ง 3 ตัว โดยการเรียก selectMultiplexer() เพื่อ "บอก" ว่าจะแสดงผลบนจอไหน

เทคนิคสำคัญ: ใช้ Adafruit_SSD1306 Library ซึ่งรองรับการทำงานกับจอ OLED ทั่วไป ทำให้การพัฒนาง่ายขึ้นมาก

ทำไมโครงการนี้จึงสำคัญ?

โครงการนาฬิกา OLED 3 จอนี้มีความหมายเพราะหลายเหตุผล:

  • เรียนรู้ I2C Communication: I2C เป็นหนึ่งในโปรโตคอลการสื่อสารที่ใช้บ่อยที่สุดในงาน Embedded Systems และ IoT
  • ทำความเข้าใจ Multiplexer: Multiplexer เป็นเทคนิคสำคัญในการเชื่อมต่ออุปกรณ์หลายตัวกับ Arduino ที่ใช้ที่อยู่เดียวกัน
  • RTC Integration: การใช้ RTC Module เพื่อให้นาฬิกาทำงานแม่นยำ
  • การแสดงผล (Display Programming): จอ OLED เป็นเทคโนโลยีปัจจุบันและมีการใช้ในอุปกรณ์ที่หลากหลาย
  • Project Assembly Skills: การประกอบโครงการให้ทำงานได้ต้องทักษะหลายด้านที่เกินกว่า LED และ Button ธรรมชาติ

หากคุณสนใจการสร้าง IoT Devices หรือ Embedded Systems ตัวอื่น โครงการนี้จะเป็น "Stepping Stone" ที่ดีสำหรับการเรียนรู้เทคนิคขั้นสูง

ตัวอย่างการประยุกต์: เทคนิคนี้สามารถใช้เพื่อสร้าง Smart Display, Data Logger, Weather Station หรือ Home Automation Projects ได้

อ้างอิงและเครดิต

โครงการนี้อ้างอิงมาจากแหล่งต่อไปนี้:

Components & Library:
  • Adafruit SSD1306 Library - สำหรับควบคุมจอ OLED
  • RTClib Library - สำหรับการอ่านเวลาจาก RTC Module
  • Arduino Wire Library - สำหรับการสื่อสาร I2C
Hardware Reference:
  • TCA9548A I2C Multiplexer Datasheet
  • SSD1306 OLED Display Technical Specification
  • DS3231 RTC Module Documentation

โครงการนี้สร้างจากความรู้และความพยายามของนักพัฒนา IoT ที่อาศัยบนเครื่องข่าว Hackster.io และชุมชน Arduino

ต้องการเรียนรู้เพิ่มเติมหรือสร้างโครงการเอง?

ไปที่ Global Byte Shop สอบถามในกลุ่ม LINE

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี