Zigbee and Xbee BASIC ตอน การต่อไมโครคอนโทรลเลอร์กับ Xbee เบื้องต้น


Zigbee and Xbee BASIC ตอน การต่อไมโครคอนโทรลเลอร์กับ Xbee เบื้องต้น

ถ้าใช้ MCU ที่ใช้ไฟเลี้ยง 3.3 Volt ท่านสามารถต่อ Xbee เข้ากับ MCU ได้โดยตรง โดยที่ Xbee จะใช้ DI (ขา3) ซึ่งเป็น Rx ของ Xbee, DO (ขา2) ซึ่งเป็น Tx ของ Xbee, Supply Voltage ใช้ขา VCC (ขา1) ต่อกับ 3.3 Volt และ GND (ขา10) ต่อกับ Ground ในเบื้องต้นเพียงเท่านี้ก็สามารถเขียนโปรแกรมต่อได้ครับ

รูปจาก Datasheet ของ Xbee

ถ้าต้องการให้สามารถ Update Firmware ได้ด้วย ต้องต่อขา DI , DO,  RTS และ DTR (ขา9) ออกมาเข้า MAX232 เพื่อต่อ DB9 เข้าคอมพิวเตอร์ ครับ และให้ต่อใช้งาน CTS (ขา12) และ RTS(ขา16) ของ Xbee ด้วยครับ

ทั้งนี้หากต้องการออกแบบ Hardware สำหรับเสียบกับ Xbee ท่านสามารถดูอุปกรณ์ต่าง ๆ หรือดูวงจรเพื่อเป็นตัวอย่างในการออกแบบ Hardware ของท่านเองได้จาก หน้าสินค้า Tools/Converters for Xbee

สำหรับการออกแบบใช้ Serial Port UART แบบ Virtual Com Port (RS232 to USB) สามารถใช้ IC FT232RL Serial to USB ได้ครับ เพื่อใช้งานผ่านพอร์ท USB 

เนื่องจาก Xbee กินไฟเลี้ยง 3.3V ดังนั้นหากใช้งานร่วมกับไมโครคอนโทรลเลอร์ ที่ใช้ไฟเลี้ยง 5V จะ ต้องใช้การแก้ปัญหาเรื่องระดับสัญญาณ Logice ระหว่าง 3.3V / 5V เพื่อหลีกเลี่ยงปัญหาที่อาจจะเกิดขึ้นเช่น ข้อมูลที่รับส่งทาง UART (Tx,Tx) อาจจะเป็นข้อมูลขยะ (อ่านไม่เป็นตัวอักษร) ได้ ซึ่งตัวที่จะแก้ไขได้คือใช้ IC 74Lx245 (ES) หรือ ใช้โมดูลสำเร็จรูป Logic Level Converter 8 Channel หรือ Logic Level Converter เพื่อให้เชื่อมต่อ Xbee ที่ทำงาน ที่ Supply Voltage 3.3V กับ ไมโครคอนโทรลเลอร์ ที่ใช้ Supply Voltage 5V ได้ครับ สำหรับทฤษฎี และ การใช้งาน IC 74Lx245 สามารถอ่านได้จาก Link ด้านล่างครับ 

– Logic Level Converter 8 Channel Datasheet (PDF)
– Logic Thresholds (WEB)

การเชื่อมต่อ Xbee กับ MCU

Schematic ด้านล่างเป็นตัวอย่างการต่อวงจร Xbee กับ IC 74Lx245 ร่วมกับไมโครคอนโทรลเลอร์ PIC16F877 ซึ่งใช้ไฟเลี้ยง 5V

ตัวอย่างการต่อ Xbee กับ Microcontroller PIC16F877

ตัวอย่างโปรแกรมการต่อ Xbee กับ AVR

สำหรับตัวอย่างในบทความนี้ จะใช้ Xbee Pro Series1 ร่วมกับ บอร์ดสำเร็จรูปมาต่อ ๆ กันครับ โดยการเขียนโปรแกรมไมโครคอนโทรลเลอร์นั้นจะเริ่มที่ บอร์ด ATMEGA16 ที่ใช้ crystal 8 MHz ต่อเข้ากับ Xbee Breadboard เป็นตัวส่งข้อมูลไปยังตัวรับอีกฝั่ง เขียนโปรแกรมภาษาซี ส่งคำสั่งเป็น AT Command Mode ผ่าน UART ครับ (AVR Studio + WINAVR C Complier) ทั้งนี้ การ set parameter จะทำการ set ฝั่งส่งเป็น End Device (CE=0) และ ค่า MY = 1 (16 bit address) และ set ฝั่งรับ เป็น Coordinator (CE=1) และ ค่า MY = 2 (16 bit address) ทั้งนี้ ได้ set baud rate ที่ตัว Xbee ทั้ง 2 ตัวที่ 9600 bps (BD=3) 

การเชื่อมต่อ 
1.ที่ฝั่งส่ง ต่อ PD1 (TX) ของ ATMEGA16 เข้ากับ DI (ขา3) และ PD0 (RX) ของ ATMEGA16 เข้ากับ DO (ขา2), ต่อ GND ของทั้ง 2 บอร์ดเข้าด้วยกัน โดย  
2.ฝั่งรับใช้ Xbee ร่วมกับ Xbee USB Dongle ต่อเข้ากับ คอมพิวเตอร์ โดยมี X-CTU หรือ hyper terminal ในการแสดงผลข้อมูลที่รับได้ 
3.หากใช้ X-CTU ในการรับส่งข้อมูล ให้เลือกที่ Tab Terminal ครับ จะมีตัวเลขที่นับ byte ข้อมูลที่รับได้ด้วยครับ

อุปกรณ์ต่าง ๆ สามารถหามาต่อใช้งานเลียนแบบกันได้ โดยดูจากหน้าสินค้า Tools/Converters for Xbee ครับ 


หมายเหตุ ATMEGA16 ใช้ Supply Voltage 5 V ดังนั้น ต้องต่อ Buffer IC 74Lx245 ด้วย ซึ่งในรูปด้านล่างไม่ได้แสดงส่วนการเชื่อมต่อ IC 74Lx245 ให้ท่านทำการเชื่อมต่อตามรูป ตัวอย่างการต่อ Xbee กับ PIC16F877 ด้านบนครับ แต่ถ้าหากท่านใช้ Microcontroller ที่ใช้ Supply Voltage 3.3 V ก็สามารถเชื่อมต่อกันได้โดยตรงครับ

ผมขออ้างอิง source code จากตัวอย่างในหนังสือ เขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์ AVR ด้วย ภาษา C เล่ม 1 ของ Appsofttech ซึ่งเขียนโปรแกรมส่งคำสั่ง AT Command ออก TX UART และอาศัยการ delay เพื่อรอการ reply “OK” ของคำสั่งที่ส่งออกไปครับ แต่การใช้งานจริง ๆ แล้ว ควรที่จะเขียนโปรแกรมรับ stream data ที่ RX UART เข้ามาเก็บในตัวแปร array หรือ structure แล้ว เช็คตัวอักษรข้างในว่าเป็นคำว่า “OK” หรือไม่ จะดีกว่าครับ เพราะหาก ส่งคำสั่งไปแล้ว Xbee ไม่ตอบ “OK” กลับจะทำให้ Xbee ไม่รับคำสั่งต่อไปครับ


ตัวอย่าง Source Code สามารถ download ได้ที่นี่ครับ

Xbee กับการ Interface กับ คอมพิวเตอร์ทาง UART

ทาง ThaiEasyElec ก็ได้เขียนส่วน Software Interface ขึ้นมาทดลองใช้งานด้วยครับ โดยเราเขียนด้วย C# ตัวอย่าง Source Code  สามารถ download ได้ที่นี่ครับ

การ เข้าใช้งาน ให้โหลดมาแล้ว extract ก่อน แล้วไปที่ XbeeSerial\bin\Debug\  แล้ว double click ที่ XbeeSerial ถ้าหากเปิดโปรแกรมไม่ได้ นั่นเป็นเพราะว่า ต้องทำการติดตั้ง .net framework 2.0 ขึ้นไปครับ (C# ต้องใช้ .net framework) download .net framework 2.0 ที่นี่ ครับ

โปรเจคเกี่ยวกับ Xbee ที่น่าสนใจ

บทสรุป


1. ท่านได้รู้จัก Zigbee และ Xbee เบื้องต้น พร้อมการติดต่อใช้งานทั้งแบบ ใช้ร่วมกับ ไมโครคอนโทรลเลอร์ และ แบบ Dongle ที่ต่อเข้าคอมพิวเตอร์โดยตรง


2. การใช้งาน Xbee ที่แสดงทั้งหมด เป็นการใช้ Xbee รุ่น series 1 Pro ทั้งนี้หากใช้ Xbee รุ่น Series 2 จะมี Parameter เพิ่มมากขึ้น


3. การสร้าง Network ต่าง ๆ จะต้องควบคุม Parameter มากกว่านี้ สำหรับในบทความนี้เป็นเพียงการใช้งานเบื้องต้นเท่านั้น


4. ปัญหาการใช้งานต่าง ๆ นอกเหนือจากนี้ ขอให้พยายามแก้ปัญหาด้วยตนเอง จะทำให้เข้าใจระบบมากขึ้นครับ