السلام عليكم و رحمه الله و بركاته :
الموضوع ده اول مشاركه ليا فى المنتديات و
انا حبيت اكتبه لانى نفذته فى مشروع التخرج بتاعى و عانيت بسببه و اخد وقت طويل
جدا ف فضلت اكتبه للناس علشان ميتعبوش زيى و يستفادوا بأذن الله:
Xbee pro s2b |
مبدئيا لازم نعرف
يعنى ايه xbee و ايه مميزاتها ؟ طب وليه استخدمها و مااستخدمش
البلوتوث مثلا؟
انا استخدمت xbee pro s2b
مميزات xbee:
Operating voltage: 2.1 – 3,6V.
Operating current: 40MA - 3.3v.
Indoor range: 60 m
Outdoor range: 1000 m.
RF-data rate: 250 Kbps.
Through put speed :35 Kbps.
Frequency: ISM 2.4 GHz.
Receiver
Sensitivity: -102 dBm.
هنلاحظ ان من مميزاتها
ان ال range بتاعها indoor 60 متر و outdoor ممكن توصل ل 1 كيلومتر فبالتالى هى افضل من البلوتوث لو هتستخدمها فى
التحكم فى روبوت مثلا .
و
كمان من اهم مميزات ال xbee انها بتنقل البيانات بسرعه
كبيره جدا 250kb فى الثانيه و دى مفيده جدا علشان
تقدر تبعت اوامر كتير و بسرعه كبيره و ده ممكن نستخدمه لو بنتحكم فى روبوت و
بنبعتله واومر بسرعه كبيره.
ال xbee بتستخدم بروتكول فى الشبكه اسمه zigbee و البروتكول ده بكل اختصار بيدعم او
بيشتغل على 3 انواع من الشبكات
a) mesh
topology
b) star topology.
c) Cluster-tree topology.
ال xbee بتشتغل
على mesh topology network و دى معناها ان كل الاجهزه على الشبكه متصلين
ببعض.
ال xbee بيتم تهيئتها ل نوع واحد من 3 انواع من الاجهزه:
1)
Coordinator.
2)
Router.
3)
Endpoint.
1) ال coordinator
ده هو ال xbee اللى بتنظم الشبكه و اى اتنين xbee ميقدروش يكلموا بعض إلا بوجود ال coordinator بمعنى ادق اى شبكه لازم يكون فيها xbee متهيئه
على انها coordinator.
و ده واحد بس فى كل شبكه.
2)اما
ال router ف ده ممكن يكون موجود اكثر من
واحد فى الشبكه الواحده و ده يقدر ينقل
بيانات بين اتنين من ال endpoint و ده مينفعش يبقى sleep ابدا
يعنى
ايه sleep :دى خاصيه
لل xbee بتحدث عند عدم استقبال اوامر زى ما بيحصل فى الكمبيوتر
مثلا.
3)و
اخيرا ال End point device ده ممكن يكون موجود اكتر من جهاز برضه فى الشبكه
الواحده بس ده ميقدرش يوصل بيانات من
راوتر ل راوتر اخر ... و كمان يقدر يشغل
خاصيه ال sleep.
Xbee network |
هنعرف بعد شويه ازاى اخلى ال
xbee تشتغل ك coordinator Or
router Or endpoint device.
ال xbee ممكن تتوصل بالاردوينوا عن طريق ال xbee
pro arduino shield
و بتبقى بالطريقه
دى :
![]() |
xbee and xbee shield |
و اسمها Association
LED
و هى ليها 3 حالات:
1) انها تنور ببطىء (مره واحد فى الثانيه):
و ده معناها ان ال coordinator اشتغل بطريقه
صحيحه.
و لو مشتغلش بتفضل منوره من غير ما تطفى.
2) انها تنور و تطفى بسرعه كبيره جدا (5 مرات فى الثانيه تقريبا):
و ده معناه ان فى غلط فى ال ENDPOINT
device و انك لازم تتأكد من الاعدادات الخاصه بيه.
3)
انها تنور و تطفى بسرعه مش كبيره (مرتين فى
الثانيه):
و ده معناه ان ال END POINT استقبل موافقه من ال coordinator
لدخول الشبكه و لسه مستقبلش او بيانات.
او ممكن تتوصل من
غير ال شيلد هكذا
بس لازم ناخد
بالنا انها بتشتغل ب 3.3v و لو وصلها فولت من كده هتبوظ.
و فى مشكله ممكن
تواجهكم لو ال XBEE اللى معاكوا s1 ان
الاردوينوا بيطلع 5 فولت فى باقى ال pins اللى هتنقل البيانات ف انتوا ممكت بأستخدام
قانون اوم تحسبانتا محتاج مقاومات اد ايه و توصل مقاومات فى TX
pin & RX pin
او ممكن نستخدم
logical level converter:
store.fut-electronics.com/BOB-08745.html
و ده بيحول من 5 فولت غلى 3.3 فولت
|
انما لو xbee s2 ف ممكن توصله عادى بس متنساش ان ال vcc = 3.3v
و بتتوصل كالاتى:
Arduino
|
Xbee
|
3.3v
|
Vcc
|
RX
|
Dout
|
DIN
|
DIN
|
GND
|
GND
|
ازاى بقا نستخدم ال xbee
زى ما قولنا قبل كده ان احنا لازم نعمل ضبط و اعدادات لل xbee علشان تعرف هى هتشتغل ك coordinator or router or endpoint
احنا المفروض بنعمل الضبط ده عن طريق السيريال يعنى بنبعت اوامر عن طريق اى terminal لل xbee لتحديد الاعدادات المطلوبه
بس الشركه المصنعه لل xbee و اسمها digi عملتلنا برنامج ب واجهه سهله الاستخدام علشان نقدر نضبط الاعدادات الخاصه ب ال xbee بدون البحث عن اوامر ال terminal .
البرنامج اسمه xcut و بننزله من اللينك ده
دلوقتى هنعمل اعدادات ال Endpoint:
اولا بنحرق سكيتش فاضى على بورده اردوينوا كالاتى:
void
setup()
{}
Void loop()
{}
بعد كده بنركب ال xbee
shield على الاردوينوا و بيكون ال 2 jumpers على الناحيه اليمين اللى مكتوب عليها USB و ده معناه انك مش مشغل ال xbee علشان تتصل ب شبكه لاء انتا مشغلها علشان
تعملها تهيئه و فى الحاله دى بتقدر تحرق كود على ال اردوينوا
بعد ما حرقنا الكود و ركبنا الشيلد على الاردوينوا بورد نركب ال xbee على الشيلد و بعدين نوصل الاردوينوا على الكمبيوتر و نفتح برنامج xcut
فى اول tap و اسمه PC setting بنختار ال com-port اللى متوصل عليه الاردوينوا و ندوس test/Query
و دى معناها ان
البرنامج شاف ال xbee و جاهز للكتابه عليها:
ملحوظه :
فى الجزء ده انا
واجهتنى مشكله ان البرنامج مش شايف ال xbee و خدت منى وقت طويل انى اشوف المشكله فين لكن
المشكله اتحلت لما اشتريت كابل جديد بيوصل الاردوينوا ب الكمبيوتر.
نروح بقا لل Configuration modem :
اهم 3 خصائص لل xbee هى ال
PAN
ID(Personal Area network)
و الرقم ده لازم
يكون واحد فى كل ال xbee
اللى فى شبكه واحده ده عامل زى كلمه السر اللى بتخليهم يتعرفوا على بعض و
يتصلوا ببعض و لو الرقم ده مختلف ال xbee مش هيتصلوا ببعض من الافضل تخليه رقم مكون من
4 ارقام مثلا.2,3) ال Serial address و ده عنوان بيتكون من 16بت متقسمه على عنوانين هما ال Serial High و ال Serial Low ودول اكتبهم فى ورقه لانك هتقولهم لل coordinator كمان شويه.
و كمان فى خاصيه اسمها sleep و دى بتحدد ال End point يعمل sleep بعد اد ايه من عدم استقباله البيانات.
بعد ما تخلص تعلم على update frameware و تختار نوع ال xbee بتاعتك و الاصدار بتاعها و هتلاقيهم مكتوبين على xbee و تختار فى ال function set تختار router or enddevice AT
باقى الاعدادات انا مجتش جمبها بس انتا ممكن تقرا نبذه عن كل خاصيه و هى بتعمل ايه من على اللينك اللى بنعمل داونلود من عليه.
و تدوس Write هتلاقى البرنامج بيكتب على ال xbee و بعد اما يخلص كده ال endpoint device جاهز للعمل.
![]() |
End-point ready to work |
الخطوه التانيه:
نعمل اعدادات ال Coordinator
هنركب ال xbee التانيه و نعمل نفس الخطوات لحد ال configuration
setting
هنكتب نفس ال PAN
ID اللى عملناه فى ال xbee الاولى
بعد كده فى ال DH parameter هنكتب ال عنوان بتاع ال SH فى ال ENDpoint device
و فى الDL
parameter هنكتب العنوان بتاع ال SL فى ال ENDpoint
device
بعد كده تعلم
على update
frameware و تختار نوع الxbee و الاصدار بتاعها و بعد كده نختار من ال function
set coordinator AT
وندوس write
بس مننساش لو كنا
بنستعمل شيلد نحط ال jumpers ناحيه ال xbee لما نجى نشغل ال xbee علشان يتصلوا ببعض و لما نعملكده مش هنعرف
نحرق كود على الاردوينوا غير لما نشيل الشيلد او نحط الjumpers
ناحيه ال USB
دلوقتى عايزين
نعمل تجربه:
نحط البرنامج ده
على ال coordinator
Void setup()
{
Serial.begin(9600);
}
Void loop()
{
Serial.print(‘H’);
Delay(2000);
Serial.print(‘L’);
Delay(2000);
}
وده برنامج بيبعت
للسيريال H و يستنى ثانيتين و يبعت L
ثانيا نختار من ال
examples اللى فى arduino IDE برنامج اسمه Physical
pixel من communication
و ده برنامج بيقول انه لو جاله من السيريال حرف H بينور ليد متصله ب pin رقم 13 و لو جاله L بيطفى الليد المتصله ب pin رقم 13
و نحرق الكود ده على بورده اردوينوا اللى متركب عليها ال END POINT
بعد كده نشغل
البوردتين و نستنى حوالى 30 ثانيه هتلاقى الليلد ابتدت تشتغل و تطفى
|
كل هذه الخطوات انا مجربها ب ايدى و خدت منى 4
ايام متواصلين علشان اوصل للنتيجه دى لو اى حد عنده اى استفسار يتفضل يسأل
نسألكم الدعاء و
شكرا
Xbee data sheet:
https://www.sparkfun.com/datasheets/Wireless/Zigbee/XBee-2.5-Manual.pdf
My xbee link:
https://www.sparkfun.com/products/10418
configuration from arduino.cc
http://arduino.cc/en/Guide/ArduinoWirelessShieldS2
شكرا جزيلا اذا امكن تفاصيل اكثر
ردحذفماهي إستخدامات الxbee ؟
ردحذفهل يمكن إستخدام الxbee لتحديد الموقع الجغرافي؟