สร้างระบบสือสารไร้สายระหว่าง Raspberry PI กับ Arduino ด้วย NRF24L01 Module ตอนที่ 2

มาตอนนี้ผมจะลองสร้างเหตุการณ์จำลองขึ้น (เพื่อนำไประบบที่ใช้งานจริง) สมมุติว่าเรากำลังจะสร้างระบบ Smart Garden ที่มีระบบโทรมาตรมาช่วย มีสถานีตรวจวัดความชื้นของดิน และสถานีวัดอุณหภูมิ/ความชื้นของอากาศ (ความจริงต้องมีระบบอื่นมากกว่านี้) ทั้งสองสถานีจะคอยรายงานตัวเลขจาก Sensor มากให้กับ Raspberry PI ผ่านข่ายงานสื่อสารไร้สาย เพื่อทำการเก็บข้อมูลและดำเนินการที่เหมาะสมต่อไป รูปแบบการสื่อสารที่เลือกใช้คือ Star topology โดยให้ Raspberry PI อยู่ตรงกลาง และสถานีตรวจวัดจะกระจายไปตามตำแหน่งต่าง ๆ ในสวนของเรา

อุปกรณ์ที่ใช้

รายการจำนวน
Raspberry PI model B rev 21
Arduino2
NRF24L013
DHT221
Soil Moisture Sensor YL-691
การติดตั้ง 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
ArduinoYL-69
5VVcc
GRDGRD
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  ฯลฯ 
Previous
Next Post »