Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

13 تغريدة 37 قراءة Jan 17, 2021
البلوتوث اصبحت تقنية مهمة في حياتنا و جزء اساسي في اغلب حلول الIoT و نحن محاطين بأجهزة كثيرة تعمل بتلك التقنية. في المنزل في السيارة في العمل. نعرف كيف نستخدمها لكن هل نعرف كيف تعمل و كيف يمكن برمجتها ؟ هذه سلسلة عن البلوتوث.
اولاً هناك نوعين من البلوتوث: الكلاسيك و الBLE. الكلاسيك هو ما نستخدمه في السماعات مثلاً او في نقل الملفات من جهاز هاتف لجهاز او للماوس و الكيبورد. اما الBLE فيستخدم في الساعات الرياضية و اجهزة قياس دقات القلب او الضغط و الحساسات الآخرى الصغيرة أي لبيانات بسيطة خلال فترات متقطعة.
ظهر الBLE او الSmart Bluetooth مع المعيار 4.0 لذا تأكد عندما تشتري قطعة بلوتوث انها 4 او 5. استهلاك الBLE للكهرباء ضئيل جداً لأن اغلب وقته نائم فيما عدا وقت الاتصال بعكس الكلاسيك الصاحي. الاثنان غير متوافقين مع بعضهم.
( تنبيه: الجزء القادم ثقيل قليلاً )
يعمل البلوتوث على موجات الراديو بنطاق 2.4 GHz و بمدى من 2402 الى 2480 MHz في هذ المدى يمكن ان يفتح 79 قناة للكلاسيك و 40 للBLE. والسرعة في الكلاسيك من ميجا الى 3 و في الBLE من 125kb/s إلى 2 ميجا. اذا خطر في بالك كم مداه ؟ فممكن ان يصل مدى الBLE في ظروف معينة الى كيلومتر واحد.
في الكلاسيك يكون الاتصال Master/Slave بطريقة Point to Point و جهاز الماستر يمكنه الاتصال ب7 اجهزة slave لكن في الBLE فتسمى Central-peripherals و العدد غير محدود و فوق الP2P كما في الكلاسيك ممكن يكون Mesh و ممكن BroadCast وهذي ميزة للBLE و هو الذي سنركز عليه.
انتهى الجزء الثقيل
كما نبحث عن تردد قناة راديو معينة بالSeeking و نتنقل بالمؤشر يمنه ويسره كما في الراديو القديم نفس الشيء يحصل هنا و تسمى العملية frequency hopping تتم في الحساس peripherals و ال central حتى يلتقيا على قناة معينه ويتبادلان المعلومات و هذا ما يسبب البطء في العثور على الجهاز.
ممكن ننظر الى الCentral-peripherals ايضاً كـ client-server لكن هنا الجهاز الخارجي كحساس نبضات القلب هو الserver هنا و يكون جهاز الجوال هو الclient. غريب قليلاً لكن لو فكرنا نجد ان الحساس هو من يقدم الservices لذا فهو server.
بداخل هذا الخادم مجموعة خدمات Services و لكل خدمة مجموعة مزايا Characteristics و للميزة قيمة Value .هذي القيّم ممكن نقرأها R او نكتبها W او تنبهنا N. القيم عبارة عن بيانات على شكل bytes لا توجد أنواع كint او string. فقط bytes.
هذي التقسيمة السابقة من Service و Characteristics هي تقسميات بروتوكول الGATT. ممكن نتخيل غرفة هي الGATT و فيها خزائن هي الServices و كل خزانة فيها درج اللي هو الcharacteristics.
كل خدمة Service لها رقم معرّف خاص اختصاره UUID يبثها الحساس في وضع يسمى الAdvertising أي انه يخبر الأجهزة الCentrals مثل الجوال انه موجود و ان لديه كل هذه الخدمات له. ايضا يبث معلومات عن نفسه و هل هو قابل للاتصال او الاقتران Pairing.
فيه نوعين من الUUID هناك معرفات عامة و معرفة مسبقاً تخبر عن نوع الجهاز مثل انها تقول هذا جهاز ميزان او هذا جهاز قياس نبضات قلب و تكون 16 بت و هناك قائمة بها. و هناك نوع اخر من الUUID خاصة بالشركة المصنعة عبارة عن 128 بت يطلبها المصنع من جهة اسمها SIG مثل لما نطلب الPublic IP.
يمكنك الربط مباشرة برمجياً بهذا الUUID الخاص وقراءة او كتابة البيانات اليها لكن لتعرف اسم كل خدمة و شكل البيانات قد تحتاج لمراجعة الشركة المصنعة او استخدام مهاراتك في الHacking.
يكفي هذا لليوم و يمكن تحميل تطبيق هاتفي اسمه BLE Scanner لرؤية ما ذكرته في الأعلى بنفسك.
ستجد Generic Access و Generic Attribute فيها معرف ال16 الذي ذكرته و ستجد مجموعة Custom service و هي المهمة لقراءة او كتابة البيانات و بجانبها نوع الوصول هل هو قراءة ام كتابة او تنبيه. في السلسلة القادمة ساشرح كيف يمكن برمجته و التعامل معه.

جاري تحميل الاقتراحات...