- ضروری اجزاء
- ESP32 iBeon کے لئے nRF کنیکٹ اینڈروئیڈ ایپ کا استعمال
- پروگرامنگ ESP32 BLE iBeon کے طور پر کام کرنے کے لئے
ESP32 واقعتا ایک طاقتور IoT ڈیوائس ہے جس میں بلوٹوتھ اور وائی فائی کے لئے inbuilt حمایت حاصل ہے۔ ESP32 اپنے پیشرو ESP8266 کا جدید ورژن ہے جس میں اضافی خصوصیات جیسے رام ، ROM ، GPIO پن وغیرہ ہیں۔ ESP32 ماڈیول کلاسیکی بلوٹوتھ اور بلوٹوتھ لو انرجی (BLE) دونوں کی حمایت کرتا ہے ، کلاسیکی بلوٹوتھ کو گانے ، نغمے یا فائلیں منتقل کرنے کے لئے استعمال کیا جاسکتا ہے اور BLE اختیار کا استعمال بیٹری سے بہتر شدہ ایپلی کیشنز جیسے بلوٹوتھ بیکنز ، فٹنس بینڈ ، قربت وغیرہ کے لئے کیا جاسکتا ہے۔ ESP32 کو سیریل بلوٹوتھ جیسے HC-05 یا HC-06 ماڈیول جیسے سادہ مائکروکنٹرولر منصوبوں کے لئے استعمال کرنا بھی ممکن ہے۔
جیسا کہ ہم جانتے ہیں کہ BLE دو مختلف طریقوں سے چل سکتا ہے۔ سرور وضع اور موکل موڈ۔ دونوں طریقوں ہمارے گزشتہ میں بحث کی گئی ہے ESP32 اسباق:
- ESP32 BLE سرور - بیٹری لیول اشارے کیلئے GATT سروس
- ESP32 BLE کلائنٹ - فٹنس بینڈ سے ایک بلب کو ٹرگر کرنا
اس ٹیوٹوریل میں ہم ESP32 کا استعمال کرتے ہوئے ایک BLE iBeon تیار کریں گے جہاں ESP32 سرور کے طور پر کام کرے گا اور اسمارٹ فون کلائنٹ کے طور پر کام کرے گا۔ میں فرض کرتا ہوں کہ آپ ESP32 بورڈ Erd32 IDE کے ساتھ استعمال کرنے کے طریقے سے پہلے ہی واقف ہیں ، اگر ESP32 ٹیوٹوریل کے ساتھ شروع کرنے میں واپس نہیں آتے ہیں۔
آپ راسبیری پائی اور HM-10 BLE iBeon کا استعمال کرکے ہمارے پچھلے بلوٹوتھ iBeon پروجیکٹس کے ذریعے بیکن / iBeacon ٹکنالوجی کیا ہے اس کے بارے میں مزید معلومات حاصل کرسکتے ہیں۔
ضروری اجزاء
ہارڈ ویئر:
- ای ایس پی 32 ڈویلپمنٹ بورڈ
- مائیکرو USB کیبل
سافٹ ویئر:
- اردوینو IDE
- اینڈروئیڈ ایپ: این آر ایف کنیکٹ فار موبائل (نارڈک سیمیکمڈکٹر کے ذریعے)
بہت سارے BLE سکینر ایپس ہیں ، ان میں سے ایک ہم نے اپنے پچھلے پروجیکٹ میں Ardino کے ساتھ HM-10 BLE ماڈیول کا استعمال کس طرح استعمال کیا ہے۔ یہ BLE سکینر ایپ اچھا گرافیکل انٹرفیس (GUI) مہیا کرتی ہے لیکن اس کے علاوہ مزید معلومات کا فقدان ہے لہذا اس پروجیکٹ میں ہم موبائل اپلی کیشن کے لئے NRF کنیکٹ استعمال کررہے ہیں ۔
ESP32 iBeon کے لئے nRF کنیکٹ اینڈروئیڈ ایپ کا استعمال
1. گوگل پلے اسٹور سے این آر ایف کنیکٹ ایپ ڈاؤن لوڈ کریں اور اسے کھولیں۔
2. اسکرین نیچے کی طرح دکھائی دیتی ہے۔ اس پروجیکٹ کے مفید اختیارات 'اسکین' ، 'سکینر' اور 'معلومات' ہوں گے جب آلات مل جائیں گے۔
'سکین' آپشن تمام دستیاب iBeacons دیکھنے کے لئے استعمال کیا جائے گا. آئی بیکن کی تلاش شروع کرنے کے لئے یا تو اسکرین کو نیچے کھینچیں یا اسکرین کے اوپری دائیں کونے میں 'سکین' کے اختیار پر جائیں۔ اس سے دستیاب آئی بیکنز کی تلاش شروع ہوگی۔
3. آئی بیکن کو تلاش کرنے کے بعد ، آپ آئی ایس بیکن کے آر ایس ایس آئی ، یو یو ای ڈی ، میجر اور معمولی کو دیکھنے کے قابل ہوں گے۔ اگر آپ موبائل یا آئی بیکن کو ایک دوسرے سے دور رکھتے ہیں تو آر ایس ایس آئی تبدیل ہوجائے گا۔ یہاں اس اسکرین میں ، RSSI (-37) ہے۔ اس کے علاوہ کچھ تفصیلات ہیں جیسے ڈمی کمپنی کا نام ، ڈیوائس کی قسم ، بائٹس کی لمبائی ، ای ایس پی 32 کا مقامی نام۔ یہاں یہ " ESP32 بطور iBeacon " ہے۔ آپ خاکہ میں مقامی نام تبدیل کرسکتے ہیں۔
4. اسمارٹ فون کو آئی بیکن سے چھین لینے کے بعد ، RSSI کی قیمت -37 سے -58 میں تبدیل ہوجاتی ہے۔ اگر آپ کسی ایک ڈیوائس کو منتقل کرتے ہیں تو یہ قدریں تبدیل ہوتی رہیں گی۔
RSSI سگنل قابل قبول اقدار حسب ذیل ہیں:
سگنل کی قوت | TL DR DR | کے لئے چاہیے | |
---|---|---|---|
-30 ڈی بی ایم | حیرت انگیز | سگنل کی زیادہ سے زیادہ طاقت۔ موصولہ اس کو حاصل کرنے کے لئے اے پی سے صرف چند فٹ کی دوری پر جاسکتا ہے۔ حقیقی دنیا میں عام یا مطلوبہ نہیں۔ | N / A |
-67 ڈی بی ایم | بہت اچھا | ایپلی کیشنز کے لئے سگنل کی کم از کم طاقت | VoIP / VoWiFi ، محرومی ویڈیو |
-70 ڈی بی ایم | ٹھیک ہے | قابل اعتماد پیکٹ کی فراہمی کے لئے کم از کم سگنل کی طاقت. | ای میل ، ویب |
-80 ڈی بی ایم | اچھا نہیں | بنیادی رابطے کیلئے کم از کم سگنل کی طاقت۔ پیکٹ کی فراہمی ناقابل اعتبار ہوسکتی ہے۔ | N / A |
-90 ڈی بی ایم | ناقابل استعمال | شور فرش میں پہنچنا یا ڈوبنا۔ کسی بھی فعالیت کا انتہائی امکان نہیں ہے۔ | N / A |
پروگرامنگ ESP32 BLE iBeon کے طور پر کام کرنے کے لئے
جب آپ اردوینو IDE میں ESP32 بورڈ انسٹال کرتے ہیں تو ESP32 BLE iBeon کا نمونہ پروگرام دستیاب ہے۔ لیکن ہم نے اس خاکہ کو اس ٹیوٹوریل میں قدرے ترمیم کیا ہے ، نمونے کے پروگرام کا مکمل ترمیم شدہ ورژن اس سبق کے آخر میں دیا گیا ہے۔
ESP32 BLE_iBeacon کا نمونہ پروگرام کھولنے کے لئے ذیل میں درج ذیل اقدامات پر عمل کریں۔
- آرڈینوو IDE کھولیں اور "ESP32 دیو ماڈیول" منتخب کریں۔ (اگر آپ کو یہ بورڈ نہیں ملتا ہے تو براہ کرم چیک کریں کہ کیا آپ نے ESP32 بورڈ پیکیج انسٹال کیا ہے)
- پر جائیں فائل > مثالوں میں > ESP32 BLE Arduino کے > BLE_iBeacon
- "BLE_iBeacon" خاکہ کھولیں۔
اب اس کوڈ میں تھوڑی سی ترمیم کی جارہی ہے جو اس سبق میں کی گئی ہے ۔ اس خاکہ میں ESP32 نام بھی اپ ڈیٹ ہوگا۔ لہذا ضروری لائبریریوں کو شامل کرنے کے ساتھ شروع کریں جو BLE سرور اور iBeacon بنانے میں استعمال ہوں گے۔
# شامل کریں "sys / time.h"
موجودہ نظام کا وقت حاصل کرنے کے لئے یہ ایک ٹائم لائبریری ہے۔ اس میں ٹی وی_سیکس ، گیٹ ٹائم ڈے () وغیرہ جیسے فنکشنز شامل ہیں۔ مزید معلومات کے ل you ، آپ 'سیس / ٹائم ڈاٹ ایچ ' کی سرکاری سطح پر یونیکس ریلیز کرسکتے ہیں ۔
پھر ESP32 BLE لائبریریوں کو شامل کیا جاتا ہے جس میں ESP32 بنانے کے لئے استعمال ہونے والے بہت سے فنکشن ہوتے ہیں جیسے BLE کلائنٹ یا BLE سرور۔
# BLEDevice.h " # شامل کریں" BLEUtils.h " # شامل کریں" BLEServer.h "
iBeacon لائبریری شامل ہے iBeacon طور ESP32 تعین کرتا ہے جو. اس کے ساتھ ، گہری نیند کی لائبریری ESP32 کے لئے شامل ہے ۔ لائبریری ESP32 کو گہری نیند موڈ میں بھیجنے کے لئے استعمال کی جائے گی۔
# شامل کریں "BLEBeacon.h" # شامل کریں "esp_sleep.h"
ESP32 کے لئے نیند کی مدت کی وضاحت کریں ۔ یہاں ESP32 10 سیکنڈ کی مدت کے لئے گہری نیند میں ہوگا اور یہ اشتہار دے گا اور پھر 10 سیکنڈ تک گہری نیند میں چلا جائے گا۔
# GPIO_DEEP_SLEEP_DURATION 10 کی وضاحت کریں
یہاں آر ٹی سی_ڈیٹا_ اے ٹی ٹی آر کی تعریف کی گئی ہے۔ نوٹ کریں کہ اگر آپ RTC_DATA_ATTR انتساب کے ساتھ عالمی متغیر کی وضاحت کرتے ہیں تو متغیر کو RTC_SLOW_MEM میموری میں رکھا جائے گا۔ لہذا اس ڈھانچے کو آر ٹی سی_ڈیٹا_ اے ٹی ٹی آر قرار دیا گیا ہے اور گہری نیند سے پہلے اس ڈھانچے میں متحرک میموری کو کاپی کرنا جاگنے کے بعد متحرک میموری میں اس کی بازیابی میں مدد کرتا ہے۔ آسان الفاظ میں ہم گہری نیند کے بعد اس کی بازیابی کے لئے متحرک میموری سے مستحکم میموری میں وقت بچا رہے ہیں۔ یہاں دو متغیر کی وضاحت کی گئی ہے۔ ' آخری ' آخری بار حاصل کرنے کے لئے استعمال کیا جاتا ہے جب ESP32 گہری نیند میں چلا گیا اور بوٹکاؤنٹ دوبارہ سیٹ کی تعداد گنتی میں استعمال ہوتا ہے۔
آر ٹی سی_ڈیٹا_ اے ٹی ٹی آر مستحکم ٹائم_ٹ آخری۔ RTC_DATA_ATTR مستحکم uint32_t بوٹکاؤنٹ؛
پھر BLE ایڈورٹائزنگ ٹائپ کی وضاحت کریں ۔ تعریف مندرجہ ذیل طور پر کی گئی ہے۔
بی ایل اے ایڈورائزنگ * پی ایڈورٹائزنگ؛
timeval موجودہ وقت تک رسائی حاصل کرنے کی ساخت کے طور پر بیان کیا جاتا ہے.
ڈھانچے کا وقت
نیز یو یو ڈی کی وضاحت کی گئی ہے۔ UIDs کو اس لنک سے تیار کیا جاسکتا ہے ۔
# وضاحتی BEACON_UUID "87b99b2c-9XXd-11e9-bXX2-526XXXX64f64"
اب ایک فنکشن بنائیں جس میں آئی بیکون اوصاف ہوں گے جیسے UID ، میجر ، معمولی ، وغیرہ۔ اس فنکشن میں BLE کے لئے iBeacon کی حیثیت سے ایک مثال بنائیں ، اور ایک جعلی کارخانہ دار ID ، UID ، ESP32 کیلئے اہم اور معمولی iBeacon کے طور پر مرتب کریں۔
باطل سیٹ بییکن () { BLEBeacon oBeacon = BLEBeacon ()؛ oBeacon.setManocolaterId (0x4C00)؛ oBeacon.setProximityUUID (BLEUUID (BEACON_UUID))؛ oBeacon.setMajor ((بوٹکاؤنٹ & 0xFFFF0000) >> 16)؛ oBeacon.setMinor (بوٹکاؤنٹ & 0xFFFF)؛
پرچم کو 0x04 کے بطور مقرر کریں تاکہ یہ سکینر میں BrEdrNotSupported کی پیداوار کرے ۔
oData.setFlags (0x04)؛
اشاعت کے ل advertising اشتہاری ڈیٹا مرتب کریں۔
std:: تار strServiceData = ""؛
اشتہار دینے کے لئے ایک کے بعد ایک تار شامل کریں۔
strServiceData + = (چار) 26؛ // لین strServiceData + = (چار) 0xFF؛ // قسم strServiceData + = oBeacon.getData ()؛ oData.addData (strServiceData)؛
ڈیٹا کو شائع کرکے اشتہارات کا آغاز کریں۔
pAdvertising-> setData (oData)؛ pAdvertising-> setScanResponseData (oScanResponseData)؛
سیریل مانیٹر کو 115200 بڈ ریٹ پر شروع کریں اور وقت نکالیں۔ دوبارہ سیٹ کرنے والوں کی تعداد کو اسٹور کرنے کے لئے بوٹکاؤنٹ میں اضافہ بھی کریں ۔
سیریل.بیگین (115200)؛ گیٹ ٹائم ڈے (اور اب ، NULL)؛ سیریل.پرنٹف ("ESP32٪ d \ n شروع کریں" ، بوٹکاؤنٹ ++)؛
موجودہ وقت کو جامد میموری میں اسٹور کریں۔
آخری = now.tv_sec؛
ایک BLE آلہ تیار کریں اور نام کے مطابق اپنی مرضی کے مطابق بنائیں۔ یہاں ESP32 کا نام " ESP2 بطور iBeacon " ہے۔ نوٹ کریں کہ ، نام لمبے لمبے ہوسکتے ہیں لیکن کوڈ کے اس ورژن نے طویل ناموں کی حمایت شروع کردی ہے۔
BLEDevice:: init ("ای ایس پی 32 بطور آئی بیکن")؛
تشہیر اور شروع کرنے کے لئے BLE سرور بنائیں۔
BLEServer * pServer = BLEDevice:: createServer ()؛ pAdvertising = BLEDevice:: getAdvertising ()؛ BLEDevice:: startAdvertising ()؛
پھر EB32 کو آئی بیکن موڈ میں سیٹ کریں۔
سیٹ بییکن ()؛
اشتہار بازی شروع کریں پھر اشتہارات کو روکیں اور 10 سیکنڈ کے لئے گہری نیند میں جائیں۔
pAdvertising-> start ()؛ pAdvertising-> stop ()؛ esp_दीप_نیند (1000000LL * GPIO_DEEP_SLEEP_DURATION)؛
آخر میں مائیکرو USB کیبل کا استعمال کرتے ہوئے اپنے لیپ ٹاپ کے ساتھ ESP32 ڈویلپمنٹ بورڈ پلگ ان کریں اور ارڈینو IDE کا استعمال کرکے کوڈ کو ESP32 میں اپ لوڈ کریں۔ پھر اپنے اسمارٹ فون میں این آر ایف کنیکٹ اینڈروئیڈ ایپ کھولیں اور اسکیننگ شروع کریں۔ آپ کو ESP32 بطور iBeacon براڈکاسٹ مل جائے گا جیسا کہ ذیل کی تصویر میں دکھایا گیا ہے:
یہ کس طرح ہے ESP32 BLE بیکن کے طور پر استعمال کیا جا سکتا UUID، بڑے اور چھوٹے کی تشہیر کرنے کے لئے. اگر آپ iBeacon کے بارے میں مزید جاننا چاہتے ہیں تو HM10 پر ہمارے گذشتہ سبق کو iBeacon کے بطور پیروی کریں۔ نیز اگر آپ کو کوئی شبہ ہے تو نیچے تبصرے کریں یا فورمز میں سوالات پوچھیں۔
ایک کام کرنے والی ویڈیو کے ساتھ مکمل کوڈ ذیل میں دیا گیا ہے۔
/>