- கூறுகள் தேவை
- ESP32 iBeacon க்கான nRF Connect Android பயன்பாட்டைப் பயன்படுத்துதல்
- BLE iBeacon ஆக வேலை செய்ய ESP32 ஐ நிரலாக்குகிறது
ESP32 உண்மையில் புளூடூத் மற்றும் வைஃபைக்கு உள்ளடிக்கிய ஆதரவைக் கொண்ட ஒரு சக்திவாய்ந்த IoT சாதனமாகும். ரேம், ரோம், ஜிபிஐஓ பின்ஸ் போன்ற கூடுதல் அம்சங்களுடன் ஈஎஸ்பி 32 அதன் முன்னோடி ஈஎஸ்பி 8266 இன் மேம்பட்ட பதிப்பாகும். புளூடூத் பீக்கான்கள், ஃபிட்னெஸ் பேண்டுகள், அருகாமையில் உள்ள பேட்டரி உகந்த பயன்பாடுகளுக்கு விருப்பத்தைப் பயன்படுத்தலாம். எளிய மைக்ரோகண்ட்ரோலர் திட்டங்களுக்கு எச்.சி -05 அல்லது எச்.சி -06 தொகுதிகள் போன்ற சீரியல் ப்ளூடூத் ஆக ஈ.எஸ்.பி 32 ஐப் பயன்படுத்தவும் முடியும்.
BLE இரண்டு வெவ்வேறு முறைகளில் செயல்பட முடியும் என்பது எங்களுக்குத் தெரியும் - சேவையக முறை மற்றும் கிளையண்ட் பயன்முறை. இரண்டு முறைகளும் எங்கள் முந்தைய ESP32 பயிற்சிகளில் விவாதிக்கப்பட்டுள்ளன:
- ESP32 BLE சேவையகம் - பேட்டரி நிலை குறிப்பிற்கான GATT சேவை
- ESP32 BLE கிளையண்ட் - ஒரு விளக்கைத் தூண்டுவதற்கு உடற்தகுதி இசைக்குழுவுடன் இணைக்கிறது
இந்த டுடோரியலில் ESP32 ஐப் பயன்படுத்தி BLE iBeacon ஐ உருவாக்குவோம், அங்கு ESP32 ஒரு சேவையகமாகவும் ஸ்மார்ட்போன் கிளையண்டாகவும் செயல்படும். ESP32 டுடோரியலுடன் தொடங்குவதற்கு திரும்பி வராவிட்டால், Arduino IDE உடன் ESP32 போர்டை எவ்வாறு பயன்படுத்துவது என்பது பற்றி நீங்கள் ஏற்கனவே அறிந்திருக்கிறீர்கள் என்று கருதுகிறேன்.
ராஸ்பெர்ரி பை மற்றும் எச்.எம் -10 பி.எல்.இ ஐபிகான் ஆகியவற்றைப் பயன்படுத்தி எங்கள் முந்தைய புளூடூத் ஐபிகான் திட்டங்களை மேற்கொள்வதன் மூலம் பெக்கான் / ஐபிகான் தொழில்நுட்பம் என்ன என்பதையும் நீங்கள் மேலும் அறியலாம்.
கூறுகள் தேவை
வன்பொருள்:
- ESP32 மேம்பாட்டு வாரியம்
- மைக்ரோ யூ.எஸ்.பி கேபிள்
மென்பொருள்:
- Arduino IDE
- Android பயன்பாடு: மொபைலுக்கான nRF இணைப்பு (நோர்டிக் செமிகண்டக்டர் மூலம்)
பல பி.எல்.இ ஸ்கேனர் பயன்பாடுகள் உள்ளன, அவற்றில் ஒன்று எங்கள் முந்தைய திட்டத்தில் எச்.எம் -10 பி.எல்.இ தொகுதி எவ்வாறு அர்டுயினோவுடன் பயன்படுத்துவது என்பது. இந்த பி.எல்.இ ஸ்கேனர் பயன்பாடு நல்ல வரைகலை இடைமுகத்தை (ஜி.யு.ஐ) வழங்குகிறது, ஆனால் கூடுதல் தகவல்கள் இல்லை, எனவே இந்த திட்டத்தில் நாங்கள் மொபைல் பயன்பாட்டிற்கான என்.ஆர்.எஃப் இணைப்பைப் பயன்படுத்துகிறோம்.
ESP32 iBeacon க்கான nRF Connect Android பயன்பாட்டைப் பயன்படுத்துதல்
1. கூகிள் பிளே ஸ்டோரிலிருந்து என்ஆர்எஃப் கனெக்ட் பயன்பாட்டைப் பதிவிறக்கி அதைத் திறக்கவும்.
![]()
2. திரை கீழே தெரிகிறது. சாதனங்கள் கிடைக்கும்போது இந்த திட்டத்திற்கான பயனுள்ள விருப்பங்கள் 'ஸ்கேன்', 'ஸ்கேனர்' மற்றும் 'தகவல்' ஆகும்.
'ஸ்கேன்' விருப்பத்தை அனைத்து iBeacons பார்க்க பயன்படுத்தப்படும். ஐபிகானைத் தேடத் தொடங்க, திரையை கீழே இழுக்கவும் அல்லது திரையின் மேல் வலது மூலையில் உள்ள 'ஸ்கேன்' விருப்பத்திற்குச் செல்லவும். இது கிடைக்கக்கூடிய iBeacons ஐத் தேடத் தொடங்கும்.
![]()
3. ஐபிகானைத் தேடிய பிறகு, நீங்கள் RSSI, UUID, மேஜர் மற்றும் மைனரை iBeacon ஐப் பார்க்க முடியும். நீங்கள் மொபைல் அல்லது ஐபிகானை ஒருவருக்கொருவர் விலக்கிக் கொண்டால் ஆர்எஸ்எஸ்ஐ மாறும். இங்கே இந்த திரையில், RSSI (-37) ஆகும். இது தவிர டம்மி நிறுவனத்தின் பெயர், சாதன வகை, பைட்டுகளின் நீளம், ESP32 இன் உள்ளூர் பெயர் போன்ற சில விவரங்கள் உள்ளன. இங்கே இது “ ESP32 as iBeacon ”. நீங்கள் உள்ளூர் பெயரை ஸ்கெட்சில் மாற்றலாம்.
![]()
4. ஸ்மார்ட்போனை ஐபீகனில் இருந்து எடுத்த பிறகு, ஆர்எஸ்எஸ்ஐ மதிப்பு -37 முதல் -58 வரை மாறுகிறது. சாதனங்களில் ஒன்றை நகர்த்தினால் இந்த மதிப்புகள் மாறிக்கொண்டே இருக்கும்.
![]()
RSSI சமிக்ஞை ஏற்றுக்கொள்ளக்கூடிய மதிப்புகள் பின்வருமாறு:
| சமிக்ஞை வலிமை | டி.எல்; டி.ஆர் | தேவையான | |
|---|---|---|---|
| -30 டி.பி.எம் | ஆச்சரியம் | அடையக்கூடிய சமிக்ஞை வலிமை. இதை அடைய கிளையன்ட் AP இலிருந்து சில அடி மட்டுமே இருக்க முடியும். உண்மையான உலகில் வழக்கமான அல்லது விரும்பத்தக்கதல்ல. | ந / அ |
| -67 டி.பி.எம் | வெரி குட் | தரவு பாக்கெட்டுகளை மிகவும் நம்பகமான, சரியான நேரத்தில் வழங்க வேண்டிய பயன்பாடுகளுக்கான குறைந்தபட்ச சமிக்ஞை வலிமை. | VoIP / VoWiFi, ஸ்ட்ரீமிங் வீடியோ |
| -70 டி.பி.எம் | சரி | நம்பகமான பாக்கெட் விநியோகத்திற்கான குறைந்தபட்ச சமிக்ஞை வலிமை. | மின்னஞ்சல், வலை |
| -80 டி.பி.எம் | நல்லதல்ல | அடிப்படை இணைப்பிற்கான குறைந்தபட்ச சமிக்ஞை வலிமை. பாக்கெட் விநியோகம் நம்பமுடியாததாக இருக்கலாம். | ந / அ |
| -90 டி.பி.எம் | பயன்படுத்தப்படாமல் | சத்தம் தரையில் நெருங்கி அல்லது மூழ்கி. எந்தவொரு செயல்பாடும் மிகவும் சாத்தியமில்லை. | ந / அ |
BLE iBeacon ஆக வேலை செய்ய ESP32 ஐ நிரலாக்குகிறது
Arduino IDE இல் நீங்கள் ESP32 போர்டை நிறுவும் போது ESP32 BLE iBeacon இன் மாதிரி நிரல் உள்ளது. ஆனால் இந்த டுடோரியலில் இந்த ஓவியத்தை நாங்கள் சற்றுத் திருத்தியுள்ளோம் , மாதிரி நிரலின் முழுமையான திருத்தப்பட்ட பதிப்பு இந்த டுடோரியலின் முடிவில் கொடுக்கப்பட்டுள்ளது.
ESP32 BLE_iBeacon இன் மாதிரி நிரலைத் திறக்க கீழே உள்ள படிகளைப் பின்பற்றவும்.
- Arduino IDE ஐத் திறந்து “ESP32 Dev Module” ஐத் தேர்ந்தெடுக்கவும். (இந்த பலகையை நீங்கள் கண்டுபிடிக்கவில்லை என்றால், நீங்கள் ESP32 போர்டு தொகுப்பை நிறுவியிருக்கிறீர்களா என்பதை சரிபார்க்கவும்)
- சென்று கோப்பு > எடுத்துக்காட்டுகள் > ESP32 BLE, Arduino > BLE_iBeacon
- “BLE_iBeacon” ஸ்கெட்சைத் திறக்கவும்.
இப்போது இந்த டுடோரியலில் செய்யப்படும் குறியீட்டில் ஒரு சிறிய மாற்றம் உள்ளது. இந்த ஓவியத்தில் ESP32 பெயரும் புதுப்பிக்கப்படும். எனவே BLE சேவையகம் மற்றும் iBeacon ஐ உருவாக்குவதில் பயன்படுத்தப்படும் தேவையான நூலகங்களைச் சேர்ப்பதன் மூலம் தொடங்கவும்.
# அடங்கும் "sys / time.h"
தற்போதைய கணினி நேரத்தைப் பெற இது ஒரு நேர நூலகம். இது tv_sec, gettimeofday () போன்ற செயல்பாடுகளைக் கொண்டுள்ளது. மேலும் தகவலுக்கு, ' sys / time.h' இன் அதிகாரப்பூர்வ யுனிக்ஸ் வெளியீட்டைப் பார்வையிடலாம்.
பின்னர் ESP32 BLE நூலகங்கள் சேர்க்கப்பட்டுள்ளன, இதில் BLE கிளையண்ட் அல்லது BLE சேவையகம் போன்ற வெவ்வேறு உள்ளமைவுகளில் ESP32 ஐ உருவாக்கப் பயன்படுத்தப்படும் பல செயல்பாடுகள் உள்ளன.
# அடங்கும் "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_DATA_ATTR பண்புடன் உலகளாவிய மாறியை நீங்கள் வரையறுத்தால், மாறி RTC_SLOW_MEM நினைவகத்தில் வைக்கப்படும் என்பதை நினைவில் கொள்க. எனவே RTC_DATA_ATTR என அறிவிக்கப்பட்ட கட்டமைப்பு மற்றும் ஆழ்ந்த தூக்கத்திற்கு முன் டைனமிக் மெமரியை இந்த கட்டமைப்பிற்கு நகலெடுப்பது எழுந்த பிறகு டைனமிக் நினைவகத்தில் இதை மீட்டெடுக்க உதவுகிறது. எளிமையான சொற்களில், ஆழ்ந்த தூக்கத்திற்குப் பிறகு அதை மீட்டெடுக்க டைனமிக் நினைவகத்திலிருந்து நிலையான நினைவகத்தில் நேரத்தைச் சேமிக்கிறோம். இங்கே இரண்டு மாறிகள் வரையறுக்கப்பட்டுள்ளன. ESP32 ஆழ்ந்த தூக்கத்திற்குச் சென்ற கடைசி நேரத்தைப் பெற ' கடைசி ' பயன்படுத்தப்படுகிறது, மேலும் மறுஅமைவுகளின் எண்ணிக்கையை பூட்கவுண்ட் பயன்படுத்தப்படுகிறது.
RTC_DATA_ATTR நிலையான நேரம்_ கடைசியாக; RTC_DATA_ATTR நிலையான uint32_t பூட்கவுன்ட்;
பின்னர் BLE விளம்பர வகையை வரையறுக்கவும். வரையறை பின்வருமாறு செய்யப்படுகிறது.
BLEA விளம்பரம் * p விளம்பரப்படுத்துதல்;
Timeval தற்போதைய நேரம் அணுக அமைப்பு வரையறுக்கப்படுகிறது.
struct காலவரிசை இப்போது;
மேலும் UUID வரையறுக்கப்படுகிறது. இந்த இணைப்பிலிருந்து UUID களை உருவாக்க முடியும் .
# BEACON_UUID "87b99b2c-9XXd-11e9-bXX2-526XXXX64f64"
இப்போது UUID, மேஜர், மைனர், முதலியன போன்ற iBeacon பண்புகளைக் கொண்டிருக்கும் ஒரு செயல்பாட்டை உருவாக்கவும். இந்த செயல்பாட்டில் BLE க்கு iBeacon என ஒரு உதாரணத்தை உருவாக்கி, ஒரு போலி உற்பத்தியாளர் ஐடி, UUID, ESP32 க்கு பெரிய மற்றும் சிறிய ஐபீகான் என அமைக்கவும்.
void setBeacon () { BLEBeacon oBeacon = BLEBeacon (); oBeacon.setManufacturerId (0x4C00); oBeacon.setProximityUUID (BLEUUID (BEACON_UUID)); oBeacon.setMajor ((பூட்கவுண்ட் & 0xFFFF0000) >> 16); oBeacon.setMinor (பூட்கவுண்ட் & 0xFFFF);
கொடியை 0x04 ஆக அமைக்கவும், இதனால் ஸ்கேனரில் BrEdrNotSupported ஐ வெளியிடும்.
oData.setFlags (0x04);
விளம்பரத் தரவை வெளியிடுவதற்கு அமைக்கவும்.
std:: string strServiceData = "";
விளம்பரம் செய்ய ஒன்றன்பின் ஒன்றாக சரம் சேர்க்கவும்.
strServiceData + = (கரி) 26; // லென் strServiceData + = (கரி) 0xFF; // வகை strServiceData + = oBeacon.getData (); oData.addData (strServiceData);
தரவை வெளியிடுவதன் மூலம் விளம்பரத்தைத் தொடங்கவும்.
pAd advertising-> setData (oData); pAd advertising-> setScanResponseData (oScanResponseData);
சீரியல் மானிட்டரை 115200 பாட் விகிதத்தில் தொடங்கி நேரத்தைப் பெறுங்கள். மீட்டமைப்புகளின் எண்ணிக்கையை சேமிக்க பூட்கவுண்டையும் அதிகரிக்கவும்.
சீரியல்.பெஜின் (115200); gettimeofday (& இப்போது, NULL); Serial.printf ("ESP32% d \ n ஐத் தொடங்குங்கள்", பூட்கவுண்ட் ++);
தற்போதைய நேரத்தை நிலையான நினைவகத்தில் சேமிக்கவும்.
last = now.tv_sec;
ஒரு BLE சாதனத்தை உருவாக்கி, நீங்கள் விரும்பியபடி பெயரிடுங்கள். இங்கே ESP32 க்கு “ ESP2 as iBeacon ” என்று பெயரிடப்பட்டுள்ளது. பெயர்கள் நீளமாக இருக்கலாம், ஆனால் குறியீட்டின் இந்த பதிப்பு நீண்ட பெயர்களுக்கான ஆதரவைத் தொடங்கியுள்ளது என்பதை நினைவில் கொள்க.
BLEDevice:: init ("ESB32 as iBeacon");
விளம்பரம் செய்ய மற்றும் தொடங்க BLE சேவையகத்தை உருவாக்கவும்.
BLEServer * pServer = BLEDevice:: createServer (); pAd advertising = BLEDevice:: getAd advertising (); BLEDevice:: startAd advertising ();
பின்னர் ESB32 ஐ iBeacon பயன்முறையில் அமைக்கவும்.
setBeacon ();
விளம்பரத்தைத் தொடங்கவும், பின்னர் விளம்பரத்தை நிறுத்திவிட்டு 10 விநாடிகள் ஆழ்ந்த தூக்கத்திற்குச் செல்லுங்கள்.
pAd advertising-> தொடக்க (); pAd advertising-> நிறுத்து (); esp_deep_sleep (1000000LL * GPIO_DEEP_SLEEP_DURATION);
இறுதியாக மைக்ரோ யூ.எஸ்.பி கேபிளைப் பயன்படுத்தி உங்கள் லேப்டாப்பில் ஈ.எஸ்.பி 32 மேம்பாட்டு வாரியத்தை செருகவும், ஆர்டுயினோ ஐடிஇ பயன்படுத்தி குறியீட்டை ஈஎஸ்பி 32 இல் பதிவேற்றவும். உங்கள் ஸ்மார்ட்போனில் nRF Connect Android பயன்பாட்டைத் திறந்து ஸ்கேன் செய்யத் தொடங்குங்கள். கீழேயுள்ள படத்தில் காட்டப்பட்டுள்ளபடி ESB32 ஐ ஐபிகான் ஒளிபரப்பாகக் காண்பீர்கள்:
![]()
இந்த எப்படி இருக்கிறது ESP32 BLE பெக்கான் பயன்படுத்த முடியும் UUID, மேஜர் மற்றும் மைனர் விளம்பரம் செய்ய. நீங்கள் iBeacon பற்றி மேலும் தெரிந்து கொள்ள விரும்பினால், HM10 இல் எங்கள் முந்தைய டுடோரியலை iBeacon ஆக பின்பற்றவும். உங்களுக்கு ஏதேனும் சந்தேகம் இருந்தால் கீழே கருத்து தெரிவிக்கவும் அல்லது மன்றங்களில் கேள்விகளைக் கேட்கவும்.
வேலை செய்யும் வீடியோவுடன் முழுமையான குறியீடு கீழே கொடுக்கப்பட்டுள்ளது.
/>