กลับไปหน้ารวมไฟล์
simple-weather-station-with-a-20x4-lcd-updated-92c8b3.md

title: "Shed Weather Station & Moon Phase Tracker: จากนาฬิกาแขวนผนังสู่สถานีตรวจอากาศอัจฉริยะ" description: "โปรเจกต์อัพเกรดโรงเก็บของด้วยสถานีตรวจอากาศที่ครบวงจร ตั้งแต่การวัดอุณหภูมิ ความชื้น ความดันบรรยากาศ ไปจนถึงการคำนวณข้างขึ้นข้างแรม"

จุดเริ่มต้นของโปรเจกต์นี้มาจากความต้องการง่ายๆ คือการมี "นาฬิกา" ไว้ดูเวลาในโรงเก็บของ (Shed) ของผม แต่ในฐานะ Maker การหยุดอยู่แค่ตัวเลขบอกเวลานั้นเป็นไปไม่ได้ ผมจึงเริ่มต่อยอดฟังก์ชันการทำงานทีละขั้น จากนาฬิกาบอกเวลาและวันที่บนจอ LCD 20x4 กลายมาเป็นสถานีตรวจอากาศเต็มรูปแบบที่บอกได้ทั้งสภาวะอากาศภายใน-ภายนอก และข้อมูลทางดาราศาสตร์เบื้องต้น

การออกแบบระบบและการเลือกใช้อุปกรณ์ (Hardware Engineering)

หัวใจหลักของโปรเจกต์นี้คือการผสมผสานเซนเซอร์หลายประเภทเพื่อดึงข้อมูลสภาพแวดล้อมออกมาให้ได้มากที่สุด โดยเน้นการเชื่อมต่อผ่านโปรโตคอล I2C เพื่อประหยัดสายสัญญาณและทำให้โครงสร้างระบบไม่ซับซ้อนจนเกินไป

  • DS3231 (ZS-042) RTC Module: ผมเลือกใช้โมดูล Real-Time Clock ที่มีความแม่นยำสูง (High-Precision) เนื่องจากมีวงจรชดเชยอุณหภูมิในตัว ทำให้เวลาไม่คลาดเคลื่อนแม้ในโรงเก็บของจะมีอุณหภูมิที่เปลี่ยนแปลงตลอดเวลา
  • BMP280 Sensor: ใช้สำหรับวัดความดันบรรยากาศ (Atmospheric Pressure) เพื่อนำมาคำนวณและคาดการณ์สภาพอากาศ (Weather Prediction) คล้ายกับบารอมิเตอร์ ข้อควรระวังสำคัญ: เซนเซอร์ตัวนี้ทำงานที่แรงดัน 3.3V เท่านั้น การต่อเข้ากับไฟ 5V โดยตรงอาจทำให้เซนเซอร์เสียหายได้
  • DHT22 vs DHT11:
    • DHT22 (ภายนอก): มีความละเอียดสูง สามารถวัดอุณหภูมิและติดลบได้ รวมถึงให้ค่าความชื้นที่แม่นยำกว่า เหมาะสำหรับการติดตั้งไว้ด้านนอก
    • DHT11 (ภายใน): ถึงแม้จะมีความแม่นยำน้อยกว่า (แสดงผลเป็นเลขจำนวนเต็ม) แต่ก็เพียงพอสำหรับการบอกอุณหภูมิคร่าวๆ ภายในโรงเก็บของ
  • 4-Digit 7-Segment Display: ผมติดตั้งส่วนนี้เพิ่มเพื่อให้แสดง "เวลา" ตลอดเวลา (Constant Display) ช่วยให้มองเห็นเวลาได้ชัดเจนจากระยะไกลโดยไม่ต้องรอรอบการทำงานของจอ LCD
หน้าตาของโปรเจกต์ในระหว่างการพัฒนาและการทดสอบระบบแสดงผล

ระบบแสดงผลและลอจิกของโปรแกรม (Software Logic)

ตัวเครื่องถูกเขียนโปรแกรมให้ทำงานแบบ Multi-screen บนจอ LCD 20x4 โดยใช้วิธีการวนลูป (State Machine) เพื่อสลับหน้าจอแสดงข้อมูลต่างๆ ดังนี้:

  1. หน้าจอหลัก: แสดงวันที่และเวลาอย่างละเอียด
  2. สภาพอากาศภายใน/ภายนอก: แสดงค่าอุณหภูมิ ความชื้น (Humidity) รวมถึงค่า Heat Index (ดัชนีความร้อนที่ร่างกายรู้สึก) และ Dew Point (จุดน้ำค้าง) ซึ่งคำนวณจากค่าที่ได้จาก DHT22
  3. บารอมิเตอร์: แสดงความดันบรรยากาศและแนวโน้มสภาพอากาศ

ฟีเจอร์ประหยัดพลังงานอัตโนมัติ: ผมได้เพิ่ม LDR (Light Dependent Resistor) เข้าไปในระบบ เพื่อทำหน้าที่เป็นสวิตช์แสงอัตโนมัติ เมื่อไฟในโรงเก็บของถูกปิดลง (ซึ่งหมายความว่าผมไม่ได้ใช้งานอยู่) ระบบจะสั่งปิดไฟ Backlight ของจอ LCD ทันที เพื่อยืดอายุการใช้งานของหน้าจอและประหยัดพลังงาน

นวัตกรรมจากวัสดุเหลือใช้: Lunar Phase Indicator

หนึ่งในจุดเด่นของโปรเจกต์นี้คือการแสดงข้างขึ้นข้างแรม (Moon Phase) ผมใช้ลอจิกการคำนวณอายุของดวงจันทร์ (Moon Age) ในโค้ด Arduino แม้จะเป็นค่าประมาณการแต่ก็ให้ผลลัพธ์ที่น่าพึงพอใจ

เพื่อความสวยงาม ผมได้สร้างโมดูลแสดงผลแยกต่างหากโดยใช้:

  • ตลับกระสุนปืนลมเก่า: นำมาเจาะรู 8 ช่อง จัดเรียงเป็นวงกลม
  • LED 8 ดวง: ใช้สีเหลือง 7 ดวง (แทนแสงจันทร์) และสีน้ำเงิน 1 ดวง (แทนคืนเดือนมืดหรือ New Moon)
  • แผ่นภาพ Moon Phase: พิมพ์และเคลือบพลาสติก แปะทับหน้าตลับเพื่อบอกตำแหน่งดวงจันทร์

การวิเคราะห์ทางเทคนิค (Technical Analysis)

ในแง่ของวิศวกรรมฝังตัว โปรเจกต์นี้มีการบริหารจัดการ I2C Address อย่างเป็นระบบ (DS3231, BMP280, และ LCD ใช้ Address ที่ต่างกันบนบัสเดียวกัน) การดึงข้อมูลจาก DHT sensor ใช้การสื่อสารแบบ Single-bus ซึ่งต้องใช้ Timing ที่แม่นยำ

ส่วนการคำนวณ Sunrise/Sunset และ Moon Phase นั้นเป็นการใช้สูตรทางคณิตศาสตร์ดาราศาสตร์เบื้องต้น ซึ่งช่วยเพิ่มความซับซ้อนและคุณค่าให้กับตัวโปรเจกต์ได้อย่างดี

คำแนะนำสำหรับผู้ที่จะนำไปต่อยอด: หากคุณต้องการความแม่นยำระดับห้องแล็บ อาจเปลี่ยน DHT11 เป็น SHT31 แต่สำหรับโปรเจกต์ "Shed Clock" ตัวนี้ อุปกรณ์ที่มีอยู่ถือว่าตอบโจทย์การใช้งานจริงได้อย่างลงตัวและสนุกในการสร้างครับ!

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

title: "Simple Weather Station with a 20x4 LCD UPDATED"
description: "Basic weather system, in/out temp and humidity with heat index, dew point, pressure and weather prediction and time and date."
author: "Fathead"
category: "Sensors & Environment"
tags:
  - "time"
  - "weather station"
  - "pressure"
views: 15107
likes: 15
price: 299
difficulty: "Easy"
components:
  - "1x 4x 20 LCD"
  - "1x DHT22 Temperature Sensor"
  - "1x 7 Segment display (TM 1637)"
  - "1x BMP280 Pressure"
  - "1x 5mm LED: Blue"
  - "1x RTC DS3231"
  - "1x Female/Female Jumper Wires"
  - "7x 5 mm LED: Yellow"
  - "1x Male/Female Jumper Wires"
  - "1x Solderless Breadboard Half Size"
  - "1x Arduino UNO"
  - "1x DHT11 Temperature & Humidity Sensor (4 pins)"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "6908854d9abcc05c7bf3eeabd80aa90cbfadfdcdc51156f87bc3ea8dd1661807"
encryptedPayload: "U2FsdGVkX19d2dhmGv/UNekv3/khNGymx42j2uxzMcOkRjVVjE2zEGABI0Q3JOHwll6w4Vt3EQeYwWs6J7slKq+vDHCASu0p2iLaaxFJYAU="
seoDescription: "Build a Simple Weather Station with 20x4 LCD. Tracks temp, humidity, pressure, weather prediction, and heat index plus time and date."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/simple-weather-station-with-a-20x4-lcd-updated-92c8b3_cover.JPG"
lang: "en"