تکنولوژی BLE مربوط به بلوتوث بوده و کاربردهای مختلفی دارد. این تکنولوژی علاوه بر مصرف انرژی بهینه، سرعت تبادل قابل توجهی دارد. در این آموزش قصد داریم به بررسی تکنولوژی BLE در بردهای ESP32 بپردازیم همچنین دو پروژه با این محوریت انجام خواهیم داد. در ادامه مفاهیم مربوط به BLE و نحوه راه اندازی و استفاده از آن در بردهای ESP32 را شرح خواهم داد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
بلوتوث BLE کممصرف
تکنولوژی بلوتوث BLE با عنوان Bluetooth4.0 در سال ۲۰۰۱ برای اولین بر معرفی شد و از نظر کلی تفاوتی که با مفهوم پیشین بلوتوث دارد، مصرف توان کمتر می باشد. بلوتوث BLE بیشترین استفاده را در اینترنت اشیا دارد زیرا در دیوایس های اینترنت اشیا یکی از چالش های موجود مصرف توان دستگاه ها می باشد که می توان برای مدت طولانی در یک مکان ثابت با یک باتری از آن ها استفاده کرد؟! خب BLE با این نظر که اگر تبادل اطلاعاتی صورت نگیرد در واقع غیر فعال یا خاموش می شود توان بسیار کمتری مصرف می کند و با یک باتری تا چندین ماه قابل استفاده خواهد بود.
معماری بلوتوث BLE کم مصرف
۱- لایه کاربرد یا APPS این لایه شامل منطق، رابط کاربری و مدیریت داده میشود.
۲- لایه HOST عبارتست از
- پروفایل دسترسی عمومی
- پروفایل مشخصات عمومی
- کنترل لینک منطقی و پروتکل سازگاری
- پروتکل مشخصه
- مدیر امنیت
- رابط کنترلکننده و هاست
۳- لایه کنترلکننده “Controller” عبارتست از
- رابط کنترلکننده هاست
- لایه ارتباط
- لایه فیزیکی
بلوتوث Bluetooth
بلوتوث (Bluetooth) نام یک استاندارد فناوری بیسیم با برد کم برای فرستادن پیام، عکس یا هر اطلاعات دیگر است که از لقب یک پادشاه منطقه اسکاندیناوی به نام هارالد بلاتند گرفته شده است. ارتباط ماژول های بلوتوث با فرکانسهای رادیویی صورت می پذیرد، هر ماژول بلوتوث دارای یک تراشه فرستنده یا گیرنده مربعیشکل است که در باند فرکانسی GHz ۲٫۴ تا GHz ۲٫۴۸ کار میکند. این فرکانس از این لحاظ انتخاب شده، که در سراسر جهان بهطور رایگان در دسترس است و محدودیتهای داشتن مجوز را ندارد.
برد ESP32 با بلوتوث BLE
بلوتوث در برد ESP32 یکی از قابلیتهای مهم این برد است که امکان ارتباط بیسیم با دستگاههای دیگر را فراهم میکند. ESP32 یک میکروکنترلر قدرتمند است که بهصورت پیشفرض دارای ماژول بلوتوث داخلی است.برای استفاده از بلوتوث در ESP32، شما باید از کتابخانههای مربوطه در زبان برنامهنویسی که استفاده میکنید، مانند Arduino یا MicroPython استفاده کنید. این کتابخانهها امکان کنترل بلوتوث را به شما میدهند. تراشه ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوتهای آن بلوتوث داخلیاش است. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC است. این ماژول دارای بهترین پرفورمنس در مصرف انرژی بوده و با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیقتر به این برد نگاه کنیم باید بگوییم، یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپها System on a chip microcontrollers هم گفته میشود. دارای چندین پایه GPIO برای ارتباط با سخت افزارهای مختلف است. در زیر نمایی از این برد خارق العاده را مشاهده میکنید.
به طور معمول، مراحل زیر برای استفاده از بلوتوث در ESP32 باید دنبال شوند:
- نصب کتابخانه: اگر از Arduino استفاده میکنید، باید کتابخانه ESP32 را نصب کنید. برای این کار، باید به برنامه Arduino IDE رفته و کتابخانه را از طریق منوی “کتابخانهها” نصب کنید. اگر از MicroPython استفاده میکنید، کتابخانه بلوتوث بهصورت پیشفرض در دسترس است.
- تعریف بلوتوث: بعد از نصب کتابخانه، باید بلوتوث را در برنامهی خود تعریف کنید. برای مثال، با استفاده از کد Arduino، میتوانید از تابع BLEDevice::init() برای شروع بلوتوث استفاده کنید. در MicroPython، میتوانید از ماژول bluetooth استفاده کنید.
- ساخت و مدیریت سرویسها و ویژگیها: برای ارتباط با دستگاههای دیگر، شما باید سرویسها و ویژگیهای بلوتوث را تعریف کنید. برای این کار، باید با مستندات کتابخانه مربوطه آشنا شوید و از توابع و کلاسهای مربوطه استفاده کنید.
- برقراری ارتباط: بعد از تعریف سرویسها و ویژگیها، میتوانید ارتباط بلوتوث را برقرار کنید. بستگی به نوع ارتباطی که میخواهید برقرار کنید (مثلاً ارسال و دریافت داده، کنترل دستگاه و غیره)، باید از توابع و متدهای مناسب استفاده کنید.
- اسکن دستگاهها: با استفاده از بلوتوث در ESP32، میتوانید دستگاههای بلوتوث در دسترس را اسکن کنید و آنها را شناسایی کنید. برای این کار، باید از توابع و رویدادهای مربوطه در کتابخانه استفاده کنید. مثلاً در Arduino، میتوانید از تابع BLEScan::start() برای شروع اسکن دستگاهها استفاده کنید.
- برنامهریزی برای عملکرد دستگاه: شما میتوانید ESP32 را برنامهریزی کنید تا با دستگاههای دیگر ارتباط برقرار کند و دستورات مشخصی را ارسال کند. مثلاً میتوانید دستورات روشن و خاموش کردن یک دستگاه را از طریق بلوتوث ارسال کنید. برای این کار، باید از توابع و متدهای مربوطه برای ارسال و دریافت دادهها استفاده کنید.
- کنترل از راه دور: با استفاده از بلوتوث در ESP32، میتوانید دستگاه را از راه دور کنترل کنید. برای مثال، میتوانید یک دستگاه را برنامهریزی کنید تا از طریق بلوتوث دستوراتی را دریافت کند و عملکردهای مختلفی را انجام دهد. این کار میتواند برای کنترل دستگاههای خانگی، روشنایی، کنترل از راه دور و غیره مفید باشد.
شرح پروژه بلوتوث BLE
در این آموزش دو نمونه پروژه را تست خواهیم کرد، در یکی از پروژه ها با استفاده از برد ESP32 یک دستگاه BLE می سازیم که توسط دیگر دستگاه ها از جمله موبایل هوشمند قابل شناسایی است و در دومین پروژه، قادر خواهیم بود دستگاه های اطراف که از BLE استفاده می کنند را تشخیص داد و همچنین مک آدرس های آن ها را به نمایش درآورد.
نصب افزونه ESP32 در Arduino IDE
در این آموزش از برد ESP32 استفاده می کنیم، در ادامه مراحل را برای نصب این برد در نرم افزار آردوینو دنبال کنید:
- ابتدا در نرم افزار Arduino IDE به مسیر File> Preferences بروید.
- لینک زیر را در بخش مشخص شده قرار دهید.
https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- سپس به مسیر Tools > Board > Boards Manager بروید.
- در بخش board manager کلمه ESP32 را سرچ کنید و بر روی install کلیک کنید.
مثال ۱ : دیوایس BLE
با آپلود این کد در برد ESP32، در واقع یک دیوایس BLE قابل شناسایی توسط سایر دستگاه ها ساخته ایم که اولین گام برای کار با BLE می باشد.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
- در نهایت ESP32 شما در جستجوی دستگاه های دیگر به شکل زیر به نمایش در خواهد آمد.
مثال ۲ : اسکن دیوایس های BLE اطراف
در این مثال پس از آپلود کد و باز کردن سریال مانیتور در Arduino IDE، مک آدرس دستگاه های BLE اطراف برای شما به نمایش در خواهند آمد همچنین اطلاعی مانند نام دستگاه و قدرت ارسال سیگنال نیز در دسترس خواهد بود.
- در این قسمت کتابخانه های مورد نیاز را به کد اضافه کرده ایم.
#include <BLEDevice.h> #include <BLEUtils.h> #include <BLEScan.h> #include <BLEAdvertisedDevice.h>
- در این قسمت متغیر های مورد نیاز را تعریف می کینم.
String knownBLEAddresses[] = {"aa:bc:cc:dd:ee:ee", "54:2c:7b:87:71:a2"}; int RSSI_THRESHOLD = -55; bool device_found; int scanTime = 5; //In seconds BLEScan* pBLEScan;
- کد کامل پروژه
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
- پس از آپلود کد و باز کردن سریال مانیتور در نرم افزار Arduino IDE، نتیجه به شکل زیر خواهد بود.
وسایل مورد نیاز
جمع بندی
بی شک تکنولوژی BLE یکی از تاثیر گذاترین راه های ارتباطی در اینترنت اشیا می باشد که بدلیل مصرف توان بسیار محدود می تواند بسیار کاربردی و مفید برای پروژه های iot ما باشد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
یکی از عامل هایی که هیچوقت به فارسی سرچ نمیکنم امثال شما هستید.
۱.کمی توی مطالبی که میزارید حرفه ای تر باشید و جزئیات بیشتری رو بیان کنید
۲. حداقل اگه حرفه ای نیستید دسترسی رو آزاد تر بزارید که آدم خودش بفهمه تو کدتون چکار کردید نه که برا هر بخشش لازم باشه عضو سایت بشی و پول بدی.
به شخصه لینک وبسایتتون رو هرجا ببینم باز نمیکنم.
با سلام
به نظر شما کاربری هستید که با این فضا تازه آشنا شدهاید. دیجی اسپارک بیش از ۳ هزار آموزش تخصصی منتشر کرده است و در حدود ۵۰ هزار کاربر در آن به تبادل و رفع عیب پرداختهاند. در صورتی که تمایل به یادگیری دارید، روال کاری ما مشخص است و میتوانید اقدام کنید.
با تقدیم احترام
با سلام و وقت بخیر بعداز اجاری کد دوم ماژول در حال اسکنینگ میماند و وصل نمیشود .
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13924
ho 0 tail 12 room 4
load:0x40080400,len:3600
entry 0x400805f0
Scanning…
با سلام
برای رفع این مورد چند نکته را اعلام میکنم لطفا بررسی کنید.
۱- مطمئن شوید که برد به درستی تغذیه میشود و ولتاژ مناسبی دریافت میکند.
۲- مطمئن شوید که تمام اتصالات بین برد ESP32 و سایر قطعات درست است. بررسی کنید که هیچ اتصالی قطع نشده باشد.
۳- ممکن است فلش برد دچار مشکل شده باشد. در این صورت، میتوانید برنامه را مجددا فلش کنید. از طریق رابط USB و یا رابط پروگرمری مانند JTAG، برنامه را به برد ارسال کنید.
۴- اگر مشکل شما پس از بررسیهای بالا همچنان باقی مانده، ممکن است نیاز به بهروزرسانی firmware باشد.