กลับไปหน้ารวมไฟล์
night-time-clock-ed0573.md

Project: Night Time Clock (นาฬิกาบอกเวลาฉบับตัวตึงภาคค่ำคืน)

Background

พวกมนุษย์ตัวจิ๋ว (ลูกๆ หลานๆ เรานั่นแหละ) ชอบตื่นมากลางดึกหรือไม่ก็เช้ามืดบ่อยๆ ปัญหาก็คือเด็กวัยนี้ยังดูเวลาไม่เป็นไงน้อง พี่เลยต้องหาวิธีช่วยให้เจ้าพวกตัวเล็กเขารู้ว่า "เห้ย นี่มันยังเวลานอนนะ" หรือ "ตื่นได้แล้ว" มีคนเคยบอกพี่ว่ามันมีนาฬิกาที่เปลี่ยนสีได้ตอนกลางคืนขายอยู่นะ แต่ก็นะ... ระดับเราแล้ว จะไปซื้อทำไม? ทำเองมันส์กว่าเยอะ จัดไปวัยรุ่น!

Operation

เสียบ Adaptor เข้ากับปลั๊กไฟบ้านเรานี่แหละ แล้วระบบจะเริ่ม Run ทันที ตอนเริ่มแรกมันจะพยายามเชื่อมต่อ WiFi ตามที่เรา Set ไว้ใน Code ตอน Upload ลง Board ระหว่างที่มันกำลังงมหา WiFi อยู่เนี่ย ไฟ LED ตรงตัวคั่น (Separator) จะกระพริบสลับสีแดงกับน้ำเงิน พอต่อ WiFi ติดปุ๊บ มันจะไป Update เวลาผ่าน NTP แล้วโชว์เวลาบนหน้าจอทันที... แค่นี้แหละ หล่อเท่!

ส่วนรายละเอียดการตั้งค่ากับฟีเจอร์เด็ดๆ ดูข้างล่างเลยน้อง

Features

มันคือนาฬิกาครับน้อง... บอกเวลาแบบ 24 ชั่วโมงตรงเป๊ะ

ตอนกลางวันไฟสีเขียว สดใสวัยรุ่นชอบ

แต่ไฮไลท์มันอยู่ตรงที่ "การเปลี่ยนสี" ตามเวลาครับน้อง หน้าปัดนาฬิกาจะเป็นสีเขียวตอนกลางวัน และกลายเป็นสีแดงตอนกลางคืน โดยค่า Default พี่ตั้งช่วงเวลากลางคืนไว้ที่ 18:30 ถึง 6:45 (ก็ตามไลฟ์สไตล์พี่อ่ะนะ) แต่น้องไปแก้เองได้ เดี๋ยวพี่บอกวิธี

ตอนกลางคืนไฟสีแดง นอนยาวๆ ไป

เรามี Push button (ปุ่มกด) กับ Potentiometer (ตัวปรับค่า) เอาไว้สลับโหมดและตั้งค่าต่างๆ

นอกจากนี้ยังมี Light sensor คอยเช็คแสงรอบๆ เพื่อปรับความสว่างหน้าปัดให้พอดี ไม่ให้มันสว่างแยงตาตอนนอน หรือมืดเกินไปตอนกลางวัน

Push button (ปุ่มกดคุมจักรวาล)

ถ้าไฟ LEDs เปิดอยู่:

  • กดสั้นๆ 1 ที - ปิดไฟ LEDs
  • กดเร็วๆ 2 ที - บังคับเข้า Day mode (ถ้าตอนนั้นเป็น Night mode อยู่)
  • กดค้าง 2 วินาที - บังคับเข้า Night mode (ถ้าตอนนั้นเป็น Day mode อยู่)
  • กดค้าง 4 วินาที - เข้าโหมดตั้งช่วงเวลากลางคืน (Night time interval setup)

ถ้าไฟ LEDs ปิดอยู่:

  • กดสั้นๆ 1 ที - เปิดไฟ LEDs
  • กดเร็วๆ 2 ที - เปิดโหมดเช็ค Sensor วัดแสง (Light sensor mode)
  • กดค้าง 2 วินาที - เข้าโหมดปาร์ตี้ (Party mode!)

Potentiometer

ในโหมดตั้งค่าช่วงเวลากลางคืน เราจะใช้ Potentiometer ตัวนี้แหละหมุนปรับเวลาเอาตามใจชอบเลย

การสลับโหมด Day และ Night

น้องสามารถสลับโหมดไปมาได้เอง ถึงแม้จะยังไม่ถึงเวลาที่ตั้งไว้ก็ตาม

ถ้าอยู่ใน Day mode แล้วไฟเปิดอยู่ ให้กด Push button ค้างไว้ 2 วินาที ไฟตรงตัวคั่นจะเปลี่ยนเป็นสีแดง พอปล่อยมือปุ๊บ มันจะเข้า Night mode ทันที

ถ้าอยู่ใน Night mode แล้วไฟเปิดอยู่ ก็แค่ดับเบิลคลิก (กด 2 ทีเร็วๆ) ที่ปุ่ม มันก็จะตัดเข้า Day mode ทันที เผื่อเจ้าตัวเล็กตื่นก่อนเวลาแล้วอยากลุกจากเตียงไงล่ะ

Night time setup (ตั้งเวลานอน)

ถ้ากด Push button ค้างไว้ 4 วินาที (ตอนไฟเปิด) ไฟตัวคั่นจะกลายเป็นสีน้ำเงิน พอปล่อยมือจะเข้าโหมดตั้งค่า ตัวเลขชั่วโมงจะกระพริบ ให้น้องหมุน Potentiometer เพื่อเปลี่ยนเวลา แล้วกดปุ่มเพื่อยืนยัน พอตั้งเวลาเริ่มและเวลาจบเสร็จแล้ว ให้กดดับเบิลคลิกเพื่อ Save ค่าลงใน Flash storage (ความจำตัวเครื่อง) คราวนี้ต่อให้ไฟดับ ค่าที่ตั้งไว้ก็ไม่หายนะน้อง สู้งานสุดๆ!

ถ้าจะยกเลิกการตั้งค่า ให้กดปุ่มค้างไว้ 2 วินาทีจนไฟตัวคั่นเป็นสีน้ำเงิน

Light sensor mode (โหมดเด็กช่าง)

พี่ทำโหมดนี้ไว้เช็คค่าจาก Sensor วัดแสงเพื่อเอามาปรับแก้ Code ให้เนียนขึ้น จริงๆ ไม่ต้องใช้ในชีวิตประจำวันก็ได้ แต่พี่ใส่ทิ้งไว้ให้เผื่อน้องอยากลอง ของดีนะเนี่ย!

ตอนไฟปิดอยู่ ให้กดดับเบิลคลิกที่ปุ่มเพื่อเปิดโหมดนี้ หน้าปัดจะโชว์ค่า Lux ที่วัดได้จาก Sensor ถ้าค่าเกิน 9999 มันจะขึ้นขีด (----) แต่ถ้าค่าน้อยกว่า 100 มันจะโชว์ทศนิยม 2 ตำแหน่ง โดยใช้ไฟตัวคั่นตัวล่างเป็นจุดทศนิยม

โหมดวัดแสง โชว์ค่า Lux แบบละเอียดยิบ

กดดับเบิลคลิกอีกทีเพื่อออกจากโหมดนี้

Party Time (จัดไปวัยรุ่น!)

ถ้าไฟปิดอยู่ แล้วน้องกดค้าง 2 วินาที จะเข้าสู่ Party mode! มันจะสุ่ม Pattern ไฟรุ้งมาโชว์ 30 วินาที

มี 3 รูปแบบนะน้อง:

  • สุ่มสี LED ทุกดวงสลับไปมาแบบมั่วๆ แต่มันส์
  • สีรุ้งวิ่งจากขวาไปซ้าย
  • LED ทุกดวงเปลี่ยนสีรุ้งไปพร้อมๆ กันแบบ Fade
ไฟสุ่มแบบเมามันส์
รุ้งวิ่ง
รุ้ง Fade

อยากหยุดปาร์ตี้? ก็แค่ดับเบิลคลิกที่ปุ่ม จบข่าว!

Persistent settings storage (ความจำไม่ลืมเลือน)

ค่าที่เราตั้งไว้จะถูกเก็บลงใน Flash storage ของ Board Arduino Nano 33 IoT (เพราะรุ่นนี้ไม่มี EEPROM)

แต่เตือนไว้อย่างนะน้อง การเขียนข้อมูลลง Flash บ่อยเกินไปมันจะพังเอาได้ ปกติเขาแนะนำว่าไม่ควรเขียนเกิน 10,000 ครั้ง แต่ถ้าเราใช้งานแบบคนปกติทั่วไป ตั้งค่าวันละครั้งสองครั้ง ใช้เป็น 10 ปีก็ไม่พังหรอก ห่วงเรื่องช็อตดีกว่า!

Design (งานออกแบบ)

ตอนแรกพี่ตั้งโจทย์ไว้แค่ 2 อย่าง: กลางวันสีเขียว กลางคืนสีแดง จบ!

Input

ตอนวางแผน พี่คิดว่าต้องมีวิธีเปลี่ยน Settings ง่ายๆ เลยมาลงเอยที่ Push button กับ Potentiometer นี่แหละ

ซูมดูปุ่มกดกับตัวปรับค่าแบบชัดๆ

ปุ่มเดียวแต่คุมได้หลายอย่าง (Multi-purpose) ทั้งกดสั้น กดเบิ้ล กดค้าง ส่วน Potentiometer ก็เอาไว้หมุนค่าที่ต้องการ สะดวกดีไม่ต้องใช้ปุ่มเยอะให้วุ่นวาย ส่วนตัว Potentiometer พี่ใช้จุกไม้กดทับไว้จากฝาหน้าเพื่อให้มันแน่นหนา

จุกไม้ DIY เอาไว้ล็อค Potentiometer

Housing (ตัวเรือน)

เพื่อให้แสงจาก LED ของแต่ละ Segment ไม่ปนกัน พี่ต้องแบ่งช่องให้มัน (Chambers) ตอนแรกกะจะใช้ Router เซาะร่องไม้เอา แต่แหม... ทำด้วยมือมันยาก (ใจจริงอยากได้เครื่อง CNC จะตาย) จะใช้ 3D-printer ก็ไม่มีเครื่อง (รอเก็บตังค์ซื้ออยู่เนี่ย)

สุดท้ายพี่เลยใช้ "แผ่นอลูมิเนียมแบน" (Aluminium flat bar) ขนาด 15x2 มม. มาขัดกันเป็นช่องๆ เหมือนรังผึ้ง ข้อดีคืออลูมิเนียมมันสะท้อนแสงได้ดี ช่วยให้แสง LED กระจายตัวสวย แต่!! ระวังนะน้อง อลูมิเนียมมันนำไฟฟ้า ถ้าปลายที่ตัดหรือรอยตะไบมันไปโดนจุดบัดกรีหรือสายเปลือยเข้าล่ะก็... เรียบร้อย! ช็อตควันขึ้นแน่ๆ พี่เลยต้องเช็คให้ชัวร์ว่าไม่มีส่วนไหนไปแตะวงจรไฟฟ้า

แผ่นอลูมิเนียมพร้อมประกอบ
ประกอบร่างลงกล่อง
บากช่องที่อลูมิเนียมให้สายไฟลอดได้ ไม่ให้มันบี้สาย

Clock face (หน้าปัดนาฬิกา)

หน้าปัดพี่ใช้พลาสติกกึ่งโปร่งใส (ตัดมาจากถังพลาสติกเก่า) แล้วเอามาบังแสงด้วยกระดาษที่ตัดเป็นช่องๆ พี่กลัวว่าแสงจาก LED เม็ดเดียวมันจะจ้าเกินไปจนเห็นเป็นจุด (Hot spot) เลยใส่ "กระดาษไข" (Baking paper) ช่วยกระจายแสง (Diffuse) แล้วปิดท้ายด้วย "ฟอยล์อลูมิเนียม" ไว้สะท้อนแสงข้างในช่องให้มันสว่างทั่วๆ กัน

ทุกอย่างติดกันด้วยกาวแท่งธรรมดาๆ นี่แหละ แล้วแปะลงบนพลาสติกด้วยเทปกาว (จริงๆ ใช้เทปกาวสองหน้าจะเนียนกว่า แต่ตอนนั้นที่บ้านพี่หมดพอดี ฮ่าๆ)

ด้านหลังของแผงหน้าปัด

อีกเรื่องที่สำคัญคือ Light sensor ต้องรับแสงได้ พี่เลยต้องเจาะช่องและลบมุม (Chamfer) ที่พลาสติกหน้าปัด เพื่อให้ Sensor รับแสงได้เต็มที่

[Sensor](https://s.shopee.co.th/7VBG2rX65j) วัดแสง แอบอยู่ตรงนี้นะจ๊ะ

ประกอบแผงหน้าเข้ากับตัวเรือนด้วยสกรูจากด้านหลัง เป็นอันเสร็จพิธี!


EXPANDED TECHNICAL DETAILS (ข้อมูลสายลึก)

Ambient Timekeeping

นาฬิกาเรือนนี้เน้นมองเห็นชัดในที่มืดสนิทโดยไม่ทำให้ "แสงแยงตา" จนรำคาญ

  • Low-Glare Display: ใช้ระบบ PWM dimming ในการหรี่แสง และมี Photoresistor (LDR) คอยวัดแสงในห้อง เพื่อปรับความสว่างลงต่ำสุดตอนกลางคืนโดยอัตโนมัติ
  • RTC Precision: ใช้โมดูล DS3231 Real-Time Clock ซึ่งตัวนี้แม่นยำสูงมากเพราะมีระบบชดเชยอุณหภูมิในตัว เวลาไม่ค่อยเพี้ยนแน่นอนน้อง

Wake-Up Logic

  • Gentle Alarm: แทนที่จะส่งเสียงติ๊ดๆ น่ารำคาญ พี่ใช้ Neopixel LED ring จำลองแสงอาทิตย์ (Sunrise) โดยค่อยๆ เพิ่มความสว่างและเปลี่ยนโทนสีจากแดงอุ่นๆ เป็นขาวสว่างในช่วง 15 นาทีก่อนเวลาตื่นจริง ละมุนสุดๆ บอกเลย!

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

title: "Night Time Clock"
description: "A digital clock to help small children to differentiate day time and night time through colours."
author: "johan_m_o"
category: "Screens & Displays"
tags:
  - "clocks"
  - "kids"
views: 6198
likes: 2
price: 299
difficulty: "Intermediate"
components:
  - "1x Capacitor 100 µF"
  - "1x 5V/2.5A Power adaptor"
  - "1x LED Strip, NeoPixel Digital RGB"
  - "1x Hand router"
  - "1x Drill / Driver, Cordless"
  - "1x Plastic can (semi-transparent)"
  - "2x Paired screw terminal"
  - "1x Soldering iron (generic)"
  - "1x Arduino Nano 33 IoT"
  - "1x Various screws"
  - "1x Push button - 1 pole"
  - "1x White baking paper"
  - "1x Files"
  - "1x 6mm wood plugs"
  - "4x Capacitor 220 µF"
  - "1x Saw"
  - "1x A bunch of wires"
  - "1x Glue stick"
  - "1x 18mm pine shelf"
  - "5x Resistor 220 ohm"
  - "1x Black paint"
  - "1x 15x2mm aluminium flat bar"
  - "1x 35x8mm pine lath"
  - "1x Dremel"
  - "1x Aluminium foil"
  - "1x Masking tape"
  - "1x Paper"
  - "1x VEML 7700 light sensor"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/johan-m-o/NightTimeClock"
documentationLinks: []
passwordHash: "bbd74a5b360922aa37c47d9eb80b0384f0b26befcde5370b83a10070df263688"
encryptedPayload: "U2FsdGVkX1+0JZWNXnPAMPqKilnax4M4Ln+6XugEGy0O26/SXKEsm3oJCYuV/lSMEUVb6+lT2a4+MdXdI9ot8iHf5OPrbxF4ufr+lY1f+/Q="
seoDescription: "A Digital clock to help children differentiate day time and night time through colours. Arduino project guide."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/night-time-clock-ed0573_cover.jpg"
lang: "th"