กลับไปหน้ารวมไฟล์
weather-forecast-clock-using-old-alarm-and-arduino-853fbf.md

พี่มีนาฬิกาปลุกเก่าๆ ตัวนึงพังอยู่ ก็เลยเกิดไอเดียจะเอามาปรับปรุงให้เป็นนาฬิกาและสถานีพยากรณ์อากาศไปในตัว

รายละเอียดเต็มๆ พร้อมรูปภาพ ก็มีที่นี่ด้วยนะ

สำหรับโปรเจกต์นี้ น้องๆ จะต้องเตรียม:

  • นาฬิกาปลุกทรงกลมเก่าๆ สักตัว
  • [Arduino](https://s.shopee.co.th/7fUgFAWSki) Nano
  • โมดูลเซ็นเซอร์ BME280 (วัดอุณหภูมิ, ความชื้น, ความดัน)
  • โมดูลจอ [LCD](https://s.shopee.co.th/6AfsSPcAnb) จากโทรศัพท์ Nokia 5110
  • นาฬิกา RTC รุ่น DS1307
  • ชาร์จเจอร์แบตเตอรี่ลิเธียม TP4056
  • แบตเตอรี่ Li-ion เก่าจากมือถือที่ยังใช้ได้
  • โมดูลบูสต์แรงดัน 3.7v เป็น 5v ขนาดเล็ก
  • ตัวต้านทานไวแสง ([LDR](https://s.shopee.co.th/1BHCUqb0Tt) - วัดแสง)
  • [Buzzer](https://s.shopee.co.th/6pvZFdZdRf) (เอามาจาก PC เก่า)
  • ปุ่มกด 3 ปุ่ม
  • ตัวต้านทานหลายๆ ค่า (2x10k, 270 โอห์ม) และทรานซิสเตอร์ (2N2222A หรือรุ่นใกล้เคียง)
  • หดสาย (Shrink tube) ขนาดใหญ่หน่อย
  • แผ่น PCB เก่าๆ เอามาทำเป็นหน้าปกแต่ง
  • สายต่อ Micro-USB (ทั้งสองข้างเป็นหัว Micro-USB)
  • แผ่นทดลองวงจรขนาด 2x8cm และสายไฟบางส่วน

ขั้นตอนที่ 1: รื้อทุกอย่างออกมา

เริ่มแรกพี่ก็รื้อนาฬิกาเก่าออกหมด ระฆัง, มอเตอร์, กลไกนาฬิกาที่พัง...

ขั้นตอนที่ 2: ใส่ปุ่มสำหรับตั้งค่าดิจิทัล

เพราะนาฬิกาใหม่ของเราจะเป็นดิจิทัลเต็มตัว มีคอมพิวเตอร์จิ๋วอยู่ข้างใน พี่เลยเพิ่มปุ่มกดสวยๆ 3 ปุ่มไว้ที่ด้านข้าง

พี่ใช้เศษอลูมิเนียมตัดเป็นแผ่นป้าย แล้วก็ใช้แม่พิมพ์ตัวอักษรและปากกามาร์กเกอร์สีดำทำตัวอักษรสำหรับป้าย

ขั้นตอนที่ 3: ตัวเก็บประจุสำหรับมอเตอร์

พี่จะเก็บระฆังเก่าไว้เพื่อใช้ปลุกด้วยมอเตอร์ กลไกเก่าที่พังมีตัวเก็บประจุเซรามิกติดป้ายว่า 104 พี่เลยแกะออกจากแผงวงจรแล้วบัดกรีต่อเข้ากับมอเตอร์โดยตรง - มันจะช่วยป้องกันสไปก์ไฟตอนเปิดมอเตอร์ตอนปลุก ข้อสำคัญอีกอย่างคือมอเตอร์จะถูกควบคุมผ่านทรานซิสเตอร์ เดี๋ยวค่อยว่ากันทีหลัง

ขั้นตอนที่ 4: หน้าปกใหม่สำหรับนาฬิกา

เพราะพี่ตัดสินใจทำหน้าปกใหม่ให้นาฬิกา - พี่เลยหยิบแผงวงจรจากกองขยะอิเล็กทรอนิกส์มา แล้วใช้ปืนลมร้อนเป่าอุปกรณ์ทั้งหมดออกให้หมด ตรงรูกลางแผงทำไว้สำหรับจอดิจิทัลของนาฬิกาใหม่

ขั้นตอนที่ 5: จอดิจิทัลจากมือถือเก่า

สำหรับโปรเจกต์นี้พี่ตัดสินใจใช้หน้าจอ LCD จากมือถือ Nokia 5110 เก่า หน้าจอแบบนี้หาซื้อเป็นโมดูลได้ทั่วไป มันกินไฟน้อยมาก และมีไลบรารีดีๆ สำหรับ Arduino ด้วย ถ้าน้องซื้อโมดูลใหม่ที่มีหน้าจอ 5110 - น้องกำลังช่วยโลกอยู่เพราะโมดูลใหม่ทั้งหมดทำมาจากมือถือ 5110, 3110 และ 3210 ที่รื้อมาใช้ใหม่นั่นเอง!

ขั้นตอนที่ 6: ต่อวงจรต่างๆ เข้าด้วยกัน

น้องอาจจะเดาได้แล้วว่าพี่วางแผนจะใช้บอร์ด Arduino มาควบคุมนาฬิกาตัวนี้ โปรเจกต์นี้ทำตามได้ง่ายแม้แต่สำหรับมือใหม่หัดเล่น Arduino เพราะพี่ไม่ได้ทำแผงวงจรเอง มันคือบอร์ด Arduino Nano ที่มีโมดูลต่างๆ ต่อเข้าไป - เซ็นเซอร์วัดอุณหภูมิ ความดัน และความชื้น BME280, นาฬิกา RTC DS1307, ชาร์จเจอร์แบตเตอรี่ลิเธียม TP4056, โมดูลบูสต์แรงดัน 3.7v เป็น 5v ขนาดเล็ก, ตัวต้านทานไวแสง (LDR) และ Buzzer (เอามาจาก PC เก่า)

ลองดูสเก็ตช์วงจรด้วยนะ - มันแสดงการต่อทั้งหมด พี่คิดว่าทุกอย่างอ่านและเข้าใจได้ง่ายมาก แต่ถ้ามีคำถามอะไรก็ถามมาในคอมเมนต์ด้านล่างได้เลย

หมายเหตุเล็กน้อยเกี่ยวกับการตั้งค่า:

  • มอเตอร์ต่อตรงจากแบตเตอรี่ผ่านทรานซิสเตอร์ Arduino ควบคุมทรานซิสเตอร์ผ่านตัวต้านทานและพิน PWM D5
  • พิน D7-12 ใช้สำหรับต่อกับ LCD Ground และ VCC ต่อกับรางบนบอร์ดจังก์ชัน
  • LDR ติดตั้งบนหน้าปกนาฬิกา และตัวต้านทาน + สายไฟ 3 เส้น บัดกรีติดไว้ด้านหลังของหน้าปกเลย
  • สำหรับการต่อปุ่ม พี่ใช้ฟังก์ชัน PULLUP ภายในของ Arduino ปุ่ม Menu ต่อกับอินเตอร์รัพท์ และพี่เพิ่งมารู้ทีหลังว่าสามารถใช้ PULLUP ภายในสำหรับอินเตอร์รัพท์ได้ด้วย อินเตอร์รัพท์สำหรับปุ่ม Menu จำเป็นเพื่อให้โค้ดไม่ต้องสแกนสถานะของปุ่มตลอดเวลา
  • นาฬิกาจะตรวจสอบและแสดงสถานะของแบตเตอรี่ด้วย ดังนั้นแบตเตอรี่จึงต่อตรงกับพิน A0 แรงดันแบตเตอรี่ไม่เกิน 4.2V ดังนั้นการต่อแบตเตอรี่ตรงกับพินอนาล็อกของ Arduino จึงปลอดภัย
  • Buzzer ต่อตรงกับพิน PWM D6 แม้ว่าจะไม่ใช่วิธีที่ดีนัก แต่พี่ก็ทำได้เพราะ Arduino Nano ทนได้มากกว่าที่ระบุ และเพราะ Buzzer จะไม่ทำงานตลอดเวลา การตั้งค่าแบบเดียวกันนี้จะเผาพินบนบอร์ด ESP ได้ง่ายๆ ดังนั้นในกรณีนั้นพี่แนะนำให้ใช้การควบคุมผ่านทรานซิสเตอร์
  • นาฬิกามีสวิตช์อยู่แล้ว พี่เลยตัดสินใจใช้มัน มันดูเป็นธรรมชาติดีที่ด้านหลัง

ขั้นตอนที่ 7: บอร์ดจังก์ชันสำหรับต่อวงจรง่ายๆ

โมดูลทั้งหมดต้องการสายบวกและกราวด์ พี่เลยตัดสินใจใช้แผ่นทดลองวงจรขนาด 2x8cm แล้วบัดกรีราง 5V และ Ground ลงไป พี่ยังทำราง I2C เล็กๆ ไว้ด้วย เพราะมีโมดูลหลายตัวที่ใช้อินเตอร์เฟซ I2C

อีกด้านหนึ่งพี่บัดกรีพินมาตรฐานไว้ เพื่อจะได้ต่อและถอดโมดูลออกได้เมื่อต้องการ

ชิ้นส่วนเพิ่มเติมบางอย่างก็บัดกรีไว้ที่นั่นด้วย เช่น ทรานซิสเตอร์และตัวต้านทานสำหรับควบคุมมอเตอร์ และตัวต้านทานสำหรับปุ่ม Menu ที่ใช้อินเตอร์รัพท์ พี่แสดงแผนผังวงจรไว้ในส่วนก่อนหน้าแล้ว

ขั้นตอนที่ 8: จัดการเรื่องไฟเลี้ยง

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

การต่อแบตเตอรี่ก็แค่บัดกรีสายไฟเข้ากับขั้ว + และ - บนแบตเตอรี่ ไม่ต้องกังวล มันจะไม่ทำลายเซลล์เพราะมีตัวควบคุมและมีช่องว่างระหว่างขั้วกับสารเคมีในเซลล์

ในรูปนี้จะเห็นแบตเตอรี่และตัวควบคุมการชาร์จ TP4056 รวมถึงบูสเตอร์ 5V ต่อเข้าด้วยกันและเข้ากับแบตเตอรี่ พี่ใช้หดสายบางส่วนเพื่อให้ทุกอย่างเป็นฉนวนและกะทัดรัด

ขั้นตอนที่ 9: Micro USB สำหรับชาร์จและอัพเดตเฟิร์มแวร์

หลังจากบัดกรีทุกอย่างเสร็จ พี่ก็กาวติด Buzzer และเซ็นเซอร์วัดอุณหภูมิ/ความดัน/ความชื้นไว้ที่แผงหลัง มันพอดีกับช่องที่มีอยู่เดิมจากกลไกควบคุมหน้าปัดนาฬิกาเก่าพอดี

ตอนนี้ก็ถึงเวลาติดตั้งพอร์ต Micro USB ที่ด้านหลัง ทำไมต้อง Micro USB ในเมื่อ Nano ใช้ Mini USB? ก็เพราะในบ้าน สาย USB ส่วนใหญ่เป็นของมือถือ มันจะสะดวกถ้านาฬิกาใช้ได้ด้วย

เพราะพี่อยากใช้มันทั้งสำหรับชาร์จและอัพเดตฟังก์ชันนาฬิกาและสถานีอากาศ - พี่เลยปลอกสาย USB ออก สายไฟเลี้ยงส่งผ่านชาร์จเจอร์ TP4056 และสาย Data+/Data- ต่อตรงไปยังซ็อกเก็ต USB ของ Arduino Nano น้องเห็นได้ในแผนผังที่พี่แนบมา

ขั้นตอนที่ 10: การประกอบขั้นสุดท้าย

ตอนนี้ถึงเวลายัดทุกอย่างกลับเข้าไปในตัวนาฬิกาเดิมแล้ว พี่ใช้หดสายเพื่อเป็นฉนวนให้ชิ้นส่วนและโมดูลต่างๆ แม้แต่ Arduino ก็ห่อด้วยหดสาย

ขั้นตอนที่ 11: โค้ด

อย่างที่น้องเห็น นาฬิกาแน่นไปหมดด้านใน นี่ทำให้เราสร้างอะไรที่ซับซ้อนกว่านาฬิกาเก่าที่พี่มีได้ - ถ้ามีทักษะการโปรแกรมมานิดหน่อย พี่เขียนโค้ดเริ่มต้น แต่ก็ขอให้เพื่อนมาช่วยพี่ด้วย

ตอนนี้ นอกจากตัวนาฬิกาเองแล้ว โปรเจกต์นี้รองรับฟังก์ชันเหล่านี้แล้ว:

  • แสดงเวลาและวันที่ (รวมถึงเวลาและเปิด/ปิดปลุกบนหน้าจอเดียวกัน)
  • หน้าจอสว่างขึ้นเมื่อสภาพแวดล้อมมืด หรือเมื่อตรวจพบการเคลื่อนไหว (อิงจากการเปลี่ยนแปลงของแสง)
  • พยากรณ์อากาศ (แดดออก, มีเมฆมาก, ฝนตก)
  • แสดงอุณหภูมิ, ความดัน และความชื้น (สำหรับความชื้นจะบอกด้วยว่ามันแห้งเกินไปหรือไม่)
  • เมนูสำหรับตั้งค่า: ปลุก, เปลี่ยนเวลา, เปิด/ปิดการแสดงวันที่, เปิด/ปิดเสียงแจ้งเตือนการเปลี่ยนแปลงสภาพอากาศ และสลับระหว่างหน่วยอิมพีเรียลกับเมตริก
  • ตั้งค่าปลุก - เปิด/ปิด,

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

title: "Weather Forecast Clock Using Old Alarm and Arduino"
description: "Weather forecast clock made from a Nano, a salvaged alarm, a BME280 sensor, a DS1307 RTC, an old cell phone battery, and Nokia 5110 screen."
author: "LenkaDesign"
category: "Screens & Displays"
tags:
  - "weather"
  - "clocks"
  - "recycling"
views: 20176
likes: 22
price: 699
difficulty: "Intermediate"
components:
  - "1x Arduino Nano R3"
  - "1x SparkFun Atmospheric Sensor Breakout - BME280"
  - "1x Soldering iron (generic)"
  - "1x DS1307 64 x 8, Serial, I²C Real-Time Clock"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/LenkaDesign/Weather-Forecast-Arduino-Clock"
  - "https://github.com/LenkaDesign/Weather-Forecast-Arduino-Clock"
documentationLinks: []
passwordHash: "44aa79d16240444e96e67a0b735a7221064209b82af6ccbe5f2d026cde451d4e"
encryptedPayload: "U2FsdGVkX181DSfTPADYIOQDv7etvSXdoFHeHU5EOKj1Ip//m/yjL+0GN8OCgliUQYZvRh3rQLW5V3tDadYnIJh5CnqmaaWmETpmam2bpr8="
seoDescription: "Build a Weather Forecast Clock using Arduino Nano, BME280 sensor, DS1307 RTC, and a recycled Nokia 5110 screen."
videoLinks:
  - "https://www.youtube.com/embed/A75jJtem8xQ"
  - "https://www.youtube.com/embed/-FDuY51MYSw"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/weather-forecast-clock-using-old-alarm-and-arduino-853fbf_cover.jpg"
lang: "th"