โปรเจกต์ นาฬิกาพยากรณ์อากาศโดยใช้ Old Alarm และ Arduino
นาฬิกาพยากรณ์อากาศที่สร้างจาก Nano, Salvaged Alarm, BME280 Sensor, DS1307 RTC, Old Cell Phone Battery และหน้าจอ Nokia 5110
นาฬิกาพยากรณ์อากาศที่สร้างจาก Nano, Salvaged Alarm, BME280 Sensor, DS1307 RTC, Old Cell Phone Battery และหน้าจอ Nokia 5110
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
ผมมีนาฬิกาปลุกเสียๆ วางทิ้งไว้อยู่เครื่องหนึ่ง เลยเกิดไอเดียที่จะดัดแปลงมันให้กลายเป็นนาฬิกาและสถานีพยากรณ์อากาศ
บทความฉบับเต็มพร้อมรูปภาพประกอบ สามารถอ่านได้ที่นี่

สำหรับโปรเจกต์นี้ คุณจะต้องมีอุปกรณ์ดังนี้:
ขั้นแรกผมถอดแยกชิ้นส่วนนาฬิกาเรือนเก่าออก ทั้งกระดิ่ง, มอเตอร์, กลไกนาฬิกาที่เสียแล้ว...

เนื่องจากนาฬิกาเรือนใหม่จะเป็นระบบ Digital เต็มตัวโดยมีคอมพิวเตอร์ขนาดเล็กอยู่ข้างใน ผมจึงเพิ่มปุ่มกดหน้าตาสวยงาม 3 ปุ่มไว้ที่ด้านข้าง
ผมใช้เศษอลูมิเนียมตัดออกมาเพื่อทำเป็นแผ่นป้ายชื่อปุ่ม โดยตัวอักษรบนป้ายสร้างขึ้นโดยใช้ชุดตอกตัวอักษร (Letter-punches) และเขียนเน้นด้วยปากกา Marker สีดำ




ผมจะเก็บกระดิ่งอันเดิมไว้เพื่อใช้ส่งเสียงปลุกด้วย Motor ในกลไกนาฬิกาเก่าที่เสียแล้วมี Ceramic Capacitor ที่มีรหัส 104 อยู่ ผมถอดมันออกมาจากแผ่นวงจรแล้วบัดกรีเข้ากับ Motor โดยตรง วิธีนี้จะช่วยป้องกันการเกิด Power spikes เมื่อเปิดใช้งาน Motor ในช่วงเวลาปลุก นอกจากนี้สิ่งสำคัญที่ต้องโน้ตไว้คือ Motor จะถูกควบคุมผ่าน Transistor ซึ่งจะอธิบายเพิ่มเติมภายหลัง

เนื่องจากผมตัดสินใจทำหน้าปัดใหม่ให้นาฬิกา ผมจึงนำแผ่น PCB จากกองขยะมาใช้ และใช้เครื่องเป่าลมร้อน (Heatgun) ถอดอุปกรณ์ทุกอย่างออกอย่างรวดเร็ว ส่วนรูตรงกลางนั้นเจาะไว้สำหรับติดตั้งหน้าจอ Digital ของนาฬิกาเรือนใหม่


สำหรับโปรเจกต์นี้ ผมเลือกใช้หน้าจอ LCD จากโทรศัพท์มือถือ Nokia 5110 รุ่นเก่า หน้าจอเหล่านี้มีขายทั่วไปในรูปแบบ Module ใช้พลังงานน้อยมาก และมี Library สำหรับ Arduino ที่ดีมาก หากคุณซื้อ Module หน้าจอ 5110 ใหม่ คุณกำลังช่วยโลกใบนี้อยู่ เพราะ Module ใหม่ทั้งหมดผลิตขึ้นจากโทรศัพท์มือถือรุ่น 5110, 3110 และ 3210 ที่ถูกนำกลับมาใช้ใหม่!


คุณคงเดาได้แล้วว่าผมวางแผนจะใช้บอร์ด Arduino ในการควบคุมนาฬิกาเรือนนี้ โปรเจกต์นี้ทำตามได้ง่ายแม้จะเป็นมือใหม่หัดใช้ Arduino เพราะผมไม่ได้ทำแผ่น PCB ขึ้นมาเอง มันคือบอร์ด Arduino Nano ที่เชื่อมต่อกับ Module ต่างๆ ได้แก่ BME280 sensor (วัดอุณหภูมิ, ความกดอากาศ และความชื้น), DS1307 RTC clock, TP4056 Lithium battery charger, Booster module 3.7v to 5v ขนาดเล็ก, Light Dependent Resistor (LDR - วัดแสง) และ Buzzer (นำมาจาก PC เครื่องเก่า)
ลองดูที่ Sketches ประกอบด้วย ซึ่งจะแสดงการเชื่อมต่อทั้งหมด ผมคิดว่ามันอ่านและเข้าใจได้ง่ายมาก แต่ถ้าคุณมีคำถามสามารถถามได้ในช่องคอมเมนต์ด้านล่างเลยครับ
เกร็ดเล็กน้อยเกี่ยวกับการติดตั้ง:


Module ทุกตัวต้องการการเชื่อมต่อไฟบวกและ Ground ผมจึงเลือกใช้แผ่น Prototype board ขนาด 2x8 ซม. และบัดกรีรางไฟ 5V และ Ground ลงไป นอกจากนี้ผมยังทำรางสำหรับ I2C ไว้ด้วย เพราะมี Module หลายตัวที่ใช้ Interface แบบ I2C
อีกด้านหนึ่งผมบัดกรี Pin มาตรฐานไว้เพื่อให้สามารถเชื่อมต่อและถอด Module ออกได้เมื่อต้องการ
อุปกรณ์เพิ่มเติมบางส่วนก็ถูกบัดกรีลงที่นี่เช่นกัน เช่น Transistor และ Resistor สำหรับควบคุม Motor และ Resistor สำหรับปุ่ม Menu ที่ใช้ Interrupt โดยผมได้แสดง Schematics ไว้ในหัวข้อก่อนหน้านี้แล้ว


ผมใช้แบตเตอรี่ Lithium-ion เก่าจากโทรศัพท์มือถือมาเป็นแหล่งพลังงานให้นาฬิกา ปกติแล้วแบตเตอรี่มือถือที่ถูกเปลี่ยนทิ้งยังคงมีความจุเหลืออยู่พอสมควร (อย่างน้อยครึ่งหนึ่งจากตอนที่ยังใหม่) ข้อดีของมันคือมีวงจรป้องกันการคายประจุเกิน (Discharge protection circuit) ในตัวและบางมาก จึงเหมาะสำหรับใช้ในพื้นที่จำกัด
ในการเชื่อมต่อแบตเตอรี่ คุณแค่บัดกรีสายไฟเข้ากับขั้ว + และ - ของแบตเตอรี่ ไม่ต้องกังวล คุณจะไม่ทำให้เซลล์เสียหายเพราะมี Controller และมีช่องว่างระหว่างขั้วกับสารเคมีภายในเซลล์
ในรูปนี้คุณจะเห็นแบตเตอรี่ และเครื่องชาร์จ TP4056 รวมถึง Booster 5V ที่เชื่อมต่อเข้าด้วยกันและต่อกับแบตเตอรี่ ผมใช้ท่อหดหุ้มทุกอย่างเพื่อความปลอดภัยและทำให้มันดูเรียบร้อย


เมื่อบัดกรีทุกอย่างเสร็จแล้ว ผมใช้กาวติด Buzzer และ Sensor วัดอุณหภูมิ/ความกดอากาศ/ความชื้น ไว้ที่แผงด้านหลัง ซึ่งทั้งหมดลงตัวพอดีในช่องเดิมของปุ่มปรับนาฬิกาเก่า
ถึงเวลาติดตั้งพอร์ต Micro USB ไว้ที่ด้านหลัง ทำไมต้องเป็น Micro USB ทั้งที่ Nano ใช้ Mini USB? คำตอบง่ายๆ คือเพราะในบ้านเรา สาย USB ส่วนใหญ่จะเป็นของโทรศัพท์มือถือ ซึ่งจะสะดวกกว่าถ้าใช้นาฬิกากับสายเหล่านั้นได้
เนื่องจากผมต้องการใช้ทั้งสำหรับชาร์จไฟและอัปเดตฟังก์ชันของนาฬิกาและสถานีพยากรณ์อากาศ ผมจึงปอกสาย USB แล้วเดินสายไฟไปยังเครื่องชาร์จ TP4056 และต่อสาย Data+/Data- ตรงไปยังช่อง USB ของ Arduino Nano คุณสามารถดูรายละเอียดได้จาก Schematic ที่ผมแนบไว้
ได้เวลาประกอบทุกอย่างกลับเข้าไปในตัวเรือนนาฬิกาเดิม ผมใช้ท่อหดเพื่อฉนวนป้องกันอุปกรณ์และ Module ต่างๆ แม้แต่ Arduino ก็ถูกหุ้มด้วยท่อหดเช่นกัน



อย่างที่คุณเห็น อุปกรณ์ทุกอย่างอัดแน่นอยู่ข้างในนาฬิกา สิ่งนี้ช่วยให้เราสร้างสิ่งที่ซับซ้อนกว่านาฬิกาเรือนเดิมได้ หากเรามีทักษะในการเขียนโปรแกรม ผมได้เขียน Code เริ่มต้นไว้และขอให้เพื่อนของผมเข้ามาช่วยจัดการส่วนที่เหลือให้สมบูรณ์
จนถึงตอนนี้ นอกจากตัวนาฬิกาเองแล้ว นี่คือฟังก์ชันที่โปรเจกต์นี้รองรับ:
Code ล่าสุด: https://github.com/LenkaDesign/Weather-Forecast-A...
Code จะมีการอัปเดตฟีเจอร์ใหม่ๆ ในอนาคต ดังนั้นอย่าลืมกลับมาเช็คการอัปเดต Firmware นะครับ :-)
หากคุณเป็นมือใหม่ในโลกของ Arduino นี่คือขั้นตอนที่ผมแนะนำให้ทำ:
อัลกอริทึมการพยากรณ์อากาศมีดังนี้:
Arduino Nano จะรับข้อมูลใหม่จาก Sensor BME280 ทุกๆ 12 นาที โดยมีรอบการวัดผลอยู่ที่ 3 ชั่วโมง หลังจากผ่านไป 3 ชั่วโมง ช่วงของการตรวจสอบความกดอากาศ (ค่าสูงสุดและต่ำสุดในช่วง 3 ชั่วโมง) จะเลื่อนไปสัมพันธ์กับค่าเฉลี่ยในช่วงปัจจุบันและค่าความกดอากาศปัจจุบัน ทุกๆ ชั่วโมงทิศทางการเปลี่ยนแปลงของความกดอากาศจะถูกบันทึกพร้อมกับค่าปัจจุบัน โดยใช้หน่วย kPa ในการคำนวณพยากรณ์
เนื่องจากข้อจำกัดด้านหน่วยความจำของ Nano อัลกอริทึมพยากรณ์อากาศจึงต้องถูกทำให้ง่ายขึ้น แต่แม้จะทำให้ง่ายลง มันก็สามารถพยากรณ์ปริมาณน้ำฝนในอีก 12-24 ชั่วโมงข้างหน้าได้ แม้ว่าการพยากรณ์ตอนนี้จะค่อนข้างมองโลกในแง่ร้ายไปนิด โดยค่าเริ่มต้นคือ "ท้องฟ้ามีเมฆมาก" (Cloudy Weather)
"ท้องฟ้าแจ่มใส" (Sunny Weather) - ค่าความกดอากาศปัจจุบันสูงกว่าเกณฑ์มาตรฐาน 7 จุด, ความกดอากาศไม่ลดลง และผลต่างระหว่างค่าต่ำสุดและสูงสุดในช่วง 3 ชั่วโมงที่ผ่านมาไม่เกิน 2 จุด
มีโอกาสเกิดฝน "ฝนตก" (Rainy Weather) - ความกดอากาศปัจจุบันต่ำกว่าเกณฑ์มาตรฐาน 15 จุด และผลต่างระหว่างค่าต่ำสุดและสูงสุดมากกว่า 2 จุด หรือ ความกดอากาศกำลังลดลงและผลต่างระหว่างค่าปัจจุบันกับเกณฑ์มาตรฐานอยู่ที่ 3 - 30 จุด
เพื่อเพิ่มความแม่นยำในการพยากรณ์ แนะนำให้เปลี่ยนค่า "altitude" (ความสูงเหนือระดับน้ำทะเล) ของคุณในไฟล์ Code หลัก คุณสามารถตรวจสอบระดับความสูงของพื้นที่คุณได้ที่นี่: https://www.daftlogic.com/sandbox-google-maps-find-altitude.htm
หากการทำตามคำอธิบายข้างต้นเป็นเรื่องยาก ผมยังมีวิดีโอที่แสดงขั้นตอนทั้งหมดให้ดูด้วยครับ
โดยรวมแล้ว ในมุมมองของผม ระดับความยากของโปรเจกต์นี้ไม่สูงนักและใครๆ ก็สามารถทำได้ หากคุณไม่มีนาฬิกาเก่า คุณสามารถหาซื้อได้ในราคาถูกตามตลาดนัดทั่วไป

ส่วนประกอบทั้งหมดมีราคาถูกและหาซื้อได้ง่ายจาก SparkFun/Aliexpress/eBay/Amazon
ผมหวังว่าบทเรียนนี้จะเป็นประโยชน์และน่าสนใจสำหรับคุณนะครับ!
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้