มาตอนนี้ผมจะลองสร้างเหตุการณ์จำลองขึ้น (เพื่อนำไประบบที่ใช้งานจริง) สมมุติว่าเรากำลังจะสร้างระบบ Smart Garden ที่มีระบบโทรมาตรมาช่วย มีสถานีตรวจวัดความชื้นของดิน และสถานีวัดอุณหภูมิ/ความชื้นของอากาศ (ความจริงต้องมีระบบอื่นมากกว่านี้) ทั้งสองสถานีจะคอยรายงานตัวเลขจาก Sensor มากให้กับ Raspberry PI ผ่านข่ายงานสื่อสารไร้สาย เพื่อทำการเก็บข้อมูลและดำเนินการที่เหมาะสมต่อไป รูปแบบการสื่อสารที่เลือกใช้คือ Star topology โดยให้ Raspberry PI อยู่ตรงกลาง และสถานีตรวจวัดจะกระจายไปตามตำแหน่งต่าง ๆ ในสวนของเรา
อุปกรณ์ที่ใช้
รายการ | จำนวน |
Raspberry PI model B rev 2 | 1 |
Arduino | 2 |
NRF24L01 | 3 |
DHT22 | 1 |
Soil Moisture Sensor YL-69 | 1 |
การติดตั้ง NRF24L01 กับ Arduino และ Raspberry PI ท่านศึกษาได้จาก
บทความก่อนหน้านี้
สำหรับ Soil Moisture Sensor และ DHT22 นั้นการต่อกับ Arduino ไม่ยุ่งยากอะไร
สถานีวัดอุณหภูมิและความชื้นในอากาศ
รูปนี้แสดงการต่อสายสัญญาณและพลังงานให้กับ DHT22 ซึ่งเป็นตัววัดความความชื้นและอุณหภูมิ บางเว็บไซต์เขาจะแนะนำให้นำเอาตัวต้านทาน (resister) ขนาด 10K Ohm มาเชื่อมระหว่างสายสัญญาณ (สีเขียว) กับสายแรงดันไฟฟ้า (สีแดง) เพื่อให้ Arduino อ่านค่าการเปลี่ยนแปลงทางไฟฟ้าจาก Sensor ได้ดีขึ้น
ติดตั้ง DHT Library
มีคนพัฒนา Arduino Library สำหรับ DHT หลายรายครับ ผมเลือกใช้ของ
Adafruit ครับ
สถานีวัดความชื้นในดิน
ผมเลือกใช้ Sensor ของ YL-69 ครับ ราคาไม่แพง ค่าที่อ่านได้ก็เพียงพอสำหรับการทำงานเป็นสถานีวัดแล้ว (หากท่านไม่ต้องการความแม่นยำมากนัก)
|
ภาพ YL-69 Soil moisture sensor จาก http://www.arduitronics.com/product/104/soil-moisture-sensor |
การต่อสายสัญญาณเข้ากับ Arduino
Arduino | YL-69 |
5V | Vcc |
GRD | GRD |
A1 (anyanalog pins) | Ao |
การใช้งานตัว YL-69 ไม่ต้องการ library พิเศษใช้การตีความจากตัวเลขที่อ่านได้โดยตรง ค่าที่ได้จะเป็นตัวเลขที่ไม่เกิน 1023 ยิ่งตัวเลขมากแสดงว่าความชื้นยิ่งน้อย (1023 คือไม่ตรวจพบความชื้นเลย) ผมได้ทำการทดลองของผมเองได้ออกมา 5 ระดับครับคือ
ตัวเลข | ตีความ |
น้อยกว่า 350 | แช่น้ำ เช่น หลังฝนตกหนัก |
350 - 550 | ชื้นมาก (ดินแฉะ) |
550 - 750 | ชื้นกำลังเหมาะ |
750 - 950 | แห้ง (ควรให้น้ำ) |
มากกว่า 950 | แห้งมาก |
หมายเหตุ ตารางนี้ได้มาจากการทดลองส่วนตัว ไม่ใช่เป็นค่ามาตรฐานใช้อ้างอิงทั่วไป ท่านอาจต้องปรับค่าให้เหมาะกับสภาพที่ต้องการ สำหรับการติดตั้ง NRF24L01 จะเหมือนกับสถานีวัดอุณหภูมิและความชื้่น
เมื่อประกอบเสร็จสถานีของผมก็ออกมาหน้าตาแบบนี้ ครับ
หมายเลข อุปกรณ์
1 NRF24L01
2 YL-69
3 Arduino
4 DHT22
การแสดงผล
การจัดการกับข้อมูลอยู่นอกเหนือเนื้อหาที่จะกล่าวในบทความนี้ (การออกแบบระบบจัดการข้อมูลขึ้นกับปัจจัยหลายประการ มีรายละเอียดแตกต่างกันไป) แต่เพื่อให้ได้เห็นว่าระบบที่ทำไว้มันใช้งานได้ ผมเลื่อกใช้การรายงานผลออกทางเว็บ
https://plot.ly/ ซึ่งเป็นเว็บที่ให้บริการด้าน data processing เป็นเว็บที่มีการเก็บค่าบริการครับ แต่ก็มี Free Account ให้ได้งาน (ซึงแน่นอนมีข้อจำกัดเยอะแยะ) การสมัครเป็นสมาชิกสามารถใช้บัญชีของ Facebook หรือ Google+ ได้ และผมก็ขอข้ามรายละเอียดต่าง ๆ นา ๆ ไปสู่การแสดงผลเลย
จากวิดีโอนี้ผมออกแบบให้ Raspberry PI ส่งข้อมูล Humidity, Temperature และ Soil Moisture ที่ได้รับจากสถานี (สมมุติ) ผ่าน wireless network ที่สร้างขึ้นมาโดยอาศัย NRF24L01 แล้วนำส่งต่อไปยังเว็บ plot.ly เพื่อให้แสดงผลออกมาในรูปของกราฟ กำหนดให้ส่งข้อมูลทุก 2 วินาที เพื่อให้ผลทีี่ชัดเจนและรวดเร็ว (ในความเป็นจริงข้อมูลลักษณะแบบนี้ไม่เปลี่ยนแปลงเร็วนัก อาจใช้เวลาเป็นชั่วโมงหรือหลายชั่วโมงถึงจะเห็นการเปลี่ยนแปลงที่ชัดเจน)
เมื่อเราทดสอบเติมน้ำลงไปในกระถางต้นไม้หรือเอาที่เป่าผมเป่าลมร้อนเข้าไป เราก็จะเห็นการเปลี่ยนแปลงผ่านกราฟได้ทันที แสดงว่าระบบที่ทำไว้ใช้งานได้แล้ว
การสาธิตครั้งนี้เป็นเพียงตัวอย่างง่าย ๆ ตัวอย่างหนึ่งของการสร้างระบบข่ายงานสื่อสารด้วยคลื่นวิทยุ เรายังสามารถจะสร้างสรรค์โครงงานได้อีกหลากหลายครับ สำหรับท่านที่สนใจตัวอย่างการเขียนโปรแกรมก็สามารถเข้าไปดูได้ที่
Github ครับ
ข้อมูลเพิ่มเติม
1. เนื่องจากระบบแบบนี้มีลักษณะเป็น Data Logging ดังนั้นควรติดตั้ง Real Time Clock Module ให้กับ Raspberry PI หรือ Arduino ด้วย
2. การเชื่อมต่อกับ Internet อาจมีประโยชน์หากเราต้องการการสื่อสารทางไกล (จริง ๆ)
3. ระบบที่น่าจะการพัฒนาต่อยอดมีอีกหลายระบบ เช่น ระบบปั้มน้ำ ระบบรดน้ำ ระบบควบคุมอุณหภูมิในเรือนอนุบาลต้นไม้ ระบบตรวจวัดปริมาณแสง ระบบวัด ph ฯลฯ
Sign up here with your email
ConversionConversion EmoticonEmoticon