กลับไปหน้ารวมไฟล์
all-in-one-clock-0523b7.md

ในโปรเจคนี้ เราจะมาสร้างนาฬิกาปลุก Arduino ที่มีตัวตั้งเวลาและเซ็นเซอร์วัดอุณหภูมิด้วยกัน งานนี้มันส์แน่ๆ จัดไปวัยรุ่น!

การต่อสาย:

ปุ่ม #1 Mode: ต่อกับขา Digital Pin 2

ปุ่ม #2 Select: ต่อกับขา Digital Pin 4

ปุ่ม #3 Plus: ต่อกับขา Digital Pin 3

ปุ่ม #4 Minus: ต่อกับขา Digital Pin 12

ปุ่ม #5 Timer on/0ff: ต่อกับขา Digital Pin 11

น้องสามารถต่อชิ้นส่วนทั้งหมดเข้ากับเบรดบอร์ดได้เลย หรือถ้าอยากใส่เคสสวยๆ ก็ต่อเข้ากับ Arduino Proto Shield เอาได้นะ สู้งานนะน้อง

Libraries ที่ต้องใช้:

DHT - Library สำหรับเซ็นเซอร์ DHT

LiquidCrystal I2C - Library สำหรับควบคุมจอ LCD ผ่าน I2C

Wire - Library สำหรับการสื่อสารแบบ I2C

virtuabotixRTC - Library สำหรับ RTC รุ่นเก่า

RTCLib - Library สำหรับ RTC จาก Adafruit

วิธีใช้งาน:

  1. สลับระหว่างหน้าจอต่างๆ โดยกดปุ่ม Mode
  2. ตั้งเวลาโดยกดค้างปุ่ม Mode ในหน้าจอที่ 1
  3. หน้าจอ 1: แสดงเวลา, วันที่ และอุณหภูมิ
  4. หน้าจอ 2: สำหรับตั้งค่าปลุก
  5. หน้าจอ 3: ตัวตั้งเวลา (Timer)
  6. หน้าจอ 4: เปิด/ปิด การทำงานของนาฬิกาปลุก

เราจะใช้ปุ่ม Mode เป็นตัวสลับไปมาระหว่างหน้าจอทั้งหมดเลย

ปุ่มแต่ละปุ่มมีหน้าที่ของมันนะ พวกปุ่ม + กับ - จะใช้บ่อยสุดสำหรับเพิ่มหรือลดตัวเลข ส่วนปุ่ม Select มักใช้สำหรับเลือกระหว่างตัวเลือกต่างๆ และปุ่ม Timer ใช้สำหรับเริ่มหรือหยุดตัวตั้งเวลา ห้ามช็อตนะตัวนี้ จำให้แม่น!

รายละเอียดทางเทคนิคเพิ่มเติม

All-in-One Clock 1.0 ตัวนี้เป็นการรวมเซ็นเซอร์หลายๆ ตัวเข้ามาอยู่ในแดชบอร์ดเดียว โดยซิงค์นาฬิกา Real-Time Clock (RTC) ที่แม่นยำกับเซ็นเซอร์วัดสภาพแวดล้อม ทำให้ Arduino ทำหน้าที่เป็นศูนย์รวมข้อมูล แล้วจัดรูปแบบและแสดงผลบนหน้าจอ LCD

การจัดการระบบเซ็นเซอร์

การจัดการเซ็นเซอร์หลายตัวให้มีประสิทธิภาพต้องวางแผนบัสการสื่อสารให้ดี:

  1. แชร์บัส I2C: โมดูลอย่าง DS3231 RTC และ BMP280 เซ็นเซอร์วัดความดันบรรยากาศ สามารถแชร์บัส I2C เดียวกัน (ขา SDA/SCL) ได้ Arduino จะสื่อสารกับแต่ละตัวแยกกันโดยใช้ที่อยู่ (Device Address) ที่ไม่ซ้ำกัน
  2. ขา Digital สำหรับ DHT: เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT22 ใช้ขา Digital เพียงขาเดียวสำหรับโปรโตคอลสื่อสารแบบ One-Wire ของมัน
  3. SPI สำหรับจอแสดงผล: จอแสดงผลแบบ TFT ตามแผนภาพการต่อสายด้านบน โดยทั่วไปจะต้องการบัส Hardware SPI (ขา MOSI, MISO, SCK) สำหรับการถ่ายโอนข้อมูลที่รวดเร็ว

ความท้าทายหลักในการเขียนโปรแกรมคือการอัพเดทหน้าจอโดยไม่ให้เกิดการกระพริบ (Flicker) ที่รบกวนสายตา วิธีง่ายๆ ที่ชอบทำกันคือล้างหน้าจอทั้งหมด (tft.fillScreen(BLACK)) ในทุกๆ ลูป ซึ่งทำให้เกิดการกระพริบ วิธีแบบโปรๆ คือการวาดใหม่เฉพาะส่วน:

  1. วาดข้อความที่คงที่ทั้งหมด (เช่น ป้าย "TEMP:" หรือ "TIME:") แค่ครั้งเดียวในช่วง Setup
  2. ในลูปหลัก ก่อนจะอัพเดทค่าที่เปลี่ยนแปลง (เช่น ตัวเลขอุณหภูมิ) ให้ใช้ tft.fillRect() เพื่อวาดกล่องสีดำ เฉพาะ บริเวณที่ตัวเลขนั้นปรากฏ
  3. เขียนค่าใหม่ลงไปในตำแหน่งเดิม วิธีนี้จะอัพเดทเฉพาะพิกเซลที่เปลี่ยนไปเท่านั้น ทำให้การแสดงผลลื่นไหล ไม่กระพริบ

ฐานฮาร์ดแวร์เทเลเมทรีแบบบูรณาการ

ถ้าอยากอัพเกรดโปรเจคนี้ให้จัดเต็มแบบสุดๆ ลองใช้ชุดฮาร์ดแวร์นี้ดู:

  • Arduino Mega 2560: หน่วยความจำเพียบ พอให้ไลบรารีกราฟิกและเซ็นเซอร์หลายตัวทำงานลื่นๆ
  • จอสี LCD TFT แบบ SPI รุ่น ILI9341: สำหรับแสดงผลกราฟิกสวยคมชัดระดับ HD
  • โมดูลนาฬิกาจริง (RTC) แบบ I2C รุ่น DS3231: ไว้รักษาเวลาให้แม่นยำ
  • เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT22
  • เซ็นเซอร์วัดความกดบรรยากาศ BMP280 แบบ I2C: เพิ่มข้อมูลความดันอากาศและความสูงได้

เวอร์ชัน 2.0

สำหรับเวอร์ชัน 2.0 ที่อัพเกรดกว่าเดิม สามารถไปดูรายละเอียดเพิ่มเติมได้

GitHub:

ลิงก์สำหรับโค้ดและไฟล์ทั้งหมด

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

apps:
  - "1x Cura Slicer"
  - "1x Arduino IDE"
author: "dzh121"
category: "Screens & Displays"
components:
  - "1x Arduino Proto Shield"
  - "1x Real Time Clock (RTC)"
  - "1x Buzzer"
  - "1x Hot glue gun (generic)"
  - "1x I2C 16x2 Arduino LCD Display Module"
  - "1x Cutter"
  - "1x Breadboard (generic)"
  - "1x AM2302 DHT22"
  - "5x Tactile Switch, Top Actuated"
  - "1x SolderWire"
  - "1x 3D Printer (generic)"
  - "1x Hook Up Wire Kit, 22 AWG"
  - "1x Soldering iron (generic)"
  - "1x Arduino UNO"
description: "Assemble an ultimate temporal and atmospheric station integrating the DS3231 RTC, DHT22 humidity matrix, and BMP280 barometer flawlessly onto a unified TFT LCD display."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/dzh121/All-In-One-Clock-1.0/blob/main/clock_alarm.ino"
encryptedPayload: "U2FsdGVkX193nPoGFx9Y9991vZII6xl1fpSuwiky31btmV3/m0g+sgsptC7ditNbPWl7PNHSIWcWx3bkiCpyCnkwBSXEHdtc6Yd9KgjtaUljBFTypUVZ4Om6nWlrkP2g"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/all-in-one-clock-0523b7_cover.jpg"
lang: "en"
likes: 0
passwordHash: "4b0c1c210972cfa4a39ed791d7afca8426d9cd5fef1f2e656ce7dff040c61c06"
price: 2450
seoDescription: "Create an All in one clock 1.0 using Arduino Uno and RTC with alarm, temperature senser, and timer functions."
tags:
  - "Clocks"
  - "Entertainment System"
  - "Smart appliances"
title: "นาฬิกาเทพๆ งานง่ายแต่หล่อ 1.0"
tools: []
videoLinks: []
views: 3535