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) เพื่อสลับหน้าจอแสดงข้อมูลต่างๆ ดังนี้:
- หน้าจอหลัก: แสดงวันที่และเวลาอย่างละเอียด
- สภาพอากาศภายใน/ภายนอก: แสดงค่าอุณหภูมิ ความชื้น (Humidity) รวมถึงค่า Heat Index (ดัชนีความร้อนที่ร่างกายรู้สึก) และ Dew Point (จุดน้ำค้าง) ซึ่งคำนวณจากค่าที่ได้จาก DHT22
- บารอมิเตอร์: แสดงความดันบรรยากาศและแนวโน้มสภาพอากาศ
ฟีเจอร์ประหยัดพลังงานอัตโนมัติ: ผมได้เพิ่ม 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" ตัวนี้ อุปกรณ์ที่มีอยู่ถือว่าตอบโจทย์การใช้งานจริงได้อย่างลงตัวและสนุกในการสร้างครับ!