ย้อนวิธีแกะสัญญาณจอ STN LCD เก่า แล้วแสดงภาพผ่าน VGA

GLOBALBYTE / ELECTRONICS / REVERSE ENGINEERING / RASPBERRY PI PICO

คืนชีพจอ STN LCD เก่า: แกะสัญญาณเป็น VGA ด้วย Raspberry Pi Pico

เครื่องคิดเงิน Samsung SPS-1000 ยังทำงาน แต่จอ STN LCD เดิมเสีย จะกู้ภาพกลับมาได้อย่างไร? Voltage Ventures ทดลองอ่านสัญญาณภาพจาก Display Controller เดิม แล้วใช้ STM32F407 และ Raspberry Pi Pico (RP2040) นำข้อมูลมาสร้างภาพสำหรับจอ VGA โดยไม่ต้องเขียนโปรแกรมจำลองหน้าจอเครื่องคิดเงินขึ้นใหม่

Source: Voltage Ventures / Instructables, 29 October 2026 | Hackaday, 5 November 2026 | เรียบเรียงโดย GlobalByte

ภาพหน้าปกโปรเจกต์แปลงสัญญาณจอ STN LCD เป็น VGA
ภาพปกโครงการจาก Voltage Ventures บน Instructables
Key Takeaways
  • จอ STN LCD เดิมมีความละเอียด 320×240 พิกเซล
  • ข้อมูลภาพออกมาเป็นบัส 4 บิต พร้อมสัญญาณ XSCL, LP และ YD
  • ไมโครคอนโทรลเลอร์ Capture ข้อมูลแล้วสร้าง Monochrome Framebuffer
  • ภาพถูกขยายเป็น VGA 640×480 โดยเพิ่มขนาดพิกเซลแบบ 2×2
  • โปรเจกต์ทดลองกับ STM32F407 และ Raspberry Pi Pico (RP2040)
ภาพเพิ่มเติมจากหน้าปกโปรเจกต์ STN LCD ภาพเพิ่มเติมจากหน้าปกโปรเจกต์ STN LCD ภาพเพิ่มเติมจากหน้าปกโปรเจกต์ STN LCD ภาพเพิ่มเติมจากหน้าปกโปรเจกต์ STN LCD

จอเครื่องคิดเงินเสีย แต่ข้อมูลภาพยังอยู่

เครื่อง Samsung SPS-1000 ใช้จอ Monochrome STN LCD ที่มีชุด Display Controller ของตนเอง เมื่อชุดจอเดิมเสีย ผู้สร้างจึงตรวจสอบสัญญาณจาก Controller ว่ายังมีข้อมูล Digital Pixel อยู่หรือไม่ และพบว่าสามารถนำข้อมูลเหล่านั้นไปสร้างภาพใหม่ได้

แนวทางนี้ไม่ใช่การเปลี่ยน Display Controller แต่เป็นการดักอ่านสัญญาณของระบบเดิม โดยไม่จำเป็นต้องจำลองโปรแกรมเครื่องคิดเงินใหม่ทั้งหมด

อ่านข่าวต้นฉบับจาก Hackaday

Hardware และเครื่องมือที่ต้องใช้

ภาพอุปกรณ์ในรายการ Supplies ของโปรเจกต์
รายการอุปกรณ์ที่ผู้สร้างใช้จาก Instructables
อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies อุปกรณ์เพิ่มเติมใน Supplies
อุปกรณ์ หน้าที่
Samsung SPS-1000 อุปกรณ์ต้นทางที่มีสัญญาณจอเดิม
STM32F407 Discovery การทดลอง Capture และ VGA Output
Raspberry Pi Pico (RP2040) การ Capture สัญญาณด้วย PIO/DMA
Level Shifter ปรับระดับแรงดันให้เข้ากับ GPIO ของบอร์ด
VGA Connector / Resistors วงจรสัญญาณ Video และ Synchronization
Logic Analyzer / Oscilloscope ตรวจแรงดันและ Timing ก่อนต่อวงจร
ข้อควรระวังเรื่องแรงดัน ต้นทางในเอกสารโครงการ Pico ระบุสัญญาณ 5V Logic แต่ RP2040 ใช้ GPIO 3.3V ต้องตรวจระดับแรงดันและใช้วงจรปรับระดับสัญญาณที่เหมาะสม ห้ามต่อ 5V เข้าขา GPIO โดยตรง

Step 1: เข้าใจสัญญาณของจอ STN LCD เดิม

Samsung SPS-1000 ใช้ Display Controller รุ่น SED1351FOA โดยผู้สร้างตรวจพบข้อมูลพิกเซล Monochrome แบบ 4 บิต และสัญญาณ Synchronization ที่ใช้จัดข้อมูลเป็นภาพ 320×240 พิกเซล

ภาพสำรวจสัญญาณจอ STN LCD ใน Step 1
Step 1: การสำรวจจอและ Display Interface เดิม
ภาพเพิ่มเติม Step 1 ภาพเพิ่มเติม Step 1 ภาพเพิ่มเติม Step 1 ภาพเพิ่มเติม Step 1 ภาพเพิ่มเติม Step 1 ภาพเพิ่มเติม Step 1 ภาพเพิ่มเติม Step 1
Signal หน้าที่
U0–U3 Pixel Data Bus ขนาด 4 บิต
XSCL Pixel Clock
LP จังหวะ Line / Horizontal Synchronization
YD จังหวะ Frame / Vertical Synchronization

Step 2: Microcontroller อ่านสัญญาณภาพอย่างไร?

ไมโครคอนโทรลเลอร์ทำหน้าที่รับข้อมูลจาก Pixel Bus โดยไม่ควบคุม Display Controller ต้นทาง ใช้ XSCL ช่วยกำหนดจังหวะ Capture และใช้ LP กับ YD ระบุตำแหน่งของบรรทัดและเฟรม

Capture Technique ของจอ STN LCD ใน Step 2
Step 2: หลักการอ่านข้อมูลและจัดเป็นภาพใหม่
ภาพเพิ่มเติม Step 2 ภาพเพิ่มเติม Step 2 ภาพเพิ่มเติม Step 2 ภาพเพิ่มเติม Step 2 ภาพเพิ่มเติม Step 2 ภาพเพิ่มเติม Step 2
Samsung SPS-1000 ส่งข้อมูลภาพพร้อม Timing
↓
STM32F407 / RP2040 รับข้อมูลด้วย GPIO และ Peripheral
↓
Framebuffer จัดข้อมูลเป็นภาพ Monochrome
↓
VGA สร้างภาพพร้อม HSYNC / VSYNC

Step 3: วัด Display Timing ให้ตรง

ผู้สร้างพบว่าข้อมูลจอมีทั้ง Active Pixels และช่วงว่างของสัญญาณ ดังนั้นจึงต้องวัด Timing จริงก่อนกำหนดตำแหน่งการอ่านภาพ

ภาพการตรวจ Display Timing ใน Step 3
Step 3: การวัด Timing ของสัญญาณภาพต้นฉบับ
ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3 ภาพเพิ่มเติม Step 3
ค่าที่ผู้สร้างวัด ผล
Original Resolution 320 × 240
Pixel Bus 4 บิต
Active Clock / Line 80 รอบ
Total Clock / Line 218 รอบ
Total Lines / Frame 242 บรรทัด

ค่าดังกล่าวเป็น Timing ที่ผู้สร้างตรวจพบกับ Samsung SPS-1000 ไม่ใช่ค่าที่สามารถใช้กับจอ STN LCD ทุกรุ่น

Step 4: Reconstruct ภาพต้นฉบับ

ข้อมูลจากบัส 4 บิตถูกนำมาแปลงกลับเป็นพิกเซล Monochrome ผู้สร้างใช้ Lookup Table เพื่อลดงานคำนวณ และขยายแต่ละพิกเซลต้นฉบับเป็น 2×2 เพื่อสร้างภาพ VGA 640×480

ภาพขั้นตอน Reconstruct Image จากข้อมูล STN LCD
Step 4: กระบวนการสร้างภาพกลับมาจาก Pixel Data
ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4 ภาพเพิ่มเติม Step 4
Framebuffer Memory

640 × 480 พิกเซล × 1 บิตต่อพิกเซล = 307,200 บิต หรือ 38,400 Bytes (37.5 KiB) เพราะเป็นภาพ Monochrome ไม่ใช่ RGB 24 บิต

Step 5: Generating VGA Output

ผู้สร้างพัฒนาการสร้างสัญญาณ VGA โดยต้องจัดจังหวะ Pixel Data พร้อม HSYNC และ VSYNC ให้ถูกต้อง รวมถึงการสร้างระดับแรงดัน Video ให้เหมาะกับอินพุต VGA

การทดลองสร้าง VGA Output ใน Step 5
Step 5: การพัฒนาวงจรและสัญญาณ VGA
ภาพเพิ่มเติม Step 5 ภาพเพิ่มเติม Step 5 ภาพเพิ่มเติม Step 5 ภาพเพิ่มเติม Step 5 ภาพเพิ่มเติม Step 5 ภาพเพิ่มเติม Step 5
ต้องตรวจค่า Resistor ก่อนต่อวงจร Instructables กล่าวถึงตัวต้านทาน 220Ω ใน Step VGA แต่ Supplies ระบุ 270Ω และ GitHub STM32 Driver มีตัวอย่างค่าอื่น จึงต้องอ้างอิงวงจรจริงและระดับสัญญาณของ Hardware ที่ใช้ ห้ามเลือกจากตัวเลขใดตัวเลขหนึ่งโดยไม่ตรวจสอบ

Step 6: ต่อยอดด้วย Raspberry Pi Pico RP2040

เมื่อได้ผลด้วย STM32F407 ผู้สร้างทดลองนำเทคนิคเดิมมาใช้กับ Raspberry Pi Pico โดยใช้ PIO สำหรับ Sample Pixel Data และ DMA เพื่อโอนข้อมูลลง Buffer พร้อมใช้ LP/YD ติดตามบรรทัดและเฟรม

Raspberry Pi Pico RP2040 ในโปรเจกต์ Capture สัญญาณจอเก่า
Step 6: การต่อยอดระบบ Capture ด้วย RP2040
ภาพเพิ่มเติม Step 6 ภาพเพิ่มเติม Step 6 ภาพเพิ่มเติม Step 6
หมายเหตุเรื่องสถานะ Source Code

Instructables กล่าวถึง VGA Implementation ด้วย Pico แต่ README ใน Repository ของ Pico ระบุว่าการ Capture ทำงานแล้ว และยังวางทางเลือก Output เช่น VGA เป็น Future Improvement จึงควรตรวจ Source Revision ก่อนสรุปว่า Pico Repository เป็นโค้ดพร้อมแฟลชแล้วแสดง VGA ได้ครบทุกขั้นตอน

Step 7: ผลการทดลองบนจอ VGA

ผู้สร้างรายงานว่า STM32F407 สามารถ Capture ข้อมูลจริงจาก Samsung SPS-1000 แล้วแสดง Interface ของเครื่องบนจอ VGA ได้ รวมถึงการเปลี่ยนหน้าจอตามเมนู และการทำงานหลัง Restart และ Factory Reset

ผลลัพธ์การแสดงภาพจอเครื่องคิดเงินบน VGA ใน Step 7
Step 7: ภาพผลการทดสอบจาก Instructables
ภาพเพิ่มเติมของผลการทดลอง Step 7

Step 8: สิ่งที่เรียนรู้จากการคืนชีพจอเก่า

การทดลองนี้แสดงให้เห็นว่าเมื่อระบบต้นทางยังส่งสัญญาณภาพดิจิทัลได้ เราอาจนำข้อมูลกลับมาสร้าง Interface ที่แสดงบนจอรูปแบบใหม่ได้โดยไม่ต้องเปลี่ยน Controller หรือจำลอง UI เดิม แต่ต้องเข้าใจ Timing และข้อกำหนดทางไฟฟ้าของอุปกรณ์แต่ละรุ่นก่อน

ภาพสรุปโปรเจกต์การแปลง STN LCD เป็น VGA
Step 8: ภาพสรุปโปรเจกต์โดย Voltage Ventures
ภาพเพิ่มเติม Step 8 ภาพเพิ่มเติม Step 8 ภาพเพิ่มเติม Step 8

Code Snippet จาก GitHub

Repository STM32F407 VGA SPI มีตัวอย่าง Initialize VGA Driver และรอ Vertical Blank ดังนี้ เป็นเพียงตัวอย่างการใช้ VGA Library ไม่ใช่โค้ด Capture สัญญาณ Samsung SPS-1000 ทั้งระบบ

STM32F407 VGA Example
#include "VGA.h"

void setup()
{
    VGA.begin();
    VGA.cls();
}

void loop()
{
    VGA.waitVBlank();
    // Draw into VGA.VRAM()
}

Source Code และไฟล์ดาวน์โหลดที่เกี่ยวข้อง

ตรวจไม่พบวิดีโอที่แนบไว้ในข่าว Hackaday หรือโครงการ Instructables จึงไม่เพิ่มวิดีโอที่ไม่ได้เป็นส่วนหนึ่งของการทดลองนี้

FAQ: คำถามที่พบบ่อย

1. STN LCD คืออะไร?

เป็นเทคโนโลยีจอ LCD รุ่นเก่า โปรเจกต์นี้ใช้จอ Monochrome ใน Samsung SPS-1000 เป็นกรณีศึกษา

2. ทำไมต้องใช้ Raspberry Pi Pico?

RP2040 มี PIO และ DMA ที่ใช้ Capture สัญญาณตาม Pixel Clock ได้โดยลดภาระ CPU

3. STM32F407 ใช้ทำอะไร?

ผู้สร้างใช้ทดลอง Capture ภาพและสร้างสัญญาณ VGA ก่อนต่อยอดไปยัง RP2040

4. สัญญาณ U0–U3 คืออะไร?

เป็นบัสข้อมูลพิกเซล 4 บิตจาก Display Controller ของเครื่องต้นแบบ

5. ทำไมต้องมี XSCL, LP และ YD?

เพื่อกำหนดจังหวะอ่าน Pixel Data และระบุขอบเขตบรรทัดกับเฟรม

6. ทำไมต้องวัด Timing เอง?

เพราะสัญญาณจอมีช่วง Active Pixels และช่วงว่าง ซึ่งอาจแตกต่างกันในแต่ละ Controller

7. แปลงภาพ 320×240 เป็น 640×480 อย่างไร?

ขยายพิกเซลแต่ละจุดเป็นบล็อก 2×2 และสร้างภาพ Monochrome VGA

8. Framebuffer ต้องใช้หน่วยความจำเท่าไร?

สำหรับ 640×480 แบบ 1 บิตต่อพิกเซลใช้ 38,400 Bytes หรือ 37.5 KiB

9. ต่อ 5V เข้า Pico โดยตรงได้ไหม?

ไม่ควรทำ ต้องตรวจแรงดันและใช้วงจรปรับระดับสัญญาณให้เหมาะกับ GPIO 3.3V

10. ใช้ Resistor ค่าใดกับ VGA?

Source มีค่าต่างกัน ต้องตรวจวงจรและ Implementation ที่เลือกก่อนต่อจริง

11. GitHub Pico แสดง VGA ได้ทันทีหรือไม่?

README ระบุว่า Capture ใช้งานได้ แต่ยังมีงานด้าน Output เพิ่มเติมเป็น Future Improvement

12. มี PDF คู่มือให้ดาวน์โหลดไหม?

มีเอกสาร 4 ไฟล์จาก Instructables รวมคู่มือ Samsung SPS-1000 และ Display Controller

13. มีวิดีโอสาธิตไหม?

ไม่พบวิดีโอที่แนบในสองบทความต้นฉบับที่ตรวจสอบ

14. เทคนิคนี้ใช้กับ LCD เก่าทุกรุ่นได้ไหม?

Source ไม่ได้ยืนยัน ต้องตรวจ Signal, Pinout, Voltage และ Timing ของแต่ละจอใหม่

References / แหล่งข้อมูลต้นฉบับ

  1. Hackaday: Translating An Old Display To A New One
  2. Voltage Ventures: Instructables Tutorial ครบ 8 Steps
  3. GitHub: Pico Sniffing SPS1000
  4. GitHub: OpenDisplayBridge
  5. GitHub: STM32F407 VGA SPI

ต่อยอดโปรเจกต์ Electronics กับ GlobalByte

สนใจทดลอง Raspberry Pi Pico, STM32, Reverse Engineering หรือ Embedded System สามารถสอบถามทีม GlobalByte เกี่ยวกับ Development Board, Level Shifter, Connector และอุปกรณ์ Maker ที่เหมาะกับโปรเจกต์ได้ โดยควรตรวจสเปกและความเข้ากันได้ก่อนเลือกใช้งาน

 

แท็ก


Blog posts