วันพุธที่ 3 กุมภาพันธ์ พ.ศ. 2559

nRF24L01 : Mesh Network

  รูปแบบการจัดโครงข่ายลักษณะ Tree Topology

  มองอย่างผิวเผินสำหรับโมดูล nRF24L01 หลายคนอาจเห็นว่าเป็นเพียงโมดูลสื่อสารไร้สายใช้เพื่อส่งข้อมูลจากจุดหนึ่งไปอีกจุดหนึ่งเท่านั้น

  จริงๆแล้วตัวโมดูลเองมีความสามารถในการเชื่อมโยงกันเป็นกลุ่มได้ โดยสูงสุดอยู่ที่ 6 โมดูลในแต่ละกลุ่ม โดยแต่ละโมดูลจะมีหมายเลขประจำตัวเป็น 00 ถึง 05

  ดูเหมือนจำนวนโมดูลจะเป็นข้อจำกัดของการใช้งาน แต่จริงแล้วได้มีการเขียนไลบรารี่เพื่อขยายจำนวนโมดูลให้เพิ่มขึ้นได้ เป็นลักษณะรูปแบบกิ่งของต้นไม้ (Tree Topology)

  การแตกกิ่งจะเริ่มจากโมดูลแรก (โมดูล 00) จะมีกิ่งที่เชื่อมโยงได้คือ 01, 02, 03, 04 และ 05 จากนั้นในแต่ละกิ่งก็จะสามารถแตกกิ่งออกไปได้อีก 5 กิ่ง ตัวอย่างกิ่งที่ 04 ก็จะมีกิ่งที่แตกออกได้เป็น 014, 024, 034, 044, 054 และกิ่งที่ 05 ก็จะได้กิ่ง 015, 025, 035, 045, 055

  สำหรับการส่งข้อมูล กิ่งย่อยจะสามารถรับส่งข้อมูลได้เฉพาะกับกิ่งหลัก (parent) และกิ่งย่อยอื่นที่แตกออกจากตัวเอง (child) จะรับส่งข้อมูลข้ามกิ่งหลักไม่ได้ การจะรับส่งข้อมูลไปยังกิ่งย่อยอื่น จะอาศัยการฝากข้อมูลส่งไปที่กิ่งหลัก กิ่งหลักจะส่งไปที่กิ่งหลักถัดไปและกิ่งย่อยอื่น กิ่งแกนจะส่งข้อมูลผ่านไปยังกิ่งหลักของกิ่งย่อยที่เราต้องการส่งข้อมูล สมมุติว่ากิ่งย่อย 014 ต้องการส่งข้อมูลให้กิ่งย่อย 035 การส่งข้อมูลจะเป็นดังนี้

  014 -> 04 -> 00 -> 05 -> 035

  โดยที่ข้อมูลที่ส่งไปจะมีส่วนหัว (Header) ที่บอกว่ากิ่งไหนเป็นตัวส่ง และต้องการส่งให้กิ่งไหน ทำให้เมื่อกิ่งย่อยได้รับข้อมูลแล้วต้องการส่งข้อมูลกลับก็จะทราบว่าจะส่งกลับไปให้กิ่งไหน เส้นทางจะเป็นดังนี้

035 -> 05 -> 00 -> 04 -> 014

  ลักษณะการขยายกิ่งโมดูล (คลิ๊กทีรูปเพื่อขยายขนาด)

  Topology


  จำนวนกิ่งทั้งหมดที่สามารถสร้างได้จากโครงช่าย 6 ชั้น  1 + 5 + 25 + 125 + 625 + 3,125 = 3,906 กิ่ง ซึ่งเป็นจำนวนมากทีเดียวในทางทฤษฎี แต่ในทางปฏิบัติแล้วข้อจำกัดอาจเกิดจากสิ่งอื่นๆ ทำให้จำนวนที่ใช้งานจริงอาจน้อยกว่า


นำไปใช้งาน

  Mesh network มีประโยชน์ในการขยายโครงข่ายที่ต้องการลูกข่ายจำนวนมาก โดยที่ตัวลูกข่ายเองสามารถทำตัวเป็นแม่ข่ายได้ในขณะเดียวกัน ดูได้จากการวางโครงข่ายข้างต้น ข้อมูลจะวิ่งไปกลับผ่านแต่ละกิ่งไปยังฐาน (์Node 00) และยังสามารถส่งข้อมูลไปยังลูกข่ายตัวอื่นๆได้ด้วย
  การนำไปใช้งานโดยส่วนใหญ่ใช้เพื่ออ่านข้อมูลของเซนเซอร์ เพื่อนำค่ามาแสดงหรือประมวลผลที่ส่วนกลาง โดยผ่านคำสั่งไปที่โหนดฐาน จากนั้นคำสั่งจะถูกกระจายไปจนถึงปลายทาง และลูกข่ายปลายทางจึงทำการส่งข้อมูลกลับไปยังโหนดฐาน ไม่เพียงแต่จะตอบสนองต่อคำสั่ง แต่ละโหนดลูกยังสามารถส่งข้อมูลไปที่โหนดฐานตามคาบเวลาที่กำหนด ลักษณะการส่งข้อมูลตามคาบเวลา อาจก่อให้เกิดการชนกันของข้อมูลได้กับโครงข่ายที่มีสมาชิกมากๆ ซึ่งอาจแก้ไขด้วยการจัดคาบเวลาในการส่งข้อมูลแบบซุ่ม
  ข้อดีของการสร้างโครงข่ายลักษณะนี้คือ การที่แต่ละโหนดไม่จำเป็นต้องมีกำลังส่งสูง การเชื่อมโยงจะอาศัยการส่งกันเป็นทอดๆไป


Arduino ไลบรารี่