Zigbee and Xbee BASIC

Zigbee And Xbee BASIC ตอน Xbee คืออะไร

Xbee เป็นอุปกรณ์ที่มี Microcontroller และ RF IC อยู่ภายใน (อ้างอิงได้จาก Schematic ) ทำหน้าที่เป็น อุปกรณ์ transceiver (อุปกรณ์รับ-ส่งสัญญาณ) แบบ Half Duplex ย่านความถี่ 2.4 GHz มีการจัดการโดยใช้พลังงานต่ำ ใช้งานง่าย มี interface ที่ใช้รับและส่งข้อมูลกับ Xbee เป็น UART (TTL) ซึ่งสำหรับทางด้านไมโครคอนโทรลเลอร์ เรานำขาที่ใช้ติดต่อสื่อสาร UART ของ Xbee ต่อเข้ากับ UART ของ ไมโครคอนโทรลเลอร์ ได้เลยครับ

Xbee สามารถใช้งานตามมาตรฐาน Zigbee ได้ โดยที่ท่านไม่ต้องเขียนโปรแกรมสร้าง เครือข่าย Zigbee เลย เพราะว่าทางผู้ผลิตได้จัดทำ firmware ที่จะโหลดเข้าไปในตัว Xbee ให้เราสามารถ set parameter ผ่าน software interface (X-CTU หรือโปรแกรมที่เขียนขึ้นเอง) , ผ่านทาง At command (เหมือนกับการควบคุม GSM Module ) โดยใช้ Hyper terminal หรือ ผ่านทางการรับส่งข้อมูลด้วยไมโครคอนโทรลเลอร์ ได้อย่างง่ายดาย โดยเมื่อ set Xbee ให้ทำงานเป็นอุปกรณ์ในเครือข่าย Zigbee แล้ว เราจะเรียก Xbee แต่ละตัวว่าเป็น Node  (parameter ของ Xbee นั้นมีหลายตัว ซึ่งผมจะทยอย ๆ กล่าวถึงครับ แต่ไม่ได้อธิบายทุก parameter จะเอาเฉพาะที่เป็นพื้นฐานเท่านั้นครับ กรุณาอ่านเพิ่มเติมได้จากเอกสาร Datasheet ครับ)

Firmware ที่ใช้กับ Xbee จะใช้โหลดผ่านโปรแกรม X-CTU ซึ่งจะกล่าวถึงวิธีการใช้งานในบทความถัดไป (การใช้งาน Xbee เบื้องต้น) ทั้ง นี้ Xbee แต่ละรุ่น จะสามารถ Setting Function การใช้งานได้มากมาย ทำให้ Firmware ที่จะต้องโหลดเข้าไปนั้น มีมากมายหลายแบบ เราต้องเลือกให้เหมาะสมกับการใช้งานเอง ซึ่งจะมีการกล่าวถึงในบทความถัดไป ( Xbee Basic Configuration in Network Application) แต่ขอให้ผู้อ่าน ทำความเข้าใจบทความตามลำดับครับ

Tutorial


Feature Summary ของ Xbee โดยรวมที่เหมือนกัน
1. Operating Frequency ISM Band 2.4 GHz
(ISM Band หมายถึง ย่านความถี่ใช้งานเพื่อการวิจัย ซึ่งจะอนุญาตให้ใช้กับ อุตสาหกรรม (Industrial) วิทยาศาสตร์ (Scientific) และ ทางการแพทย์ (Medical) รวมเป็น ISM)
2. มีสายอากาศให้เลือกใช้หลายแบบ คือ แบบ Chip Ant , Whip Ant , UFL con , RPSMA con โดย 2 แบบหลัง เราต้องไปหาเสาอากาศย่าน 2.4 Ghz ที่เป็น connector แบบ UFL หรือ SMA ครับ
3. Supply Voltage อยู่ที่ 2.8-3.4 V 
4. Power Down Current < 10uA
5. มี RF data rate อยู่ที่ 250 Kbps (เป็นส่วนของ สัญญาณที่ส่งผ่านอากาศ)
6. มี Serial interface data rate อยู่ระหว่าง 1200 – 115200 Bps (เป็นส่วนที่ติดต่อสื่อสารกับไมโครคอนโทรเลอร์)
7. เป็น Spread Spectrum ชนิด DSSS (Direst Sequence Spread Spectrum
8. การกำหนด addressing มีลำดับลักษณะคือ กำหนด PAN ID สำหรับเครือข่ายหนึ่ง ๆ , กำหนด Channel และ กำหนด address ของแต่ละตัว 

รูปจาก Datasheet ของ Xbee

Xbee จะมีอยู่ 20 ขา โดยผมของยกตัวอย่างจาก datasheet ที่ ThaiEasyElec ได้มาล่าสุด เป็นของรุ่น Xbee Series1 (Digi ซึ่งเป็นบริษัทผู้ผลิต Xbee มักจะมีความเปลี่ยนแปลงเกี่ยวกับสินค้าอยู่บ่อย ๆ ครับ) อธิบายหน้าที่แต่ละขาตามตาราง Datasheet หน้า 7 Xbee ยังมีขาที่เป็น Digital I/O และ Analog to Digital ขนาด 10 bits อีกด้วย

แต่ท่านไม่สามารถนำ Xbee ต่อลง Protoboard ได้โดยตรงเพราะความห่างช่องขาของ Xbee แคบกว่าช่อง Protoboard ท่านจะต้องทำ PCB ขึ้นมาเพื่อต่อใช้งานเลย , หรือไม่ก็หา Socket แปลงขาใช้งาน เป็นระยะห่างขามาตรฐาน (Pitch) เท่ากับ 2.54 mm หรือ 1 mil สำหรับผู้ที่ต้องการจะออกแบบ PCB ท่านสามารถดูแบบ Drawing ได้จาก เอกสารนี้  

Xbee จะมีอยู่ 2 รุ่นคือ รุ่น series 1 และ รุ่น series 2 (ZB) และยังมีขนาด power ให้เลือกอีก 2 แบบ คือ แบบธรรมดา (1 mw – 2 mw) และ แบบ PRO (50mw- 60 mw) ซึ่งจะมีผลเรื่องระยะทางการรับส่งข้อมูล โดยแต่ละ series นั้น สามารถสร้างเครือข่ายได้หลายแบบ แต่จะมีเพียง series 2 เท่านั้นที่จะทำเครือข่ายแบบ mesh ได้ ซึ่งยังมีรายละเอียดปลีกย่อยในเรื่องของความแตกต่างในแต่ละ series กรุณาดู spec ได้จาก datasheet ของแต่ละ series เพิ่มเติมครับ 

Xbee ทั้ง 2 Series นี้สามารถสร้าง Topology ได้ดังนี้

  • รุ่น series 1 Peer-to-peer, point-to-point, point-to-multipoint (Broadcast)
  • รุ่น series 2 (ZB)  Mesh, Peer-to-peer, point-to-point, point-to-multipoint (Broadcast) 
    Xbee series2 จะมี parameter ในการ setting ต่าง ๆ มากกว่า series 1

หมายเหตุ

  • peer-to-peer network หมายถึง เครือข่ายที่อยู่ในระดับชั้นเดียวกัน ยกตัวอย่าง ใน OSI Layer เช่น ระดับ Transport Network Layer กับ  Transport Network Layer นั่นก็คือ TCP Protocol ระหว่างคอมพิวเตอร์ 2 เครื่อง แต่สำหรับ Xbee คำว่า peer-to-peer network หรือ Non Beacon Network คือ การที่เรา set node เป็น End Device หมดทุกตัว ไม่มีการกำหนดตายตัวว่า ตัวใดจะเป็น Master ตัวใดจะเป็น Slave แต่จะให้ระบบจัดการกันเอง โดยในเครือข่าย จะต้องกำหนด parameter  ID (PAN ID) และ CH (Channel)
  • Xbee สามารถ Set ให้เป็น End-Device , Router , Coordinator ตามเงื่อนไขของ Zigbee

เครือข่าย Zigbee แบบ  Star , Cluster , Mesh


การศึกษาการใช้งาน Xbee ในเบื้องต้น 
เราสามารถทดสอบด้วยการ ปรับ parameter ที่สำคัญต่าง ๆ ผ่าน software user interface ได้ ท่านสามารถ download software user interface ที่ใช้ร่วมกันกับ Xbee ชื่อ X-CTU มาได้ฟรีจาก Digi ครับ การใช้งาน ท่านสามารถอ่านจากคู่มือ X-CTU Configuration & Test Utility Software User Guide 

นอกจากใช้ software แล้ว ต้องมีอุปกรณ์ที่จะเชื่อมต่อ Xbee เข้ากับคอมพิวเตอร์เพื่อทำการติดต่อสื่อสารกับ X-CTU ด้วยครับ อุปกรณ์ที่ว่านี้ คือตัวที่จะนำขาบางขาของ Xbee มาต่อเข้ากับ max232 เพื่อเปลี่ยนระดับสัญญาณ TTL ให้สามารถติดต่อสื่อสารกับคอมพิวเตอร์ผ่าน RS232 (DB9) ได้ หรือเราจะใช้ FT232RL สำหรับแปลง serial เป็น USB ในกรณีที่ computer ไม่มีพอร์ต DB9 แล้วก็ได้ครับ

ตัวอย่างอุปกรณ์ที่ใช้เชื่อมต่อกับคอมพิวเตอร์เพื่อ Update , Config Parameter โปรแกรม firmware ใหม่ และสำหรับใช้ทำการทดสอบเบื้องต้น เช่น Xbee Socket,  Xbee USB Dongle, Xbee Breadboard, X-bee RS232 (DB9) Dongle อุปกรณ์ เหล่านี้ถือว่าเป็นอุปกรณ์เสริมที่ลดภาระงานทางด้าน Hardware ได้ส่วนหนึ่ง ในระยะเริ่มต้นก็จะสะดวกดีครับ แต่หากต้องการจะทำ Hardware ขึ้นเอง ก็สามารถดูวงจร Schematic จาก Digi ครับ

กำลังส่ง สายอากาศ และ สัญญาณ รบกวน ของ Xbee 
Xbee นั้น ใช้ย่านความถี่ 2.4 Ghz ซึ่งเป็นย่านเดียวกันกับ Bluetooth หรือ Wireless Lan ดังนั้นหลายคนอาจจะสงสัยว่า สัญญาณมันจะกวนกันหรือไม่ คำตอบคือ กวนกันครับ ยกตัวอย่างเช่น ที่ร้าน ThaiEasyElec เรามี wireless lan ใช้ Access Point 1 ตัว และเราก็ยังใช้เครื่องโทรศัพท์แบบ ถือไปมาได้ (2.4 GHz cordless telephones) ซึ่งก็ใช้ย่าน 2.4 Ghz เช่นกัน แล้วเราก็ทดสอบใช้งาน Xbee ด้วยครับ ผลปรากฏว่า การรับส่งสัญญาณก็ขาดหายไปบ้าง แต่บางครั้งก็ครบถ้วน นั่นอาจเป็นเพราะกำลังส่งของ Xbee และระยะทางของ node ที่เราทดสอบใกล้กันมาก 

ช่องสัญญาณย่านความถี่ 2.4 Ghz นี้เรียกว่าเป็นย่านไมโครเวฟ หลักสำคัญของย่านไมโครเวฟอย่างหนึ่งคือ การวางตำแหน่งตัวรับส่งสัญญาณนั้น ต้องตั้งแบบ line of sight (ไม่มีสิ่งกีดขวางใด ๆ) ถึงจะได้กำลังส่งสูงสุด  สำหรับกำลังส่งของ Xbee ในรุ่น Pro จะใช้ 50-60 mw ใน datasheet บอกว่าได้ไกลถึง 1.5 km. แต่ก็ต้องเป็นลักษณะ ของ line of sight ครับ หากไม่ใช่เงื่อนไขนี้ เราจะได้ระยะการรับส่งสัญญาณที่ลดลง นอกเหนือจากเรื่อง line of sight แล้ว ยังมีเรื่องสัญญาณรบกวนต่าง ๆ (Interference) ผมขอแนะนำให้ท่านดูการทดลองจาก Blog ของนักศึกษาตาม link ด้านล่างครับ ขอขอบคุณอาจารย์ที่สั่งงานนักศึกษาด้วยครับ

http://zigbee-interference.blogspot.com/ 
http://mobliezigbee.blogspot.com/ 

มาถึงเรื่องของสายอากาศครับ ตัว Xbee มีให้เลือกที่เป็นแบบสำเร็จรูปพร้อมใช้ ไม่ต้องหาสายอากาศมาต่อเพิ่มคือ สายอากาศแบบ chip ant และ whip ant  ซึ่ง Pattern การแพร่กระจายคลื่นจะบ่งบอกเราอย่างหนึ่ง(จากหลาย ๆ อย่าง) ได้ว่า สายอากาศนี้ จะมีอัตราการขยายดีอย่างไร ท่านสามารถดูเอกสารจาก Digi เพิ่มเติม ที่นี่ ครับ  

Chip ant นั้น ก็มีข้อดีตรงที่มันทำให้ขนาด Dimension รวมมันเล็กลง แต่ Gain น้อยกว่าแบบ Whip ant ครับ Chip ant จึงมีระยะรับส่งข้อมูลที่ลดลงจาก spec ใน datasheet ยกตัวอย่างเช่น รุ่น Pro ที่บอกว่าสามารถส่งได้ไกลสูงสุด 1.5 km แบบ  line of sight แต่ถ้าเราเลือก chip ant แล้ว จะได้ระยะสูงสุดอยู่ที่ 500 กว่าเมตรครับ

Xbee Association
          ในเครือข่าย Zigbee ต้องมีการทำงานในโหมดประหยัดพลังงาน ในช่วงเวลาที่ไม่มีการทำงาน รับส่งข้อมูล ดังนั้นตัว Xbee จึงมี Parameter ที่จะกำหนดการทำงานสำหรับ Sleep mode อยู่ครับ (Parameter A1,A2,SP,ST)

Xbee Addressing
          ตัว Xbee จะสามารถกำหนดค่าประจำตัวอ้างอิงของมัน (Address) 2 แบบ คือ แบบ 16 bit address และ 64 bit address ปกติแล้ว Xbee ทุกตัวจะถูกกำหนดค่ามาจากโรงงานเป็น Address 64 bit อยู่แล้ว ซี่วจะสามารถอ่านค่าได้จาก parameter SH+SL การใช้งาน Address 64 bit สามารถทำได้โดยกำหนด parameter MY ให้มีค่า 0xFFFF หรือ 0xFFFE ส่วน การกำหนด 16 bit addressนั้นทำได้โดย กำหนด parameter MY ให้มีค่าน้อยกว่า 0xFFFE โดยจะเรียกเป็น mode การทำงาน 2 ประเภทคือ
1. Unicast Mode คือ การรับส่งข้อมูล โดยอาศัยหลักการ Acknowledgement คือหากทางด้านส่งนั้น ส่งข้อมูลไป แต่ไม่ได้รับ Ack ตอบกลับจากตัวรับ ก็จะทำการส่งข้อมูลใหม่
2. Broadcast Mode  คือการส่งข้อมูลไปยังปลายทางให้ได้รับข้อมูลทุกตัว

Xbee Operation Mode
Xbee จะสามารถแบ่งช่วงการทำงานได้เป็น 5 แบบ คือ 
1. Idle Mode โหมดนี้ จะเป็นโหมดที่ไม่ได้รับส่งข้อมูล ตัว Xbee เตรียมที่จะทำงานในโหมดอื่น ๆ ต่อไปทันที หากมีเงื่อนไขบางอย่าง
2.-3. Transmit / Receive Mode (พูดรวม 2 Mode ครับ) คือช่วงที่ Xbee มีการรับ หรือ ส่งข้อมูล โดยจะแบ่งลักษณะการทำงานย่อยออกเป็น Direct กับแบบ Indirect , การกำหนด Address ต้นทางและปลายทาง , Clear Channel Assessment และ การตอบรับ Acknowledgement 
4. Sleep Mode คือ ช่วงที่ Xbee อยู่ในสถานการณ์ทำงานพลังงานต่ำที่สุด เมื่อไม่มีการใช้งาน
5. Command Mode คือ เป็นส่วนการปรับ parameter ของ Xbee ซึ่งจะมีการกำหนด 2 แบบคือ แบบ AT command กับแบบ API Command

โดยบทความนี้จะขอกล่าวถึงเฉพาะ AT Command Mode และกล่าวถึงบาง Parameter ที่เป็นพื้นฐาน สำหรับการทำเครือข่ายแบบ Point-to-Point ครับ สำหรับ API command จะขอกล่าวในบทความ Xbee ตอนต่อไปครับ

Data Throughput ของ Xbee

โดยทั่วไปการใช้งาน RF Module ควรจะกำหนดให้มี Buffer ด้วย เพื่อการปรับอัตรารับส่งข้อมูลระหว่างตอนที่รับส่งทางอากาศ กับตอนที่รับส่งไปยัง ไมโครคอนโทรลเลอร์ หรือ อุปกรณ์อื่น ๆ ได้อย่างเหมาะสม 

Data ที่รับส่งระหว่าง MCU กับ Xbee จะมีข้อจำกัด เรื่อง Packet อาจถูก Drop ได้ เนื่องมากจาก Data Over Flow โดยสำหรับด้านการส่งข้อมูลไปที่ Xbee เพื่อออกอากาศนั้น ที่ ขา DI จะมี Buffer อยู่ประมาณ 202 Bytes หากส่งเกิน Buffer จะเกิดการ Drop packet ทิ้ง ซึ่งทางฝั่งรับข้อมูล ที่ขา DO ก็มี Buffer อยู่เช่นกัน โดยจะมี Parameter ที่เกี่ยวข้องกับ  Data Throughput คือ RO และ BD 

ค่า RO คือค่า Packetization Timeout ซึ่งเป็น delay ของข้อมูลที่อยู่ใน DI Buffer ก่อนที่จะถูก encapsulate ไปที่ส่วน RF transmission เพื่อส่งข้อมูลออกอากาศ หากตั้ง RO = 0 Data ที่รับเข้ามาจาก MCU จะถูก Xbee Encapsulate Packet ส่ง ออกอากาศทันที ดังนั้นเราจะมี Parameter RO และ BD ที่จะช่วยในการปรับ Data รับส่งให้สามารถรับส่งกันได้ทัน ไม่ให้มีการ Drop Packet ได้ ในกรณีที่ส่งข้อมูลเกิน 200 Bytes ครับ

นอกจากนี้ยังมี PIN CTS(ขา12) และ RTS(ขา16) ช่วยเตือนเราเวลาที่ Buffer ภายในใกล้จะเต็มด้วยครับ โดยในฝั่งส่ง DI Buffer จะส่ง Signal มาทาง CTS เมื่อ DI Buffer เหลือพื้นที่จัดเก็บอยู่อีก 17 Bytes และส่ง Clear Signal ที่ CTS เมื่อ DI Buffer เหลือพื้นที่จัดเก็บมากกว่า 34 Bytes

ดังนั้น สำหรับการเขียนโปรแกรม รับส่งข้อมูลกับ Xbee ต้องคำนึงเรื่อง Buffer ด้วยครับ แต่ในทางปฏิบัติ สำหรับงาน Sensor Network ก็ไม่ได้รับส่งข้อมูล Stream Data ยาว ๆ เท่าไหร่นักครับ