Zigbee Communication Basic

ဒီ Tutorial မှာ Digi က ထုတ်တဲ့ Zigbee Module ၂ ခုဖြစ်တဲ့ XBee Series 1 and Series 2 အကြောင်းကို ဆွေးနွေးသွားပါမယ်။

XBee Series 1 နှင့် Series 2 မတူတဲ့ အချက်ကို သတိထားရပါမယ်။ Arduino နဲ့ အလွယ်တကူတွဲသုံးချင်တယ် ဒါမှမဟုတ် Xbee ပဲ တိုက်ရိုက်သုံးချင်တယ် (ဘယ် MCU မှ ထည့် မသုံးပဲ) ဆိုရင်တော့ Series 1 ပို အဆင်ပြေစေပါတယ်။

XBEE Series 1 ဟာ Direct IO Passing (Transmitter IO [input-output]) ကို သုံးလို့ရတဲ့ အတွက် AT Commands တွေကို အသုံးပြုပြီး Configure လုပ်ထားရုံနဲ့ သုံးရတာ အဆင်ပြေပါတယ်။

XBEE Series 2 ကတော့ Direct IO Passing မရတဲ့ အတွက် API (Application Programming Interface) ကို သုံးမှပဲ IO တွေကို Control လုပ်လိုု့ရမှာပါ။ အသေးစိတ်ကို နောက်ပိုင်းမှ ဥပမာလေးတွေနဲ့ ရှင်းပြသွားပါ့မယ်။

XBEE SERIES 1

Direct IO Passing ဆိုတာ ဘာလဲ?

XBEE-A က Transmitter နှင့် XBEE-B က Remote Device (Receiver) လို့ ယူဆကြပါစို့။

XBEE-A က GPIO-D0 ကို မိန့်ပေးခိုင်းစေလိုက်ရင် XBEE-B က GPIO-D0 က မီးလင်းစေမည်။ XBEE-A D0 နဲ့ XBEE-B D0, XBEE-A D1 နဲ့ XBEE-B D1, XBEE-A D2 နဲ့ XBEE-B D2 စသဖြင့် တွဲထားတာကို ခေါ်တာပါ။

အောက်က Example မှာ XBEE-A က ခလုတ်နှိပ်ရင် XBEE-B မှာ မီးလင်းတဲ့ Example လေးပြောသွားပါ့မယ်။

အောက်က Table မှာ XBEE-A ကို ပို့ရမယ့် Command တွေနဲ့ XBEE-B ကိုပို့ရမယ့် Command တွေကို ပြထားပါတယ်။

DIGI Zigbee XBEE Module တွေကို သုံးမယ်ဆိုရင်တော့ AT Commands တွေ အကြောင်းနားလည်ဖို့လိုပါတယ်။

XBEE-A XBEE-B
ATID 1234 1234
ATMY 5678 1234
ATDL 1234 5678
ATAI 0 0
ATIR 14
ATIT 5
ATBD 3 3
ATIU 1
ATIA 5678
ATD0 3 4
ATD1 3 4
ATD2 3 4
ATD3 3 4
ATD4 3 4
ATD6 3 4

အထက်က Table ကတော့ XBEE-A က INPUT အနေနဲ့ပဲသုံးပြီး XBEE-B က OUTPUT အနေနဲ့ပဲ သုံးပါတယ်။

XBEE AT Command အကြောင်းကိုတော့ အောက်က လင့်မှာ ဖတ်ရှုနိုင်ပါသည်။

https://cdn.sparkfun.com/assets/resources/2/9/22AT_Commands.pdf

ATD0 ဆိုတာ I/O အမှတ် 0 ကို ထိန်းချုပ်မယ့် Command ပါ။ အထက်က Table ကို ကြည့်ပါ။ ATD0 ကို 3 လို့ သတ်မှတ်ရင် IO Pin 0 က Input Pin ဖြစ်သွားပါတယ်။ ATDO ကို 4 လို့ ပေးရင် တော့ DIGITAL OUTPUT, LOW (Active LOW ) လို့ သတ်မှတ်နိုင်ပါတယ်။

GPIO တွေကို OUTPUT လို့ သတ်မှတ်တဲ့ နေရာမှာ အခြေအနေ ၂ မျိုးရှိပါတယ်။ ACTIVE HIGH or ACTIVE LOW။

ဘယ်ဘက်က ပုံကတော့ ACTIVE HIGH ဖြစ်ပြီးတော့ ညာဘက်ကပုံကတော့ ACTIVE LOW ဖြစ်ပါတယ်။

image003

 

အောက်က Table မှာ XBEE-A က Pin D0 ကို Input ၊ D3 ကို Output နှင့် XBEE-B က Pin D0 ကို Output ၊ D3 ကို Input လို့ သတ်မှတ်ရအောင်။

XBEE-A XBEE-B
ATID 1234 1234
ATMY 5678 1234
ATDL 1234 5678
ATAI 0 0
ATIR 14
ATIT 5
ATBD 3 3
ATIU 1
ATIA 5678
ATD0 3 4
ATD1 0 0
ATD2 0 0
ATD3 4 3
ATD4 0 0
ATD6 0 0

XBEE-A ကနေ XBEE-B ကို D0 ကနေ အမိန့်ပေးနိုင်သလို XBEE-B ကနေ XBEE-A ကို D3 ကနေ အမိန့်ပေးနိုင်ပြီးပေါ့။ ဒီလို ၂ဘက်လုံးက အပြန်အလှန် အမိန့်ပေးနိုင်တယ်ဆိုတာ Bidirectional Communication လုပ်လို့ရတယ်လို့ ဆိုပါတယ်။

XBEE Series 1 အကြောင်းကို ဒီလောက်ဆို အခြေခံအားဖြင့် နားလည်ပြီး အသုံးပြုလို့ရပါပြီး။

XBEE SERIES 2

XBEE Series 2 ကတော့ API ကို အသုံးပြုရတာပါ။ AT Commands တွေ သုံးပြီး Control လုပ်ဖို့ရာ ခက်ပါတယ်။ Direct IO Passing Feature တွေ မပါတော့ပါဘူး။ ဒါပေမယ့် Series 2 က ပိုပြီး အစွမ်းထက်ပါတယ်။ Series 2 API အကြောင်း မပြောခင် Series 1 နှင့် Series 2 ကွဲပြားခြားနားချက်လေးတွေကို လေ့လာရအောင်။

XBee Series 1 XBee Series 2
Indoor/Urban range up to 100 ft. (30m) up to 133 ft. (40m)
Outdoor RF line-of-sight range up to 300 ft. (100m) up to 400 ft. (120m)
Transmit Power Output 1 mW (0dbm) 2 mW (+3dbm)
RF Data Rate 250 Kbps 250 Kbps
Receiver Sensitivity -92dbm (1% PER) -98dbm (1% PER)
Supply Voltage 2.8 – 3.4 V 2.8 – 3.6 V
Transmit Current (typical) 45 mA (@ 3.3 V) 40 mA (@ 3.3 V)
Idle/Receive Current (typical) 50 mA (@ 3.3 V) 40 mA (@ 3.3 V)
Power-down Current 10 uA 1 uA
Frequency ISM 2.4 GHz ISM 2.4 GHz
Dimensions 0.0960″ x 1.087″ 0.0960″ x 1.087″
Operating Temperature -40 to 85 C -40 to 85 C
Antenna Options PCB, Integrated Whip, U.FL, RPSMA PCB, Integrated Whip, U.FL, RPSMA
Network Topologies Point to point, Star, Mesh (with DigiMesh firmware) Point to point, Star, Mesh
Number of Channels 16 Direct Sequence Channels 16 Direct Sequence Channels
Filtration Options PAN ID, Channel & Source/Destination PAN ID, Channel & Source/Destination

အသေးစိတ်တော့ မဆွေးနွေးတော့ပါဘူး။ Series 2 က Mesh Network လုပ်လို့ရတာပါပဲ။ အောက်ကပုံမှာ Topology တွေကို ပုံနှင့် တကွ ဖော်ပြထားပါတယ်။ Series 1 က Mesh ကို သုံးလို့ရပေမယ့် DigiMesh Firmware ကို သုံးရမှာပါ။ ဘာကို ဆိုလိုတာလဲဆိုတော့ Zigbee Standard နဲ့ ချိတ်ဆက်ထားတဲ့ Network ထဲကို တိုက်ရိုက်ချိတ်ဆက်ခွင့်ရချင်မှ ရပါလိမ့်မယ်။ Series 2 ကတော့ ကြိုက်တဲ့ Zigbee Technology သုံး Zigbee Network ကို ချိတ်ဆက်အသုံးပြုလို့ရပါတယ်။ အသေးစိတ်ထပ်ရှင်းရရင် TI က Zigbee Standard သုံး Network ရှိနေပါက Digi က XBEE Series 2 ကို သုံးပြီး ဝင်ရောက်ချိတ်ဆက်နိုင်တယ်လို့ ဆိုလိုတာပါ။

image004

XBEE Series 2 API Tutorial

API ကို သုံးပြီး XBEE Series 1 နှင့် XBEE Series 2 နှစ်မျိုးလုံးကို ခိုင်းစေလို့ရပါတယ်။ ဒါပေမယ့် ဒီ Tutorial ကိုတော့ XBEE Series 2 နဲ့ပဲ လုပ်သွားပါ့မယ်။ Tutorial ကတော့ ADC, D2 and D3 Digital IO Line တွေကို ချိတ်ဆက် အလုပ်လုပ်သွားပါမယ်။

Remote Device (End Device) ကနေ ADC Value , Digital IO Value တွေကို သိချင်တယ်ဆိုကြပါစို့။ လုပ်နိုင်တဲ့ နည်းလမ်း ၃ မျိုးရှိပါတယ်။

  • Automatic Sampling using a Sample Rate (IR)
  • Automatic Sampling using Change Detect (IC)
  • Remotely Queried Sample (IS)

Automatic Sampling using a Sample Rate (IR)

ဒီနည်းလမ်းမှာတော့ Remote Device မှာ ADC, D2, D3 တွေအားလုံးက Input တွေပါပဲ။ ADC တန်းဖိုး၊ D2 နဲ့ D3 Digital IO Line က LOW လား၊ HIGH လားကို အချိန်တစ်ခုခြားပြီး ဖတ်ပြီးတော့ မိမိပို့လိုသော Base Station (သို့) Coordinator (သို့) Control Main Zigbee Device ကို ပို့ပေးတာပါ။ အမည်အမျိုးမျိုးခေါ်ကြပါတယ်။ အခုပြောတဲ့ အမည် ၃ မျိုးထက်ပိုပြီး ခေါ်ပါသေးတယ်။

ဒီ Application ကလွယ်ပါတယ်။ ဖြစ်ချင်တာအားလုံးကို Remote Device (End Device) မှာ XCTU ကို အသုံးပြုပြီး Configure လုပ်ထားရုံလေးပါ။

Configuration:

DH=0x0013A200

DL=0x12345678 (address of the collector node)

D1=0x02 (ADC)

D2=0x03 (Digital Input)

D3=0x03 (Digital Input)

IR=0x200 (512ms)

SM=0x04 (cyclic sleep)

SP=0x1770 (60 seconds)

 

image006image008

XCTU Software မှာလဲ တစ်ခုချင်းစီ ထည့် ရေးရုံပါပဲ။ DH နဲ့ DL မှန်အောင် ထည့်ထားမယ်ဆိုရင် ၁ မိနစ်တိုင်းမှာ ADC, D2, D3 တွေရဲ့ အခြေအနေတွေကို ဖတ်ပြီး DH, DL လိပ်စာ အတိုင်း ပို့ပေးနေမှာပါ။ ကျန်တဲ့ အချိန်တွေမှာ တော့ သူက အိပ်ပျော်နေပါလိမ့်မယ်။ အသေးစိတ်တွေကို User Guide ဆက်လက် ဖတ်ပြီးလေ့လာစေချင်ပါတယ်။ Configure လုပ်တဲ့ တစ်ခုချင်းစီရဲ့ အလုပ်လုပ်ပုံကို ပိုနားလည်လာလေ ပျော်စရာကောင်းလာလေပါပဲ။

Automatic Sampling using Change Detect (IC)

ဒီနည်းလမ်းမှာလည်း Remote Device မှာ ADC, D2, D3 တွေအားလုံးက Input တွေပါပဲ။ Remote Device က Automatic Read ချင်တာမှန်သမျှ Input လုပ်မှပဲ အဆင်ပြေမှာပါ။ ဒီ နည်းလမ်းအတွက် Configuration တွေကတော့ အောက်ပါ အတိုင်းပါ။

image011

image013

Configuration

DH=0x0013A200

DL=0x12345678 (address of the collector node)

D1=0x02 (ADC)

D2=0x03 (Digital Input)

D3=0x03 (Digital Input)

IC=0x40 (binary: 0000 1100)

SM=0x00 (always on)

IC ရဲ့ DIO2 နဲ့ DIO3 ကို 1 လို့ ပေးထားပါတယ်။ D2 နဲ့ D3 Pin တွေ HIGH-to-LOW, LOW-to-HIGH ဖြစ်တာနဲ့ Remote XBee device လေးဟာ ADC Value, D2, D3 Value တွေကို DH, DL address ရှိတဲ့ XBEE Collector ကို ပို့ပေးမှာပါ။ ဒီနေရာမှာ တစ်ခု သတိထားရမှာက Change Detect (IC) ကို သုံးမယ်ဆိုရင် XBEE က Sleep Mode မှာ နေလို့မရပါဘူး။ အမြဲ ON နေရမှာပါ။ Sample Rate (IR) မှာ တော့ XBEE က Sleep Mode ကို သွားနိုင်တဲ့ အတွက် ဓာတ်ခဲ ကုန်ကျတာ သက်သာပါတယ်။