สร้างระบบ Temperature Report ผ่านเว็บ ด้วย Arduino + Raspberry PI

วันนี้วันที่ 31 ธันวาคม 2555 ครับ เป็นอีกวันหนึ่งที่อากาศในกทม. ดีมาก ๆ เย็นสบายแต่เช้าเลย ผมคิดเอาว่าอากาศน่าจะเย็นกว่าวันที่ 24 ธันวาคมที่ผ่านมาเสียอีก เลยนึกว่าน่าจะทำโครงงานอะไรที่มันเกี่ยวข้องกับอุณหภูมิบ้างท่าจะดี ไหน ๆ ก็ว่างแล้วนี่ เลยจับเอา Arduino Nano กับ Raspberry Pi มาทำโครงงานเล่นดู






เริ่มต้นเราต้องอะไรที่สามารถวัดอุณหภูมิได้เสียก่อน ที่บ้านมี thermometer แบบเข็มครับ ความจริงก็ใช้งานได้แล้ว แต่เราต้องการให้มันวัดแล้วรายงานออกมาทางเว็บได้ด้วย ก็เลยต้องใช้ humidity and temperature sensor รุ่น DHT11 มาใช้งาน  (ถูกและใช้งานได้ดี)


ต่อไปก็วางแผนการเชื่อมต่อครับ
1. Arduino จะเป็นตัวรับข้อมูลอุณหภูมิจาก DHT11 ซึ่งมีหน่วยเป็น Celsius  โดยมีวงรอบของการรับข้อมูลทุก 2 วินาที
2. ทันทีที่รับข้อมูลมา Arduino จะทำการส่งข้อมูลผ่าน USB port มายัง Raspberry Pi (อาจมีบางท่านที่ชำนาญเรื่อง GPIO ก็สามารถมองข้าม Arduino ไปได้นะครับ)
3. Raspberry Pi เป็นคอมพิวเตอร์ที่เชื่อมต่อกับ internet ทำการส่งข้อมูลต่อไปยัง Web Server  เพื่อ broadcast ข้อมูลต่อไปยัง client อื่น ๆที่คอยรับข้อมูล
4. ที่ client เราจะใช้ Flot ซึ่งเป็น JQuery Plugin ช่วยในการสร้าง Graph แสดงบนหน้าเว็บบราวเซอร์ ครับ

ดำเนินงานตามแผนแล้วก็ออกมาดังภาพ


ต่อไปก็ออกแบบ Sketch เพื่อให้ Arduino รับค่าจาก Sensor ซึ่ง Sketch นี้มีให้ Download ที่ http://playground.arduino.cc/Main/DHT11Lib ครับ ผมนำมาประยุกต์นิดหน่อย โดยตัดส่วนที่ไม่ต้องการใช้งานออกไป  การทำงานบน Raspberry PI ผมใช้ NodeJs เพื่อให้เกิดการสื่อสารแบบ real time ระหว่างองค์ประกอบต่าง ๆ แล้ว ลองมาดูที่เว็บบราวเซอร์ ก็จะได้ดังภาพ



ถ้ามองที่กราฟแล้วเทียบกับค่าที่อ่านได้จาก thermometer โดยตรง ก็จะเห็นว่าใกล้เคียงกัน แสดงว่า โครงงานนี้ผ่านครับ

ที่นี้เราก็เพิ่มความสามารถเข้าไปอีกอย่างคือการรายงานความชื้นของอากาศด้วยเลย ความจริงแล้วเราจะรู้สึกสบายตัวจะต้องดูที่อุณหภูมิร่วมกับความชื้นของอากาศไปพร้อมกัน เขาว่าเราจะรู้สึกสบายตัวที่สุดที่อุณหภูมิ 24 C และความชื้นที่ประมาณ 45 % ถ้าดูจากภาพข้างล่าง แสดงว่าอากาศใน กทม. ในวันที่ผมวัดนี้กำลังดีใช้ได้ที่เดียว

ข้อดีของการรายงานผ่านเว็บแบบ real time คือเราสามารถดูได้ทุกที่ที่ต่ออินเตอร์เน็ตได้ ผมลองเรียกดูผ่าน tablet ก็ได้ดังภาพครับ



Fork on GitHub



ความคิดเห็น