ชื่อโปรเจกต์: NodeMCU Based: 3D Printed Indoor Gauge Thermometer
วันหยุดที่ผ่านมาพี่ว่างจัด เลยอยากปั้นอะไรใหม่ๆ มันส์ๆ สักหน่อย ก็เลยจัดเครื่องวัดอุณหภูมิในร่มแบบเกจ์เข็ม (Indoor Dial Thermometer) โดยใช้ Arduino/NodeMCU เป็นหัวใจหลัก ตัวนี้บอกอุณหภูมิเป็นองศาเซลเซียสแบบสองเด้ง ทั้งบนหน้าปัดทรงตัว D (D-Shaped Gauge) และจอ TM1637 7-Segment Display หล่อเท่เลยงานนี้
นอกจากโชว์เลขสวยๆ แล้ว มันยังแอบส่งค่าอุณหภูมิและความชื้นไปเก็บใน MySQL DataBase ที่รันบน [Raspberry Pi](https://s.shopee.co.th/6pvZFdZdRf) Server ในบ้านเราได้ด้วยนะน้อง แล้วค่อยไปดึงข้อมูลมาดูผ่านแอป "Our Smart Home" สบายๆ เลย จัดไปวัยรุ่น!
การออกแบบและสุนทรียภาพของโปรเจกต์
โปรเจกต์นี้เป็นการผสมผสานระหว่าง Sensor ความแม่นยำสูงกับดีไซน์สไตล์ Retro ย้อนยุค ตัว Indoor Dial Thermometer จะมีเคสที่ปริ้นจากเครื่อง 3D Print ทรงตัว D ซึ่งใช้เข็มจริงๆ (Physical Pointer) ชี้บอกอุณหภูมิ แถมยังมีหน้าจอ TM1637 7-Segment Display ไว้ดูตัวเลขแบบดิจิทัลให้เป๊ะเข้าไปอีก
เทคโนโลยีหลักที่ใช้ (Core Technologies)
- Sensing: พี่เลือกใช้ DHT22 (AM2302) เพราะมันวัดอุณหภูมิและความชื้นได้แม่นยำกว่ารุ่นน้องอย่าง DHT11 เยอะ อย่าไปงกนะน้อง ตัวนี้เรนจ์กว้างกว่า Resolution ดีกว่าเห็นๆ
- Mechanical Output: ใช้ 28BYJ-48 Stepper Motor ตัวจิ๋ว (คู่กับ Driver ULN2003) มาใช้ขยับเข็มหน้าปัด ที่เลือก Stepper Motor เพราะมันคุมตำแหน่งได้แม่นยำ สั่งให้หมุนไปตรงไหนก็ตรงนั้น สม่ำเสมอสุดๆ
- WiFi Connectivity: ใช้ ESP8266 (NodeMCU) ต่อ WiFi ในบ้านเพื่อยิงข้อมูลสภาพแวดล้อมขึ้นไปเก็บที่ Database ส่วนกลาง
โครงสร้างการเก็บข้อมูล (Data Logging Infrastructure)
นอกจากจะโชว์ค่าบนตัวเครื่องแล้ว ระบบนี้ยังทำหน้าที่เป็น IoT Node เต็มตัวด้วยนะ:
- The Server: ใช้ Raspberry Pi ลง LAMP stack (Linux, Apache, MySQL, PHP) ทำหน้าที่เป็น Hub หลักของระบบ Home Automation ในบ้าน
- The Database: เจ้าตัว NodeMCU จะส่ง HTTP POST Request ที่ข้างในเป็นข้อมูล JSON ไปหา PHP script เพื่อเอาค่าไปยัดลงตารางใน MySQL
- The App: เราสามารถส่องดูข้อมูลจากที่ไหนก็ได้ผ่านแอป "Our Smart Home" เพื่อดูแนวโน้ม (Trends) ของอุณหภูมิและความชื้นย้อนหลังได้แบบเซียนๆ
การประกอบและการปริ้น (Assembly and Printing)
ตัวหน้าปัดและเคสทั้งหมดปริ้นมาจาก 3D Print เพื่อให้งานดู Professional หน่อย ส่วนอุปกรณ์ข้างในจะลง PCB หรือจะจัดระเบียบสายไฟในเคสยังไงก็เอาให้เนียนนะน้อง ห้ามช็อตนะตัวนี้! อ้อ แล้วอย่าลืม Calibrate ตัว Stepper Motor ในฟังก์ชัน setup() ด้วยล่ะ เพื่อให้เข็มมันชี้ที่ 0°C เป๊ะๆ ตอนเราจ่ายไฟเริ่มทำงาน (Power-up)
แหล่งข้อมูลสำหรับลุยต่อ
- Video Tutorial: Project Walkthrough