مقدمه
استاندارد زیگبی (ZigBee) یا همان IEEE 802.15.4 یک استاندارد ارتباط بیسیم است که هدف آن ایجاد شبکههای ارتباطی مبتنی بر حسگر، با نرخ ارسال پایین، توان مصرفی پایین، امنیت و اطمینان بالا و هزینهی پایین است. چندین ماژول ارتباط بیسیم بر اساس این استاندارد ساخته شدهاند که در ادامه به معرفی یکی از آنها خواهیم پرداخت.
با ZE10 آشنا شوید!
ماژول ProBee ZE10 یکی از همین ماژولهای ارتباط بیسیم است که از تکنولوژی زیگبی (ZigBee) بهره میبرد و میتواند به شما این امکان را بدهد که یک شبکهی ارتباطی گسترده و امن ایجاد کنید.
بدیهی است که برای برقراری یک ارتباط بیسیم حداقل به دو ماژول نیاز خواهید داشت. برای راهاندازی ماژول ZE10 شما باید از قبل با مفاهیم ارتباط سریال و UART آشنایی داشته باشید پس اگر نخستین بار است که با این واژهها مواجه میشوید باید در اولین دوربرگردان بپیچید و در مسیر بازگشت به دنبال تابلوی UART بگردید!

ماژول زیگبی ProBee ZE10C ساخت شرکت SENA
حالا فرض میکنیم که شما با مفاهیم فوق آشنا هستید و از طرفی چون آه نداشتهاید که با ناله سودا کنید یا اینکه صرفاً قصد بررسی اولیّهی این ماژول را داشتهاید، تنها یک عدد ماژول ZE10 تهیه کردهاید؛ آن هم مدل ZE10C که آنتن آن به صورت یک چیپ [قطعهی سیاهرنگ] بر روی آن تعبیه شده است و برای مصارف با برد کوتاه مناسب است و نیازی به صرف هزینهی اضافی برای خرید آنتن ندارد. البته مدلهای مختلف این ماژول تفاوتی از لحاظ نحوهی راهاندازی ندارند.
دست به کار شوید!
خوب، حالا وقت آن است که آستینهای خود را بالا بزنید و تکانی به خودتان بدهید.
قبل از این که به ماژول دست (یا حتی پا) بزنید باید الکتریسیتهی ساکن نهفته در وجود مبارک خویش را از طریق برقراری تماس با یک جسم فلزی نسبتا بزرگ (مثل یک میز یا صندلی فلزی) تخلیه کنید تا بتوانید با خلوص نیت با این ماژول دوست داشتنی و نسبتاً معصوم کار کنید. همچنین بد نیست بدانید که تمام پایههای این ماژول با سطح ولتاژ 3.3 ولت کار میکند پس حواستان را خوب جمع کنید که با وارد کردن ولتاژهای بالاتر موجب سوختن و از بین رفتن این موجود باارزش نشوید.
بهتر است قبل از هر اقدام عجولانه نگاهی به آرایش پایههای ZE10 بیندازیم:

آرایش پایههای ماژول ZE10
برخلاف آن چیزی که در نگاه اول به نظر میرسد، اکثر پایههای این ماژول در کارهای مورد نظر ما به هیچ دردی نمیخورند و تنها پایههای مورد علاقهی ما همان پایههای تغذیه یعنی +3v3
و GND
و پایههای مربوط به ارتباط سریال غیرهمزمان یا همان UART یعنی پایههای UART_RXD
و UART_TXD
است. لازم به ذکر است که تمام پایههایی که نامشان GND
است به هم متصل هستند و فرقی نمیکند که از کدامشان استفاده میکنید.
از آنجا که تشریح عملکرد سایر پایهها از حوصلهی این مقاله خارج است، به شما اکیداً توصیه میکنم که به دیتاشیت (Datasheet) و دفترچهی راهنمای (User Manual) این ماژول که در سایت شرکت سازندهی آن به صورت PDF برای دانلود قرار داده شده است مراجعه کنید. (البته خودتان به زودی متوجه خواهید شد که مجبورید این کار را بکنید!)
http://www.senanetworks.com/ze10c-00.html?sc=14&category=3978
شما برای کار با این ماژول علاوه بر خلوص نیت به یک پورت سریال نیاز دارید. اگر کامپیوتر (یا همان رایانهی) شما ذاتاً مجهز به پورت سریال است باید خروجی RX و TX آن را به تراشهی SP3232 یا MAX3232 تحویل بدهید تا خروجی 3.3 ولت به شما تحویل دهد همچنین میتوانید از آیسی MAX232 با سطح ولتاژ 5 ولت استفاده کنید.
حواستان باشد که هرگز پورتهای سریال روی خود کامپیوتر یا لپتاپ را مستقیماً به میکروکنترلرها و ماژولها وصل نکنید چون سطح ولتاژ پورت سریال کامپیوتر که دارای سوکت DB9 است کاملاً با سطح ولتاژ میکروکنترلرها و ماژولها متفاوت است.
در مورد لپتاپها و کامپیوترهایی که فاقد پورت سریال هستند راه حل آسانتری وجود دارد و آن مبدلهای USB به سریال است که معمولاً سطح ولتاژ آنها 5 ولت یا 3.3 ولت است که به کمک ولتمتر قابل تشخیص است؛ کافی است سیم سیاه ولتمتر را به GND و سیم قرمز را به یکی از پایههای RX یا TX متصل کنید.

تشخیص سطح ولتاژ پورت سریال به کمک ولتمتر
مبدل USB به سریال ما (همان بورد کوچک نارنجیرنگ!) که فقط با یک آیسی CP2102 ساخته شده است، اساساً با 3.3 ولت کار میکند اما میتواند بدون هیچ مشکلی با پورتهای سریال 5 ولتی هم کار کند.
همچنین میکروکنترلرهایی که دارای قابلیت UART یا USART هستند نیز میتوانند با رعایت نکات مربوط به سطوح ولتاژ با این ماژول ارتباط برقرار کنند.
اگر مبدل USB به سریال ما تنها از 5 ولت پشتیبانی کند یا بخواهیم یک میکروکنترلر 5 ولتی یا بورد آردوینو را به ماژول ZE10 متصل کنیم طبق شکل زیر عمل میکنیم:

مدار تقسیم ولتاژ برای تبدیل خروجی 5 ولت به 3.3 ولت
مشکل بعدی که با آن مواجه میشویم این است که فاصلهی پایههای ZE10 برابر با 2 میلیمتر است در حالی که فاصلهی سوراخهای بردبورد 2.54 میلیمتر است و نمیتوان ماژول را روی بردبورد جا زد پس سعی میکنیم راهحل دیگری برای اتصال آن به بردبورد پیدا کنیم و آن هم ساخت کانکتور به وسیلهی سیم و وارنیش است!
در صورت استفاده از وارنیش مواظب باشید که حرارت مستقیم به پایههای ZE10 منتقل نشود چون ممکن است باعث ذوب شدن قسمت پلاستیکی آنها شود.
پس از اینکه به تعداد کافی کانکتور ساختید میتوانید ZE10 را از طریق بردبورد به پورت سریال وصل کنید.

اتصال کانکتور به یکی از پایههای ZE10
البته چون من مجبور بودم تا به طور مداوم با این ماژول کار کنم تصمیم گرفتم تا ضمن خرید پین هدر 2 میلیمتری با فیبر مسی و اسید، یک بُرد تبدیل کوچک برای ZE10 بسازم.

بورد تبدیل برای راهاندازی ماژول ZE10

اتصال ZE10 به کامپیوتر از طریق ماژول USB به سریال
توجه داشته باشید که RXها و TXها به صورت ضربدری به هم وصل میشوند یعنی UART_TXD
مربوط به ZE10 به RX
مربوط به مبدل USB به سریال و UART_RXD
مربوط به ZE10 به TX
مربوط به مبدل USB به سریال وصل میشود. همچنین باید GND
مربوط به ماژول به GND
مربوط به پورت سریال وصل باشد.
مبدل USB به سریال ما دارای خروجی تغذیهی 3.3 ولت است پس نیازی به تغذیهی خارجی نداریم ولی اگر مبدل USB به سریال شما فاقد خروجی تغذیهی 3.3 ولتی بود میتوانید از قطعهی LF33CV که یک رگولاتور ولتاژ 3.3 ولتی است استفاده کنید.

پایههای ماژول USB به سریال
شما برای راهاندازی ZE10 باید ابتدا آن را پیکربندی کنید مثلاً یک ID برای آن تعریف کنید تا توسط سایر اعضای شبکه شناسایی شود. میتوانید اطلاعات تکمیلی در مورد پیکربندی ZE10 را در دفترچهی راهنمای ماژول (User Manual) که در سایت شرکت سازندهی این ماژول یعنی www.senaindustrial.com قابل دریافت است پیدا کنید. راهاندازی ZE10 از طریق ارتباط سریال و با ارسال دستورات AT Commands است که چون در قسمت اوّل این مقاله قصد تشریح چگونگی پیکربندی ZE10 برای ایجاد شبکه را نداریم شما را به قسمت بعدی این مقاله ارجاع میدهم.
آشنایی با نرمافزار ProBee Manager
حالا به معرفی برنامهی ProBee Manager میپردازیم که به منظور پیکربندی، برقراری ارتباط و ارتقای سفتافزار (firmware) این ماژولها طراحی شده است و در سایت شرکت سازندهی ماژول قابل دریافت است:
http://www.senanetworks.com/ze10c-00.html?sc=14&category=3978
فرض میکنیم که شما این نرم افزار را دانلود و نصب کردهاید. حالا اگر از مبدل USB به سریال استفاده میکنید باید ابتدا درایور آن را نصب کنید. برای این کار از طریق Device Manager اقدام کنید:

پنجرهی System Properties در ویندوز 8

پنجرهی Device Manager
اگر درایور مبدل USB به سریال را درست نصب کرده باشید، در Device Manager و در زیرشاخهی Ports میتوانید نام مبدل و در مقابل آن و در داخل پرانتر، نام پورت سریال (در اینجا COM10) را مشاهده کنید.
وقت آن است که وارد نرمافزار ProBee Manager شوید و با امکانات مختلف آن آشنا شوید.

نرمافزار ProBee Manager
پس از ورود به نرم افزار در قسمت Serial Port در بخش Serial line نام پورت سریال را انتخاب کنید و در بخش Flow Control گزینهی None را انتخاب کنید. (بدیهی است قبل از انجام این کارها باید مبدل USB به سریال به کامپیوتر وصل باشد و ماژول ZE10 هم باید به تغذیهی 3.3 ولت و پایههای UART_RXD
و UART_TXD
به ترتیب به TX
و RX
پورت سریال وصل باشند.)
پس از اطمینان از صحّت اتصالات، در برنامهی ProBee Manager روی Open کلیک کنید. در صورت برقراری ارتباط موفقیتآمیز با ZE10 پیغام زیر ظاهر خواهد شد. (البته محتوای این پیغام چیز دیگری است که درک آن نیاز به این دارد که شما اطلاعات دقیقی در مورد UART داشته باشید ولی به طور کلّی مشاهدهی این پیغام با اینکه یک پیغام اخطار است، اتفاق خوبی است!)

پیغام اخطاری که به دلیل تنظیمات پیشفرض ZE10 نمایش داده میشود.
پس از برقراری ارتباط، اطلاعات ماژول شما در پنجرهی ProBee Manager به شکل زیر ظاهر خواهد شد:

تنظیمات مختلف ماژول ZE10
پس از تغییر هر یک از مشخصات ماژول باید روی گزینهی Save کلیک کنید و در نهایت گزینهی Reboot را بزنید تا ماژول پیکربندی شود؛ در غیر این صورت تنظیمات شما در ماژول اعمال نخواهد شد.
نرم افزار ProBee Manager بخش دیگری با عنوان Terminal دارد که میتوانید دستورات AT Commands را در آن وارد کنید و پاسخ ماژول را مشاهده نمایید. سادهترین دستور همان AT
است که در صورت تایپ کردن آن و زدن کلید Enter باید پاسخ OK
را از طرف ماژول دریافت کنید.

ارسال دستور AT و دریافت پاسخ OK
در صورتی که از میکروکنترلر برای برقراری ارتباط و پیکربندی ماژول استفاده میکنید میتوانید یک رشته شامل دستورات AT Commands را به ماژول ارسال کنید.
مثلاً در برنامهنویسی بوردهای آردوینو (Arduino) به کمک کلاس Serial
میتوانید با نوشتن خط زیر دستور AT
را به ماژول ارسال کنید:
Serial.print("AT\r\n");
تابع زیر نیز دقیقا همین کار را انجام میدهد با این تفاوت که نیازی نیست شما عبارت \r\n
را بنویسید بلکه خود تابع این کار را انجام میدهد:
Serial.println("AT");
برای تهیهی این مقاله زمان، انرژی و هزینهی قابل توجهی صرف شده است؛ لطفاً در صورت استفاده از این مقاله، برای حمایت از نویسنده و جهت فراهم آوردن امکان ادامه فعالیت پایگاه فناوری تابین، لینک زیر را در رسانه یا مقالهی خود قرار دهید:
حسام
سلام
فرق زیگبی سری Z با سری های DRF چیست؟
با کدام راحتر می توان کار کرد؟
میثم پرویزی
سلام، هر کدوم ساخت شرکت های متفاوتی هستند و هر کدوم از تراشه مرکزی متفاوتی استفاده میکنن. ولی سری DRF ارزون تر هستن و کار کردن باهاشون آسونتره.
احسان
سلام
بر چ اساسی میگین DRF ها راحت تر هستن ، من ک هیچی نمیتونم روی پورت سریال دریافت کنم
میثم پرویزی
با سلام،
علت اینکه کار کردن با ماژول های DRF ساده تر هست اینه که برای راه اندازی این ماژول ها چندین نرم افزار و سند آموزشی توسط شرکت سازنده تهیه شده که شما میتونید با استفاده از اون ها به سرعت ماژول رو راه اندازی کنید. همچنین دستورات این ماژول خیلی سرراست و قابل فهم هستند. خوشبختانه برخلاف سایر ماژولهای چینی که اسناد و نرم افزارهای مربوط به اونها به زبان چینی هستن، نرم افزارها و اسناد مربطوط به ماژول های DRF به زبان انگلیسی موجود هستند.
تمام نرم افزارها و فایل هایی که برای راه اندازی ماژولهای DRF مورد نیاز است در این آدرس موجود است:
http://www.lillyelectronics.com/download/DTK%20Zigbee%20Module%20V57%20English
اگر طبق مطالب موجود در فایل های راهنما عمل می کنید و همچنان از ماژول هیچ پاسخی دریافت نمی کنید حتما ولتاژ تغذیه ماژول، اتصال گراند، و اتصال پورت سریال را چک کنید. همچنین از یک ماژول USB به سریال قابل اطمینان استفاده کنید و حتما از نصب بودن درایور اون مطمئن بشید.
ماهان
سلام . ایا در برنامه امکان تغییر دستورات امنیت زیگبی وجود دارد ؟
لطفاً راهنمایی بفرمایید .
میثم پرویزی
سلام،
بله امکانش وجود داره. در ماژول ZE10 به کمک دستور AT+SECURITY=0 میتونید عناصر امنیتی زیگبی از جمله رمزگذاری AES و اعتبارسنجی رو غیر فعال کنید و با دستور AT+SECURITY=1 میتونید فعالش کنید. تا جایی که میدونم عناصر امنیتی به طور پیش فرض فعال هستند. برای مطالعه بیشتر میتونید به صفحه 30 در ProBee-ZE10 User Guide با عنوان ZigBee Security مراجعه کنید
ماهان
سلام .
ایا در برنامه امکان تغیر رمزگزاری وجود دارد ، مثلاً به جایی استفاده از رمزگزاری AES می توان رمز گزاری دیگری را در آن تعریف نمود . با تشکر
میثم پرویزی
خیر. امکان تغییر نوع رمزگذاری وجود نداره و فقط میشه اون رو فعال یا غیرفعال کرد.
zahra
سلام،من میخام ماژول زیگبی cc2530 رو راه اندازی کنم، ممنون میشم اگه میتنونید کمکم کنید
میثم پرویزی
سلام،
در مورد ماژول های CC2530 باید عرض کنم که برای راه اندازی همه اونها شما نیاز به پروگرمر CC-Debugger دارید. البته ماژول DRF1605H از این موضوع مستثنی است و راه اندازی اون نیاز به پروگرمر نداره و شما میتونید از طریق پورت سریال اون رو راه اندازی کنید که در کامنت های قبلی به طور مفصل در این مورد بحث شده.
اما در مورد ماژول هایی که نیاز به پروگرامر دارند شما باید برای تراشه CC2530 که در واقع خودش یک میکروکنترلر است برنامه نویسی کنید که کار پیچیده و زمانبر هست. برای این کار برای باید از Z-Stack استفاده کنید که توسط کمپانی TI که تولید کننده همین تراشه CC2530 هست منتشر شده و به طور رایگان در اختیار همه هست. همچنین تمام فایل های آموزشی هم همراه اون موجود هست اما باز هم عرض می کنم که استفاده از اون خیلی سخته:
http://www.ti.com/tool/z-stack
ضمنا برای برنامه نویسی برای این تراشه باید از نرم افزار IAR Embedded Workbench for 8051 استفاده کنید.
توصیه میکنم اگر حرفه ای این کار نیستید از همون ماژول DRF1605H استفاده کنید.