บทความใหม่! มีนาคม 2026 📱 Tutorial

วิธีใช้งาน TM1637 7-Segment Display กับ ESP32 และ MicroPython

เรียนรู้วิธีเชื่อมต่อและใช้งานจอแสดงผล TM1637 4 หลัก กับ ESP32 ด้วย MicroPython พร้อมตัวอย่างโค้ด การต่อวงจร และการสร้างโปรเจกต์ Digital Clock

📅 15 มีนาคม 2026⏱️ 10-15 นาที🎯 ระดับเริ่มต้น

📱 TM1637 คืออะไร?

TM1637 เป็นไอซีขับจอ 7-segment 4 หลักที่ได้รับความนิยมสูงในวงการผู้ทำ DIY เนื่องจากมีราคาถูก ใช้งานง่าย และเชื่อมต่อกับไมโครคอนโทรลเลอร์ได้สะดวก โดยใช้สายสัญญาณเพียง 2 เส้น (CLK และ DIO) เท่านั้น

ข้อดีของ TM1637:

  • ราคาถูกมาก (ประมาณ 20-40 บาท)
  • ต่อวงจรง่าย เพียง 4 เส้น (VCC, GND, CLK, DIO)
  • มีไลบรารีพร้อมใช้สำหรับ MicroPython
  • ปรับความสว่างได้ 8 ระดับ
  • เหมาะสำหรับโปรเจกต์นาฬิกา เคาน์เตอร์ และเครื่องวัด

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

  • ✅ ESP32 DevKitC หรือ ESP32 บอร์ดอื่นๆ
  • ✅ จอแสดงผล TM1637 4 หลัก 7-segment
  • ✅ สาย Jumper (เพศ-เพศ) 4 เส้น
  • ✅ USB Cable สำหรับอัปโหลดโค้ด
  • ✅ คอมพิวเตอร์พร้อม Thonny IDE

🔌 การต่อวงจร

การต่อวงจร TM1637 เข้ากับ ESP32 นั้นทำได้ง่ายมาก เราจะใช้ขา GPIO 2 ขา คือ CLK และ DIO ตามตารางด้านล่าง:

TM1637 Pin ESP32 Pin
VCC 3.3V หรือ 5V
GND GND
CLK GPIO 18
DIO GPIO 19

⚠️ หมายเหตุ: คุณสามารถใช้ขา GPIO อื่นๆ แทนได้ แต่ต้องแก้โค้ดในส่วนกำหนดขาด้วย หลีกเลี่ยงการใช้ขาที่มีการใช้งานพิเศษ เช่น GPIO 0, 2, 15 เป็นต้น

📦 ติดตั้งไลบรารี MicroPython

เราจะใช้ไลบรารี MicroPython TM1637 ที่พัฒนาโดย Mike Causer ซึ่งเป็นไลบรารีที่นิยมและเสถียรที่สุด

ขั้นตอนที่ 1: ดาวน์โหลดไลบรารี

ดาวน์โหลดไฟล์ tm1637.py จาก GitHub:

https://github.com/mcauser/micropython-tm1637

ขั้นตอนที่ 2: อัปโหลดไปยัง ESP32

1. เปิด Thonny IDE
2. เชื่อมต่อ ESP32 เข้ากับคอมพิวเตอร์
3. สร้างไฟล์ใหม่และวางโค้ดจาก tm1637.py
4. บันทึกเป็นชื่อ tm1637.py
5. ไปที่ File > Save as... > MicroPython Device
6. บันทึกไฟล์ในชื่อ tm1637.py

💻 โค้ดพื้นฐาน - แสดงตัวเลข

มาเริ่มต้นด้วยโค้ดพื้นฐานที่แสดงตัวเลขบนจอ TM1637:

# นำเข้าไลบรารีที่จำเป็น
from machine import Pin
from tm1637 import TM1637
import time

# กำหนดขา GPIO ที่ต่อกับ TM1637
CLK_PIN = 18  # ขา CLK
DIO_PIN = 19  # ขา DIO

# สร้างออบเจกต์ TM1637
tm = TM1637(CLK_PIN, DIO_PIN)

# ตั้งค่าความสว่าง (0-7)
tm.brightness(5)

# แสดงตัวเลข 4 หลัก
tm.show(1234)

# รอ 2 วินาที
time.sleep(2)

# แสดงตัวเลขอีกครั้ง
tm.show(5678)

# วนลูปแสดงตัวเลขนับขึ้น
while True:
    for i in range(10000):
        tm.show(i)  # แสดงเลข i
        time.sleep(0.1)  # รอ 0.1 วินาที

อธิบายโค้ด:

  • บรรทัด 1-4: นำเข้าไลบรารีที่จำเป็น
  • บรรทัด 7-8: กำหนดขา GPIO สำหรับ CLK และ DIO
  • บรรทัด 11: สร้างออบเจกต์ TM1637
  • บรรทัด 14: ตั้งค่าความสว่าง (0 = มืดสุด, 7 = สว่างสุด)
  • บรรทัด 17-23: แสดงตัวเลขบนจอ

🕐 โปรเจกต์: Digital Clock ด้วย NTP

ตอนนี้เราจะสร้าง Digital Clock ที่แสดงเวลาจริงโดยดึงเวลาจาก NTP Server ผ่าน WiFi:

# นำเข้าไลบรารีที่จำเป็น
from machine import Pin
from tm1637 import TM1637
import network
import ntptime
import time

# ตั้งค่า WiFi
WIFI_SSID = "YOUR_WIFI_SSID"
WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"

# กำหนดขา GPIO
CLK_PIN = 18
DIO_PIN = 19

# สร้างออบเจกต์ TM1637
tm = TM1637(CLK_PIN, DIO_PIN)
tm.brightness(5)

# เชื่อมต่อ WiFi
def connect_wifi():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('กำลังเชื่อมต่อ WiFi...')
        wlan.connect(WIFI_SSID, WIFI_PASSWORD)
        timeout = 10
        while not wlan.isconnected() and timeout > 0:
            print('.', end='')
            time.sleep(1)
            timeout -= 1
    if wlan.isconnected():
        print('\nเชื่อมต่อ WiFi สำเร็จ!')
        print('IP:', wlan.ifconfig()[0])
    else:
        print('\nไม่สามารถเชื่อมต่อ WiFi ได้')

# ดึงเวลาจาก NTP Server
def sync_time():
    try:
        ntptime.settime()
        print('ตั้งเวลา NTP สำเร็จ')
    except:
        print('ไม่สามารถตั้งเวลา NTP ได้')

# แสดงเวลาบน TM1637
def display_time():
    # รับเวลาปัจจุบัน (RTC ของ ESP32)
    current_time = time.localtime()
    hours = current_time[3]
    minutes = current_time[4]
    
    # รวมเวลาเป็นตัวเลข 4 หลัก
    time_num = hours * 100 + minutes
    
    # แสดงเวลา (เปิด/ปิด : ตรงกลาง)
    # สำหรับจอที่มี : ระหว่างหลักที่ 2 และ 3
    tm.show(time_num)
    tm.show(time_num | 0x4000)  # เปิด :

# เริ่มต้นการทำงาน
print('เริ่มต้น Digital Clock')
connect_wifi()
sync_time()

# แสดงเวลาทุกๆ วินาที
last_sync = time.time()
while True:
    display_time()
    time.sleep(1)
    
    # ตั้งเวลา NTP ใหม่ทุกๆ 1 ชั่วโมง
    if time.time() - last_sync > 3600:
        sync_time()
        last_sync = time.time()

วิธีใช้งาน:

  1. แก้ไข WIFI_SSID และ WIFI_PASSWORD ให้ตรงกับ WiFi ของคุณ
  2. อัปโหลดโค้ดไปยัง ESP32
  3. ดูผลลัพธ์ที่จอ TM1637 และ Serial Monitor

💡 เคล็ดลับ: คุณสามารถปรับเวลาให้ตรงกับ Timezone ของประเทศไทย โดยเพิ่มค่า offset ในฟังก์ชัน display_time():

# ปรับเวลาให้ตรง GMT+7 (ประเทศไทย)
time_num = (hours + 7) % 24 * 100 + minutes

🔧 การแก้ปัญหาที่พบบ่อย

ปัญหา: จอไม่ติด หรือแสดงผลไม่ถูกต้อง

วิธีแก้: ตรวจสอบการต่อสาย โดยเฉพาะ VCC และ GND ลองเปลี่ยนขา GPIO หากใช้ขาที่มีการใช้งานพิเศษ

ปัญหา: ไลบรารีไม่ทำงาน

วิธีแก้: ตรวจสอบว่าบันทึกไฟล์ tm1637.py ไว้ใน root directory ของ ESP32 และชื่อไฟล์ต้องถูกต้อง

ปัญหา: WiFi เชื่อมต่อไม่ได้

วิธีแก้: ตรวจสอบ SSID และ Password ลองใช้ WiFi 2.4GHz เท่านั้น (ESP32 รุ่นเก่าไม่รองรับ 5GHz)

ปัญหา: เวลาไม่ตรง

วิธีแก้: เพิ่ม offset เวลาให้ตรงกับ Timezone ของคุณ หรือตรวจสอบการเชื่อมต่ออินเทอร์เน็ต

🎉 สรุป

ในบทความนี้เราได้เรียนรู้วิธีการใช้งานจอแสดงผล TM1637 กับ ESP32 และ MicroPython ตั้งแต่การต่อวงจร ติดตั้งไลบรารี ไปจนถึงการสร้าง Digital Clock

สิ่งที่เรียนรู้:

  • การเชื่อมต่อ TM1637 เข้ากับ ESP32
  • การติดตั้งและใช้งานไลบรารี MicroPython
  • การแสดงตัวเลขและข้อความบนจอ
  • การสร้าง Digital Clock ด้วย NTP
  • การแก้ปัญหาที่พบบ่อย

โปรเจกต์ต่อไปที่แนะนำ:

CynoIoT LogoCynoIoT

แพลตฟอร์ม IoT ที่ช่วยให้คุณสร้างโปรเจกต์ IoT ได้ง่ายและรวดเร็ว

ผลิตภัณฑ์

ทรัพยากร

ติดต่อเรา

© 2026 CynoIoT. All rights reserved.