Articles

راه اندازی ماژول بلوتوث HM-10 , HM-11

تو این مقاله قصد دارم درباره راه اندازی ماژول بلوتوث نسل 4 یا همون BLE که بلوتوث های کم مصرف هستن صحبت کنم

شرکت ها مختلفی این ماژول ها رو تولید میکنن که هر کدوم هم با آی سی تولید شده توسط یک کمپانی مثل Nordic یا Texas Instrument  کار میکنه ، مثلا شرکت نوردیک تراشه های سری NRF51x رو تولید میکنه که درواقع یک میکروکنترلر ARM Cortex M0 هستن که امکان ارتباط بلوتوث رو هم روی خودشون دارن ، انصافا منابع و قابلیت های نوردیک در این زمینه بسیار زیاده اما چون راه اندازیش پیچیده تره فعلا میریم سراغ گزینه های دم دست تری مثل HM11  که با چیپ های سری CC254x  شرکت Ti تولید میشه ، این چیپ ها پردازنده ساده تری داره ولی بازم قابل برنامه ریزی هست ، نکته ای که این وسط هست اینه که شرکت چینی “Jinan Huamao Technology” اومده و واسه این چیپ یه فریم ویر نوشته که بتونید با یه سری دستور ارتباط بلوتوث رو راحت داشته باشید و تا همین لحظه که دارم این مطالب رو مینویسم واسه ماژول های HM-11 , HM-10  تا نسخه 707 رو منتشر کرده. این فریم ویر روی ماژولی که خریداری میکنید آپلود شده و فقط اگر نسخه شما قدیمی بود میتونید ارتقا بدید.

ماژول های تولید این شرکت چینی رو میتونید تو سایتش بررسی کنید و فریم ویر و نرم افزارهای مورد نیاز رو هم از صفحه دانلودش راحت دانلود کنید ، هرچند من بعضی از مواردی که مهم تر هست رو همینجا انتهای مطلب براتون میزارم .

نکته ای که در مورد ماژول ها هست اینه که هر دو ماژول مشابه هم هستن و فقط HM-11 کوچک تر طراحی شده و یه سری پایه کمتر داره ولی پردازنده هر دو یکسان هست ، پس دستوراتی که خواهیم گفت برای هردو کاربرد داره.

نکته بعدی اینکه یه سری مدل های غیر اصلی هم تو بازار هست که شرکت های دیگه تولید کردن و شبیه نمونه اصلی هست ، اما یه تفاوت هایی مثل جای پین ها و کریستال داره

تفاوت ماژول های غیر اصلی HM-10

برای استفاده از این ماژول یا طراحی سخت افزار باید توجه کنید که این ماژول 3.3 ولت هست پس سعی نکنید که رابط سریال 5 ولت رو مستقیم بهش وصل کنید ، برای راه اندازی این ماژول فقط کافیه 2 پایه RX , TX رو به میکرو بدید و یه تغذیه 3.3 ولت هم بهش وصل کنید همین.

نام پایه ها در ماژول HM-11
نام پایه ها در ماژول HM-10

برای تست این ماژول شما میتونید با هر پلتفرمی که کار میکنید این کار رو انجام بدید

میتونید از یه رابط سریال به USB  که خروجی 3.3 ولت داره استفاده کنید یا این ماژول رو به آردوینو یا میکروهایی مثل AVR یا STM32  وصل کنید ، اما من توصیه میکنم برای شروع پایه های 1 و2 HM-11 رو به یه رابط سریال وصل کنید و مستقیما با کامپیوتر بهش فرمان بدید تا نتایج رو بهتر ببینید و تحلیل کنید.

راحت ترین مثال کاربردی که تو اینترنت میتویند واسه این ماژول پیدا کنید وصل کردن 2 تا ماژول به هم هست که میتونه برای ارسال و دریافت متن و رشته استفاده بشه ، شما میتونید این مثال رو تو گوگل پیدا کنید ، چیزی که میخوام بیشتر توضیح بدم ، اتصال تجهیزات جانبی بلوتوث به سیستم مرکزی هست ، یعنی شما بتونید مقادیر و اطلاعات رو از دستگاه هایی که ارتباط بلوتوث نسل 4 رو پشتیبانی میکنن بخونید ، مثلا به یه سنسور دما وصل بشید و دما رو مانیتور کنید . درواقع ماژول شما در نقش Master (Central) و تجهیزات در نقش Slave  در شبکه خواهند بود.

هر دستگاه در پروتکل BLE دارای یک شناسه سخت افزار MAC  و یک  یا چند شناسه یکتای سرویس UUID است که به طور مثال مشابه این رشته است. (Service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb) .

سرویس ها به صورت استاندارد برای دستگاه های مختلف از پیش تعریف شده هستن و شما میتونید تو سایت هایی مثل این سایت نمونه هایی رو ببینید ( البته اساتید ببخشن که دیگه خیلی خلاصه کردم و سعی کردم وارد جزئیات گت سرور نشم) ، هر سرویس یه سری مشخصه داره.

هر سرویس  رو میتونید با یک کد UUID  مختصر 16 بیتی مشخص کنید که مربوط به چه حوزه ای هست ، مثلا کد 0x180D  مربوط به سنسورهای سنجش ضربان قلب هست و هر دستگاهی که با این کد کار میکنه یه سری اطلاعاتی رو میفرسته که به صورت دسته بندی شده هست ، این زیر مجموعه ها هم با یه سری کد 16 بیتی دیگه قابل تفکیک هستن که از قضا اینا هم از پیش تعریف شده هستن که بهشون مشخصه میگن ،  این مشخصه ها عنوان اطلاعاتی هستن که هر سرویس ارائه میکنه ، مثلا تو یه دستگاه سنجش ضربان قلب مشخصه اطلاعات مربوط به ضربان 0x2A37 هست. اگه نرم افزار معروف NRFCONNECT  رو از گوگل پلی بگیرید رو نصب کنید تمامی این موارد رو بهتر درک میکنید. یه نمونه از تصویر این نرم افزار و این پارامترها رو براتون میزارم

در پروتکل بلوتوث ورژن 4 ، سه روش اصلی برای انتقال اطلاعات وجود دارد ، یا درخواست خواندن میفرستید ، یا درخواست نوشتن میفرستید ، یا دستگاه های جانبی به دستگاه مرکزی پیام های کوتاهی (Notification( میفرستند. که این مورد آخری برای دستگاه هایی که قرار است اطلاعات محدودی را برای مدت زیادی با انرژی کم ارسال کنند مفید است.

سعی کردم خیلی مطلب رو خلاصه کنم ، موارد زیادی هست که بهش اشاره ای نشد مثل Advertising چون میخوام سریعتر به تست برسیم و از حجم مطلب خسته نشید ، بعدا میتونید تو اینترنت چیزای بهتری پیدا کنید.

همونطور که گفتم HM-10 و HM-11 دارای یک فریم ویر هست که دستورات AT Command  رو پردازش میکنه و پاسخ میده ، پس نیازی نیس ماژول رو پروگرام کنیم ، فقط به یه پورت سریال وصلش کنید و توی یه نرم افزار ترمینال مثل این یکی که روی سایت واستون گذاشتم ، دستورات زیر رو بزنید فقط دقت کنید که تیک +CR رو حتما زده باشید این تیک برای همه دستورات الزامیه و فقط دستور “AT” که برای قطع ارتباط به کار میره باید بدون این تیک ارسال بشه (این تیک رو بزنید همون کد انتهای خط 10 و 13 به دستور اضافه میشه)،

توجه داشته باشید که این ماژول در ورژن های پایین تر از 700 با سرعت انتقال 9600 بیت بر ثانیه کار میکنه و در نسخه های جدید سرعتش به 115200 بیت بر ثانیه ارتقا پیدا کرده  ؛ ریز تغییرات رو میتونید در زیر ببینید:

HM-10/11 CC2540/1

V705
-Add AT+READOF command
AT+READOF?, used to read long char value
P1: 2 Bytes, Start Index.
P2: 4 Bytes, Char Handle.

V704
-Modify AT+CO command
AT+CO[P3][P4][P5], used to make connection.
P1: 1 Byte, Devie type.
P2: 12 Bytes, Device MAC
P3: 4 Bytes, Notify Handle
P4: 4 Bytes, Write Handle
P5: 2 Bytes, Write property.
P1 and P2 must be input;

V703
-Add AT+INDICA_ON command

V702
-Made wakeup function better
-Add AT+PACK command used to modify data in Advertisement package.
AT+PACK[P1][P2][P3][P4][P5][P6]
P1, P2, P3, P4, P5, P6 length all is 2.
P1, P2, P3, P4, P5, P6 value 00~FF

V701
-Add AT+SET_WAY command

V700
-Default baud rate change to 115200
-Removed AT+ANCS command
-Removed AT+COMP command
-Removed AT+128B command
-Added new function used to support different brand BLE device
-Added AT+FINDSERVICES? command
-Added AT+FINDALLCHARS? command
-Added AT+NOTIFY_ON command
-Added AT+NTOIFYOFF command
-Added AT+READCHAR command
-Added AT+CHAR command
-Added AT+READDATA command
-Added AT+READDESC command
-Added AT+SEND_DATA command

دستورات زیر رو میتونید از نرم افزار HMConfigAssistant هم بگیرید

AT+RENEW
AT+RESET
AT+IMME1
AT+ROLE1
AT+RESET
AT+COMP1
AT+NOTI1
AT+128B0
AT+RESET
AT+UUID0x180D
AT+CHAR0x2A37
AT+RESET

این دستورات تنظیم هستن که با هر بار ریست ذخیره و فعال میشن و فقط یک بار لازمه تا اجرا بشن

بعد از اون شما کافیه تا با دستور زیر دستگاه های فعال رو پیدا کنید.

AT+DISC?

که پاسخی مشابه زیر خواهید داشت:

OK+DISCS
OK+DIS1:CAFC456CA930OK+RSSI:-065
OK+NAME:HR35 0469070
OK+DISCE

حالا کافیه واسه اتصال به این سنسور نوع و MAC سنسور رو به این صورت وارد کنید

AT+CO1CAFC456CA930

اگر پیام OK+CONN رو دریافت کردید پس به درستی وصل شدید و شما یه سری بایت های منظمی رو دریافت میکنید ، این بایت ها همون اطلاعات ارسالی سنسور شما هستن ، که اگر نگاهی به توضیحات مشخصه سرویس سنسور بندازید ، خواهید دید که بایت دوم رو به عنوان داده ضربان قلب معرفی کرده که الان واسه من 70 هست یعنی خیلی ریلکس این مطالب رو براتون نوشتم 🙂 

موفق باشید

منابع:

http://blog.blecentral.com/2015/05/05/hm-10-peripheral/

https://www.tinyosshop.com/datasheet/Tinysine%20Serial%20Bluetooth4%20user%20manual.pdf

http://fab.cba.mit.edu/classes/863.15/doc/tutorials/programming/bluetooth/bluetooth40_en.pdf

http://esp32-server.de/wp-content/uploads/HM-10.pdf

HM-10 Bluetooth 4 BLE Modules

دیدگاهتان را بنویسید