กลับไปหน้ารวมไฟล์
retro-arcade-clock-a69da6.md

ชื่อโปรเจกต์: Retro Arcade Clock (นาฬิกาอาเขตย้อนยุคสุดเฟี้ยว)

เกริ่นนำ: Retro Arcade Clock - [Arduino](https://s.shopee.co.th/7fUgFAWSki)

มาสร้างนาฬิกาหัวเตียงแนว Arcade แบบโต้ตอบได้กันน้อง มีทั้งหน้าจอ Touchscreen แถมยังมีตัวละครเกมอาเขตขยับไปมาได้ด้วย ความเจ๋งคือเราอัดเสียงปลุกเองได้ตามใจชอบเลยนะ

โปรเจกต์นี้มีเคสแบบ 3D-printed และมีโปรแกรมให้เลือกเล่นถึง 4 แบบ จัดไปวัยรุ่น:

1. Arcade Clock - มี Animation ของ DK Mario, Space Invaders และ Pac-Man

2. Pacman Clock - เกม Pac-Man แบบขยับได้พร้อมฟังก์ชันนาฬิกา

3. DK Clock - เกม DK (Donkey Kong) แบบโต้ตอบได้พร้อมฟังก์ชันนาฬิกา

4. Tumble Ghost - เกมผี Pac-Man สไตล์ Flappy Bird (เล่นเพลินจนลืมตื่น)

บอกเลยว่าทำสนุกมาก และเป็นของขวัญที่โคตรหล่อเท่สำหรับใครที่โหยหาบรรยากาศเกมอาเขตยุค 80s

ขั้นตอนที่ 1: เตรียมของกันหน่อยวัยรุ่น

Components (ของที่ต้องใช้)
  • บอร์ด Arduino - Arduino Mega 2560
  • Touchscreen Arduino Shield - บอร์ดขยาย 3.2" Mega Touch [LCD](https://s.shopee.co.th/6AfsSPcAnb) Shield
  • หน้าจอ Touchscreen - จอ 3.2" TFT LCD + Touchscreen สำหรับ Arduino Mega 2560
  • Module นาฬิกา Real-time - DS3231 RTC
  • Module บันทึกเสียง - ISD1820
  • เส้น PLA filament สำหรับเครื่องพิมพ์ 3D
  • กาว Epoxy แบบสองส่วนสำหรับประกอบเคส
  • สาย USB ยาว 2 เมตร และ USB charger (สำหรับจ่ายไฟให้นาฬิกา)
  • ปืนกาว (Hot glue gun)
  • สายรัด Cable ties 3 เส้น

ของเสริมสำหรับระบบหรี่แสงอัตโนมัติ (ใส่แล้วหล่อเท่เลยงานนี้ สำหรับคนจะเอาไว้หัวเตียง):

  • Resistor 270k ohm
  • Zener diode 3.3v
  • 0.5 watt resistor 47 ohm
  • Light dependent resistor ([LDR](https://s.shopee.co.th/1BHCUqb0Tt))

ขั้นตอนที่ 2: ปริ้นเคส 3D

พี่ปริ้นเคสด้วยเครื่อง Creality Ender 3 ส่วนไฟล์ 3D และวิธีทำเคสหาดูได้ใน Thingiverse เลยน้อง

ขั้นตอนที่ 3: ต่อวงจร (อย่าให้ช็อตนะตัวนี้)

วงจรโดยรวมจะมี Module นาฬิกา Real-time, Arduino Mega, Module เสียง, หน้าจอ Touchscreen และ Screen Shield

1. Real-Time Clock (RTC)

ติดตั้ง Module นาฬิกาไว้ด้านหลังบอร์ด Arduino Mega ตามรูปเลย พี่ใช้ปืนกาวกับโฟมรองไว้หน่อยเพื่อไม่ให้มันแตะกันจนช็อต และช่วยกันกระแทกด้วย ในเคสของพี่ พี่บัดกรีขา RTC 2 ขาลงบอร์ด Arduino โดยตรง แล้วใช้สายไฟเชื่อม 5V กับ GND เข้ากับ Arduino

2. Module บันทึกเสียง

ตัวนี้โคตรเจ๋งและใช้ง่าย ทำเหมือนข้างบนเลย ใช้โฟมกับปืนกาวจัดตำแหน่ง Module กับลำโพงไว้หลัง Arduino ระวังอย่าให้ขั้วมันไปแตะโดนส่วนอื่นนะ ตัว Module เสียงจะถูกสั่งงานด้วย Pins D8 บน Arduino เพราะงั้นต่อสายไฟเลี้ยงกับสายสัญญาณตาม Diagram ที่ให้ไว้เลย

3. ระบบหรี่แสงอัตโนมัติ (ไม่ทำก็ได้นะน้อง)

ถ้าจะเอาไว้หัวเตียง ตอนนอนคงไม่อยากให้หน้าจอมันสว่างแยงตาใช่ไหมล่ะ? (ถ้าไม่ซีเรียสก็ข้ามไป) ประเด็นคือไฟ Backlight ของจอ TFT มันถูกฟิกเข้ากับ +3.3V มาเลย ปรับผ่าน Arduino ไม่ได้ เราเลยต้องแงะมันออกมาต่อเข้ากับ Pins PWM ของ Arduino แทนเพื่อคุมความสว่าง พี่พยายามทำแบบให้ Pins หรือลายวงจรเสียหายน้อยที่สุด ตามมาดูวิธีกัน:

(a) ใช้ LDR ติดไว้หลังเครื่องเพื่อเช็คแสง เจาะรู 3mm สองรูแล้วแหย่ขา LDR ออกไป ใช้ปืนกาวล็อคขาไว้ด้านใน บัดกรีสายไฟเข้าตาม Diagram เลย แล้วอย่าลืมต่อ Resistor 270k Ohm เข้ากับ Pins A7 ของ Arduino ด้วยล่ะ

(b) ถอดจอ TFT ออกมาวางบนที่เรียบๆ หา Pins 19 (LED_A) แล้วค่อยๆ แซะพลาสติกที่ฐาน Pins ออกนิดหน่อย จากนั้นดัดขา Pins ให้แบนออกไปจากตัว Connector ตามรูปเลย เช็คให้ชัวร์ว่าเสียบ TFT Shield กลับเข้าไปได้แนบสนิทโดยที่ขาที่ดัดไม่ไปเกะกะใคร

(c) บัดกรี Resistor 47 Ohm เข้ากับขาที่ดัดออกมา แล้วต่อสายไฟจาก Resistor ไปที่ Pins D9 ของ Arduino Mega (Pins D9 รับกระแสได้ 40mA ตัวต้านทานจะช่วยคุมไม่ให้เกินนี้) แล้วก็ติด Zener Diode 3.3v เข้ากับ Pins เดียวกัน (LED_A) ต่อลง Ground ตาม Diagram เพื่อคุมแรงดัน Backlight ไม่ให้เกิน 3.3V เดี๋ยวจอพังนะน้อง

4. หน้าจอ TFT และ Arduino Shield

ค่อยๆ เสียบหน้าจอ TFT เข้ากับ Shield ของมัน แล้วเอาไปเสียบลงบน Arduino Mega อีกทีตามรูป ตัว RTC มีแบตเตอรี่ในตัว เพราะฉะนั้นเวลาจะไม่หายแม้จะถอดปลั๊ก ส่วนเวลาปลุกจะถูกเก็บไว้ใน EEPROM ของ Arduino ปลอดภัยหายห่วงแม้น้องจะทำปลั๊กหลุด

ขั้นตอนที่ 4: อัด Code ลงเครื่อง

โปรเจกต์นี้ต้องใช้ไฟล์และ Libraries หลายตัวหน่อยถึงจะ Compile ผ่าน Code ตัวนี้พี่เขียนขึ้นมาโดยเฉพาะ ดึงความสามารถของ Library และ Hardware มาใช้ร่วมกับ Graphics ที่พี่แต่งเอง

หมายเหตุ: พี่ใช้ Arduino IDE v1.06 เขียนโปรเจกต์นี้ เพราะ Library บางตัวมันเก่า ถ้าใช้อันใหม่ๆ (v1.6 ขึ้นไป) อาจจะมีปัญหาได้ เพื่อความง่าย พี่แนะนำให้ใช้ IDE v1.06 นะน้อง

1. Arduino IDE

ไปโหลด Arduino IDE version 1.06 มาลงเครื่องคอมพิวเตอร์ก่อนนะวัยรุ่น

2. Libraries

ต้องโหลดพวกนี้ไปลงใน Folder Libraries ของ IDE ด้วยนะ:

  • UTFT.h และ URtouch.h
  • Time.h
  • DS1307RTC.h
  • Wire.h และ EEPROM.h (พวกนี้ปกติมีมาให้ใน IDE v1.06 อยู่แล้ว)

ยกเครดิต UTFT.h และ URtouch.h ให้กับ Rinky-Dink Electronics เลยนะ

4. ปัญหาหน้าจอ TFT (ที่น้องอาจเจอ)

จอมันมีหลายโรงงานผลิต บางทีอาจจะมีอาการแปลกๆ ตามนี้:

(a) ยี่ห้อ Sainsmart - ถ้าหลังจอเขียนว่า Sainsmart น้องต้องแก้ไฟล์ "initlcd.h"

แก้บรรทัด: LCD_Write_COM_DATA(0x01, 0x2B3F);

เป็น: LCD_Write_COM_DATA(0x01, 0x3B3F);

แล้ว Restart IDE ใหม่ค่อยอัด Code นะ

(b.) ชิปเซ็ตจอ - จอ 3.2" มักจะใช้ชิป "SSD1289" หรือ "ILI9341" ซึ่งดูตาเปล่าไม่ออกหรอก ถ้าอัด Code แล้วหน้าจอขาวจั๊วะ ให้ลองแก้ Code บรรทัดนี้:

จาก

UTFT myGLCD(SSD1289, 38, 39, 40, 41);

เป็น

UTFT myGLCD(ILI9341_16, 38, 39, 40, 41);

แล้วลองอัพโหลดใหม่ดู

(c.) ทัชสกรีนกลับด้าน (Inverted)

ถ้าใครกดบนแล้วไปติดล่าง ให้หาบรรทัด: "yT = myTouch.getY();" แล้วแก้เป็น: "yT = 240 - myTouch.getY();"

หาให้ครบทุกจุดนะน้อง มีทั้งตอนคุม Pacman และในเมนู Setup

5. ไฟล์กราฟิก (Graphics Files)

อย่าลืมเอาไฟล์ bitmap ไปใส่ไว้ใน Folder เดียวกับ Code Arduino ของน้องด้วย ไม่งั้น Error กระจายนะ

6. ตั้งค่านาฬิกา

พอโหลด Code เสร็จ ให้กดตรงกลางหน้าจอเพื่อเข้าเมนู Setup ตั้งเวลาและนาฬิกาปลุกแบบ 24 ชั่วโมง แล้วกด SAVE ด้วยล่ะ

7. ทดสอบเสียงปลุก

Module ISD1820 คุมด้วย Pins D8 ของ Arduino วิธีอัดเสียงก็แค่กดปุ่ม Record บน Module แล้วพูดใส่ Mic ได้เลย (พี่เอาเพลง Pac-Man มาจ่ออัด) ลองกดปุ่ม PLAY-E เพื่อเทสเสียงดู ถ้าโอเคแล้วก็ลองตั้งปลุกห่างจากเวลาปัจจุบันสัก 2 นาที อย่าลืมกด "SET" และ "SAVE" ล่ะ พอถึงเวลาถ้านาฬิกาดังก็แปลว่ารอด! วิธีปิดเสียงปลุกคือจิ้มกลางจอเพื่อเข้าเมนู Setup

8. การ Calibrate หน้าจอ

ถ้าจิ้มปุ่มไม่ตรง ให้ใช้ Code ตัวอย่าง Touchscreen Calibration ใน Library URtouch ช่วยจัดการนะ

9. 4 โปรแกรมเด็ดให้เลือก

1. Arcade Clock - รวมฮิตตัวละคร

2. Pacman Clock - เกม Pacman แบบเรียลไทม์

3. DK Clock - เกม Donkey Kong สุดคลาสสิก

4. Tumble Ghost - แนว Flappy Bird (เล่นแก้เบื่อได้ดี)

ขั้นตอนที่ 5: ประกอบร่าง!

1. ต่อไฟจากภายนอก

เจาะรูที่เคสด้านหลัง แหย่สาย USB เข้าไป บัดกรีสาย VCC, GND, D+, D- เข้าที่ฐาน USB Connector ของบอร์ด Arduino Mega ตาม Diagram ข้อดีคือมันมี Overcurrent Protection และเราสามารถอัพ Code ใหม่ได้โดยไม่ต้องรื้อกล่อง ใช้ปืนกาวล็อคสายกันกระชากด้วยสายรัด Cable ties ไว้ด้านในด้วยนะน้อง

2. การติดตั้งอุปกรณ์ลงเคส

วางวงจรลงบนเคสหน้า โดยใช้ตัวกั้น 4 รูเป็นไกด์ให้หน้าจออยู่ตรงกลางพอดี เปิดเครื่องดูว่าจอมันเบี้ยวไหม ถ้าตรงแล้วก็ยิงปืนกาวล็อคให้แน่นเลย

3. ปิดงาน

ประกบฝาหน้าเข้ากับฝาหลัง ค่อยๆ ดึงสายไฟ USB ให้ตึงพอดีๆ เสียบปลั๊ก USB Charger แล้วลุยเลยวัยรุ่น!

ขอให้สนุกนะน้อง!

รายละเอียดเทคนิคเพิ่มเติม (ฉบับเจาะลึก)

Pixel-Art Horological Visualizer (ระบบแสดงผลพิกเซลสุดคลาสสิก)

โปรเจกต์นี้โคตรสวย แสดงเวลาและวันที่สไตล์ "8-bit Arcade" โดยใช้ LED Matrix ความหนาแน่นสูง

  • MAX7219 Daisy-Chain Display Logic: บอร์ด Arduino จะคุม Module LED matrix 8x8 จำนวน 4 ตัวที่ต่ออนุกรมกัน ตัว Firmware ใช้ Font แบบ Arcade ที่เขียนขึ้นมาใหม่เพื่อแสดงเวลา วันที่ และพยากรณ์อากาศแบบตัวอักษรวิ่ง
  • DS3231 RTC Temporal Synchronization: ใช้ Module นาฬิกาความแม่นยำสูงเพื่อให้เวลาไม่เพี้ยน โดยตัว Arduino จะทำการ Sync แบบ "Second-Align" ทุกชั่วโมงเพื่อให้แม่นยำระดับไมโครวินาที

ความสวยงาม (Aesthetics)

  • Animated "Scan-Line" Effect: มี Routine ใน Software ที่จำลองเส้น Scan-line เหมือนจอ CRT รุ่นเก่า ทำให้นาฬิกาดิจิทัลตัวนี้ดู "Retro" ของจริงเลยล่ะน้อง

ข้อมูล Frontmatter ดั้งเดิม

title: "Retro Arcade Clock"
description: "Build an interactive arcade bedside clock, with a touchscreen, and animated arcade figures that you can record a sound of your choice."
author: "NZDoug"
category: "Screens & Displays"
tags:
  - "dk"
  - "arcade"
  - "pacman"
  - "mega"
  - "retro"
views: 15263
likes: 33
price: 299
difficulty: "Intermediate"
components:
  - "1x 3D Printer (generic)"
  - "1x Arduino Mega 2560"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/2fae7a42-7729-4431-a621-b1e8882069a5.ino"
documentationLinks: []
passwordHash: "1956e13952c20a2d4151b49abf454dc2310bc4d003caac64d93f6974a562e93b"
encryptedPayload: "U2FsdGVkX18/QapDLq+V6SE0kQGoUpVVPk2C/zOomNWTebS0cZLbwlbF8niaf/HswVtJFIQXonGOTYm4iU3j9x4ySR6nbNc1+K3ifzto0l4="
seoDescription: "Build a DIY Retro Arcade Clock with Arduino. Features a touchscreen, animated figures, and custom sound recording. Perfect bedside project."
videoLinks:
  - "https://www.youtube.com/embed/e5DrPF1A_Pg"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/retro-arcade-clock-a69da6_cover.jpg"
lang: "th"