- முன்நிபந்தனைகள்
- தேவையான பொருட்கள்
- வன்பொருள்
- உங்கள் புளூடூத் முகவரியின் சேவையகத்தைப் பெறுங்கள் (உடற்பயிற்சி குழுவின் முகவரி)
- சேவையின் சேவை மற்றும் சிறப்பியல்பு UUID ஐப் பெறுதல்
- ப்ராக்ஸிமிட்டி ஸ்விட்ச் அப்ளிகேஷனுக்கான கிளையண்டாக செயல்பட ESP32 ஐ புரோகிராமிங் செய்கிறது
- வேலை மற்றும் சோதனை
உங்கள் வீட்டிற்குள் நுழைந்தவுடன் தானாக விளக்குகளை இயக்கி, நீங்கள் வெளியேறும்போது மீண்டும் அணைக்க எவ்வளவு அருமையாக இருக்கும்! ஆம், ஒரு எளிய பயன்பாடு இதை உங்களுக்காக செய்ய முடியும். இங்கே இந்த திட்டத்தில், நாங்கள் ESP32 ஐ BLE கிளையண்டாகவும், உடற்பயிற்சி இசைக்குழுவை BLE சேவையகமாகவும் பயன்படுத்துவோம், எனவே ஃபிட்னஸ் பேண்ட் அணிந்த ஒருவர் ESP32 புளூடூத் வரம்பில் வரும்போதெல்லாம், ESP32 அதைக் கண்டுபிடித்து லைட்டை இயக்குகிறது. BLE சேவையக திறன்களைக் கொண்ட எந்த புளூடூத் சாதனங்களும் ESP32 ஐப் பயன்படுத்தி எந்தவொரு வீட்டு சாதனத்தையும் கட்டுப்படுத்த தூண்டுதல் சாதனமாகப் பயன்படுத்தப்படலாம்.
ஈஎஸ்பி 32 தொகுதியின் பி.எல்.இ (புளூடூத் லோ எனர்ஜி) செயல்பாடுகளை நாங்கள் ஏற்கனவே ஆராய்ந்தோம், அதனால் நான் மிகவும் மகிழ்ச்சியடைகிறேன். மறுபரிசீலனை செய்ய, இந்த தொகுதி கிளாசிக் புளூடூத் மற்றும் புளூடூத் லோ எனர்ஜி (பி.எல்.இ) இரண்டையும் கொண்டுள்ளது, கிளாசிக் புளூடூத் பாடல்கள் அல்லது கோப்புகளை மாற்ற பயன்படுத்தலாம் மற்றும் பி.எல்.இ விருப்பத்தை பேட்டரி உகந்த பயன்பாடுகளான புளூடூத் பீக்கான்கள், ஃபிட்னெஸ் பேண்டுகள், அருகாமையில் பயன்படுத்தலாம், முதலியன எளிய மைக்ரோகண்ட்ரோலர் திட்டங்களுக்கு HC-05 அல்லது HC-06 தொகுதிகள் போன்ற சீரியல் ப்ளூடூத் ஆக இதைப் பயன்படுத்தலாம்.
ESP32 BLE இரண்டு வெவ்வேறு முறைகளில் செயல்பட முடியும் என்பது உங்களுக்குத் தெரியும். ஒன்று, பேட்டரி நிலை காட்டி சேவையைப் பிரதிபலிக்க GATT சேவையைப் பயன்படுத்துவதன் மூலம் நாங்கள் ஏற்கனவே விவாதித்த சேவையக முறை. அந்த பயிற்சியில், ESP32 ஒரு சேவையகமாகவும் எங்கள் மொபைல் போன் ஒரு கிளையண்டாகவும் செயல்பட்டது. இப்போது, ESP32 ஐ ஒரு கிளையண்டாக இயக்கி, எனது உடற்பயிற்சி இசைக்குழு போன்ற பிற BLE சேவையகங்களுடன் இணைக்க முயற்சிப்போம்.
எனது ஃபிட்னெஸ் பேண்ட் உள்ளிட்ட அனைத்து பி.எல்.இ சேவையகங்களும் நிலையான விளம்பர பயன்முறையில் உள்ளன, அவை கிளையன்ட் ஸ்கேன் செய்யும் போது எப்போதும் கண்டுபிடிக்கப்படலாம். இந்த அம்சத்தை மேம்படுத்துவதன் மூலம், இந்த உடற்பயிற்சி பட்டைகள் ஒரு அருகாமையில் சுவிட்சாகப் பயன்படுத்தலாம், அதாவது இந்த உடற்பயிற்சி பட்டைகள் எப்போதும் பயனரின் கையில் பிணைக்கப்பட்டுள்ளன, மேலும் இசைக்குழுவை ஸ்கேன் செய்வதன் மூலம் நபர் வரம்பிற்குள் இருந்தால் நாம் கண்டறிய முடியும். இதைத்தான் இந்த கட்டுரையில் நாம் செய்யப்போகிறோம். BLE கிளையண்டாக செயல்பட ESP32 ஐ நிரல் செய்வோம், மேலும் BLE சாதனங்களுக்கு தொடர்ந்து ஸ்கேன் செய்வோம்; ஃபிட்னெஸ் பேண்ட் வரம்பில் இருப்பதைக் கண்டால், அதை இணைக்க முயற்சிப்போம், இணைப்பு வெற்றிகரமாக இருந்தால் , ESP32 இல் உள்ள GPIO ஊசிகளில் ஒன்றை மாற்றுவதன் மூலம் ஒரு ஒளி விளக்கைத் தூண்டலாம். ஒவ்வொரு BLE சேவையகமும் இருப்பதால் முறை நம்பகமானது(ஃபிட்னஸ் பேண்ட்) ஒரு தனிப்பட்ட வன்பொருள் ஐடியைக் கொண்டிருக்கும், எனவே இரண்டு BLE சேவையக சாதனங்களும் ஒரே மாதிரியாக இருக்காது. சுவாரஸ்யமானதா? !!! இப்போது, கட்டிடம் பெறுவோம்
முன்நிபந்தனைகள்
இந்த கட்டுரையில், ESP32 டுடோரியலுடன் தொடங்குவதற்கு பின்வாங்காவிட்டால், Arduino IDE உடன் ESP32 போர்டை எவ்வாறு பயன்படுத்துவது என்பது பற்றி நீங்கள் ஏற்கனவே அறிந்திருக்கிறீர்கள் என்று கருதுகிறேன்.
புரிந்துகொள்ள எளிதாக இருப்பதற்காக முழுமையான ESP32 புளூடூத்தை மூன்று பிரிவுகளாகப் பிரித்துள்ளோம். எனவே இதைத் தொடங்குவதற்கு முன் முதல் இரண்டு பயிற்சிகள் வழியாக செல்ல பரிந்துரைக்கப்படுகிறது.
- மொபைல் தொலைபேசியிலிருந்து எல்இடியை மாற்றும் ஈஎஸ்பி 32 இல் சீரியல் புளூடூத்
- GATT சேவையைப் பயன்படுத்தி மொபைல் தொலைபேசியில் பேட்டரி நிலை தரவை அனுப்ப BLE சேவையகம்
- BLE கிளையன்ட் BLE சாதனங்களை ஸ்கேன் செய்து ஒரு கலங்கரை விளக்கமாக செயல்படுகிறது.
நாங்கள் ஏற்கனவே முதல் இரண்டு பயிற்சிகளை உள்ளடக்கியுள்ளோம், இங்கே ESP32 ஐ BLE கிளையன்ட் என்று விளக்க கடைசி ஒன்றைத் தொடர்கிறோம்.
தேவையான பொருட்கள்
- ESP32 மேம்பாட்டு வாரியம்
- ஏசி சுமை (விளக்கு)
- ரிலே தொகுதி
வன்பொருள்
இந்த ESP32 BLE கிளையண்ட் திட்டத்திற்கான வன்பொருள் மிகவும் தெளிவாக உள்ளது, ஏனெனில் பெரும்பாலான மந்திரங்கள் குறியீட்டிற்குள் நிகழ்கின்றன. புளூடூத் சமிக்ஞை கண்டுபிடிக்கப்பட்டால் அல்லது இழக்கப்படும்போது ESP32 ஒரு ஏசி விளக்கை (ஏற்ற) மாற்ற வேண்டும். இந்த சுமையை மாற்றுவதற்கு நாங்கள் ஒரு ரிலேவைப் பயன்படுத்துவோம், மேலும் ESP32 இன் GPIO ஊசிகளும் 3.3V மட்டுமே இணக்கமாக இருப்பதால், எங்களுக்கு 3.3V உடன் இயக்கக்கூடிய ரிலே தொகுதி தேவை. பிசி 548 என்றால் ரிலே தொகுதியில் என்ன டிரான்சிஸ்டர் பயன்படுத்தப்படுகிறது என்பதைச் சரிபார்க்கவும், கீழேயுள்ள சுற்று வரைபடத்தைப் பின்பற்றி உங்கள் சொந்த சுற்றுகளை உருவாக்க நீங்கள் செல்ல நல்லது.

எச்சரிக்கை: சுற்று 220 வி ஏசி மெயின்ஸ் மின்னழுத்தத்துடன் செயல்படுகிறது. நேரடி கம்பிகளுடன் கவனமாக இருங்கள் மற்றும் நீங்கள் ஒரு குறுகிய சுற்று உருவாக்கவில்லை என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். உங்களுக்கு எச்சரிக்கை விடுக்கப்பட்டுள்ளது.
BC547 அல்லது 2N2222 ஐ விட BC548 ஐப் பயன்படுத்துவதற்கான காரணம் என்னவென்றால், அவை குறைந்த அடிப்படை-உமிழ்ப்பான் மின்னழுத்தத்தைக் கொண்டிருக்கின்றன, அவை 3.3V உடன் மட்டுமே தூண்டப்படலாம். இங்கே பயன்படுத்தப்படும் ரிலே ஒரு 5V ரிலே உள்ளது நாங்கள் 5V பவர் கேபிள் அமைக்க பெறுகிறார் வின் முள் அதை சக்தி எனவே. தரை முள் சுற்று தரையில் இணைக்கப்பட்டுள்ளது. மின்தடை, R1 1K ஒரு அடிப்படை தற்போதைய எல்லைப்படுத்தி மின்தடை பயன்படுத்தப்படுகிறது. கட்ட கம்பி ரிலேவின் NO முள் மற்றும் ரிலேயின் பொதுவான முள் சுமைக்கு இணைக்கப்பட்டுள்ளது மற்றும் சுமைகளின் மறு முனை நடுநிலையுடன் இணைக்கப்பட்டுள்ளது. நீங்கள் கட்டம் மற்றும் நடுநிலையின் நிலையை மாற்றிக் கொள்ளலாம், ஆனால் அவற்றை நேரடியாகக் குறைக்காமல் பார்த்துக் கொள்ளுங்கள். தற்போதைய எப்போதும் சுமை (பல்பு) வழியாக செல்ல வேண்டும் .விஷயங்களை எளிமையாக வைத்திருக்க நான் ரிலே தொகுதியைப் பயன்படுத்தினேன், இங்கு சுமை ஒரு ஃபோகஸ் எல்இடி விளக்கு. எனது அமைவு கீழே இதுபோன்றது

நீங்கள் இப்போது வன்பொருளைத் தவிர்க்க விரும்பினால், ஜி.எஸ்.ஓ.ஓ 13 முள் பதிலாக ஜி.பீ.ஓ 2 முள் பயன்படுத்தலாம், இ.எஸ்.பி 32 இல் ஆன்-போர்டு எல்.ஈ. இந்த முறை ஆரம்பத்தில் பரிந்துரைக்கப்படுகிறது.
உங்கள் புளூடூத் முகவரியின் சேவையகத்தைப் பெறுங்கள் (உடற்பயிற்சி குழுவின் முகவரி)
முன்பு கூறியது போல, நாங்கள் ஒரு கிளையண்டாக (தொலைபேசியைப் போன்றது) செயல்பட ESP32 ஐ நிரல் செய்யப் போகிறோம், இது எனது உடற்பயிற்சி இசைக்குழு (லெனோவா HW-01) சேவையகத்துடன் இணைக்கப் போகிறது. ஒரு கிளையன்ட் சேவையகத்துடன் இணைக்க, அது சேவையகத்தின் புளூடூத் முகவரியை அறிந்து கொள்ள வேண்டும். இங்குள்ள எனது ஃபிட்னஸ் பேண்ட் போன்ற ஒவ்வொரு புளூடூத் சேவையகமும் அதன் சொந்த தனித்துவமான புளூடூத் முகவரியைக் கொண்டுள்ளது, இது நிரந்தரமானது. இதை உங்கள் லேப்டாப் அல்லது மொபைல் ஃபோனின் MAC முகவரியுடன் தொடர்புபடுத்தலாம்.
இந்த முகவரியைப் பெறுவதற்கு, எங்கள் முந்தைய டுடோரியலுக்காக நாங்கள் ஏற்கனவே பயன்படுத்திய நோர்டிக் அரைக்கடத்திகளிடமிருந்து என்ஆர்எஃப் எனப்படும் பயன்பாட்டைப் பயன்படுத்துகிறோம். இது IOS மற்றும் Android பயனர்களுக்கு இலவசமாகக் கிடைக்கிறது. வெறுமனே பதிவிறக்கி, பயன்பாட்டைத் தொடங்கவும், அருகிலுள்ள புளூடூத் சாதனங்களுக்கு ஸ்கேன் செய்யவும். பயன்பாடு கண்டுபிடிக்கும் அனைத்து BLE சாதனங்களையும் பட்டியலிடும். என்னுடையது HW-01 என்று பெயரிடப்பட்டுள்ளது, அதன் பெயருக்குக் கீழே பாருங்கள், கீழே காட்டப்பட்டுள்ளபடி சேவையகத்தின் வன்பொருள் முகவரியைக் காண்பீர்கள்.

எனவே எனது உடற்பயிற்சி குழுவின் ESP32 BLE வன்பொருள் முகவரி C7: F0: 69: F0: 68: 81, அதே வடிவத்தில் நீங்கள் வேறுபட்ட எண்களைக் கொண்டிருப்பீர்கள். எங்கள் ESP32 ஐ நிரல் செய்யும்போது நமக்குத் தேவைப்படும் என்பதால் அதைப் பற்றி ஒரு குறிப்பை உருவாக்கவும்.
சேவையின் சேவை மற்றும் சிறப்பியல்பு UUID ஐப் பெறுதல்
சரி, இப்போது நாங்கள் எங்கள் சேவையகத்தை BLE முகவரியைப் பயன்படுத்தி அடையாளம் கண்டுள்ளோம், ஆனால் அதனுடன் தொடர்புகொள்வதற்கு நாங்கள் சேவை மற்றும் பண்புகளின் மொழியைப் பேச வேண்டும், முந்தைய டுடோரியலைப் படித்திருந்தால் உங்களுக்கு இது புரியும். இந்த டுடோரியலில் எனது சேவையகத்தின் (ஃபிட்னஸ் பேண்ட்) எழுதும் பண்புகளை அதனுடன் இணைக்க பயன்படுத்துகிறேன். எனவே சாதனத்துடன் இணைவதற்கு எங்களுக்கு சேவை விளம்பர சிறப்பியல்பு UUID தேவை, அதே பயன்பாட்டுடன் மீண்டும் பெறலாம்.
உங்கள் பயன்பாட்டின் இணைப்பு பொத்தானைக் கிளிக் செய்து, சில எழுதும் பண்புகளைத் தேடுங்கள், அங்கு பயன்பாடு சேவை UUID மற்றும் சிறப்பியல்பு UUID ஐக் காண்பிக்கும். என்னுடையது கீழே காட்டப்பட்டுள்ளது

இங்கே எனது சேவை UUID மற்றும் சிறப்பியல்பு UUID ஒன்றுதான், ஆனால் அது ஒரே மாதிரியாக இருக்க வேண்டியதில்லை. உங்கள் சேவையகத்தின் UUID ஐக் கவனியுங்கள். என்னுடையது எனக் குறிப்பிடப்பட்டது
சேவை UUID: 0000fee7-0000-1000-8000-00805f9b34fb சிறப்பியல்பு UUID: 0000fee7-0000-1000-8000-00805f9b34fb
எழுதும் பண்புகளைப் பயன்படுத்துவது கட்டாயமில்லை; பயன்பாட்டில் காட்டப்பட்டுள்ள சேவையகத்தின் சரியான சேவை மற்றும் சிறப்பியல்பு UUID ஐ நீங்கள் பயன்படுத்தலாம்.
ப்ராக்ஸிமிட்டி ஸ்விட்ச் அப்ளிகேஷனுக்கான கிளையண்டாக செயல்பட ESP32 ஐ புரோகிராமிங் செய்கிறது
எங்கள் சேவையகத்தை (ஃபிட்னஸ் பேண்ட்) கண்டுபிடிக்கும் போது புளூடூத் சாதனங்களை ஸ்கேன் செய்யும் வாடிக்கையாளராக ESP32 செயல்பட வைப்பதே திட்டத்தின் யோசனை, இது வன்பொருள் ஐடியை சரிபார்க்கிறது மற்றும் இது GPIO முள் 13 மூலம் ஒளியை மாற்றும். !, ஆனால் அதில் ஒரு சிக்கல் உள்ளது. அனைத்து பி.எல்.இ சேவையகங்களும் 10 மீட்டர் வரம்பைக் கொண்டிருக்கும், இது சற்று அதிகம். எனவே, ஒரு கதவைத் திறந்த ஒளியை இயக்க அருகாமையில் சுவிட்ச் செய்ய முயற்சிக்கிறோம் என்றால், இந்த வரம்பு மிக அதிகம்.
BLE சேவையகத்தின் வரம்பைக் குறைக்க நாம் இணைத்தல் விருப்பத்தைப் பயன்படுத்தலாம். BLE சேவையகம் மற்றும் கிளையன்ட் இரண்டும் 3-4 மீட்டர் தூரத்தில் இருந்தால் மட்டுமே ஜோடியாக இருக்கும். இது எங்கள் பயன்பாட்டிற்கு சரியானது. எனவே, நாங்கள் ESP32 ஐ BLE சேவையகத்தைக் கண்டுபிடிப்பது மட்டுமல்லாமல், அதனுடன் இணைக்கவும், அது ஜோடியாக இருக்கிறதா என்பதை உறுதிப்படுத்தவும் செய்கிறோம். அவை ஜோடியாக இருக்கும் வரை, ஏசி விளக்கு தொடர்ந்து இருக்கும், வரம்பை மீறும் போது ஜோடி இழக்கப்படும் மற்றும் விளக்கு அணைக்கப்படும். இதைச் செய்வதற்கான முழுமையான ESP32 BLE எடுத்துக்காட்டு நிரல் இந்தப் பக்கத்தின் இறுதியில் கொடுக்கப்பட்டுள்ளது. இங்கே கீழே, நான் குறியீட்டை சிறிய துணுக்குகளாக உடைத்து அவற்றை விளக்க முயற்சிப்பேன்.
தலைப்பு கோப்பைச் சேர்த்த பிறகு , பி.எல்.இ முகவரி, சேவை மற்றும் சிறப்பியல்பு யு.யு.ஐ.டி பற்றி ஈ.எஸ்.பி 32 க்கு நாங்கள் தெரிவிக்கிறோம், ஆனால் மேலே உள்ள தலைப்புகளில் விளக்கப்பட்டுள்ளபடி என்.ஆர்.எஃப் இணைப்பு பயன்பாடு. குறியீடு கீழே தெரிகிறது
நிலையான BLEUUID serviceUUID ("0000fee7-0000-1000-8000-00805f9b34fb"); // nRF இணைப்பு பயன்பாட்டு நிலையான BLEUUID charUUID ("0000fee7-0000-1000-8000-00805f9b34fb") மூலம் பெறப்பட்ட ஃபிட்னெஸ்பேண்டின் சேவை UUID ; // என்.ஆர்.எஃப் இணைப்பு பயன்பாடு சரம் மூலம் பெறப்பட்ட ஃபிட்னெஸ்பேண்டின் சிறப்பியல்பு UUID சரம் My_BLE_Address = "c7: f0: 69: f0: 68: 81"; என் ஃபிட்னெஸ்பேண்டின் // வன்பொருள் புளூடூத் MAC, nRF இணைப்பு பயன்பாடு மூலம் பெறப்பட்ட ஒவ்வொரு இசைக்குழுவிற்கும் மாறுபடும்
அதைத் தொடர்ந்து நிரலில் எங்களிடம் கனெக்டோசர்வர் மற்றும் மைஆட்வர்டைஸ் டெவிஸ்கால்பேக் உள்ளன, அவை பின்னர் திரும்பப் பெறுவோம். அமைவு செயல்பாட்டின் உள்ளே, சீரியல் மானிட்டரைத் துவக்கி, சாதனத்தை ஸ்கேன் செய்ய ESP இல் BLE ஐ உருவாக்குகிறோம். ஒவ்வொரு BLE சாதனத்திற்கும் ஸ்கேன் முடிந்ததும் MyAdvertisedDeviceCallbacks என்ற செயல்பாடு கண்டுபிடிக்கப்பட்டது.
நாங்கள் ஈ.எஸ்.பி 32 ஐ மெயின் சக்தியுடன் இயக்குவதால் செயலில் ஸ்கேன் செய்வதையும் இயக்குகிறோம், பேட்டரி பயன்பாட்டிற்காக இது தற்போதைய நுகர்வு குறைக்க அணைக்கப்பட்டுள்ளது. ரிலே தூண்டுதல் முள் எங்கள் வன்பொருளில் GPIO 13 உடன் இணைக்கப்பட்டுள்ளது, எனவே GPIO pin 13 ஐ வெளியீடாக அறிவிக்கிறோம்.
void setup () { Serial.begin (115200); // தொடர் மானிட்டரைத் தொடங்குங்கள் Serial.println ("ESP32 BLE Server program"); // அறிமுக செய்தி BLEDevice:: init (""); pBLEScan = BLEDevice:: getScan (); // புதிய ஸ்கேன் உருவாக்கவும் pBLEScan-> setAdvertisedDeviceCallbacks (புதிய MyAdvertisedDeviceCallbacks ()); // மேலே வரையறுக்கப்பட்ட வகுப்பை அழைக்கவும் pBLEScan-> setActiveScan (true); // செயலில் உள்ள ஸ்கேன் அதிக சக்தியைப் பயன்படுத்துகிறது, ஆனால் முடிவுகளை விரைவாகப் பெறுகிறது pinMode (13, OUTPUT); // உள்ளமைக்கப்பட்ட எல்இடி முள் வெளியீடாக அறிவிக்கவும் }
MyAdvertisedDeviceCallbacks செயல்பாட்டின் உள்ளே, கண்டுபிடிக்கப்பட்ட BLE சாதனங்களின் பெயர் மற்றும் பிற தகவல்களை பட்டியலிடும் வரியை நாங்கள் அச்சிடுகிறோம். கண்டுபிடிக்கப்பட்ட BLE சாதனத்தின் வன்பொருள் ஐடி எங்களுக்குத் தேவை, இதனால் அதை விரும்பியவற்றுடன் ஒப்பிடலாம். எனவே , சாதனத்தின் முகவரியைப் பெற Server_BLE_Address என்ற மாறியைப் பயன்படுத்துகிறோம், பின்னர் அதை BLEAddress வகையிலிருந்து சரத்திற்கு மாற்றவும்.
வகுப்பு MyAdvertisedDeviceCallbacks: பொது BLEAdvertisedDeviceCallbacks { வெற்றிடத்தை onResult (BLEAdvertisedDevice விளம்பரப்படுத்தப்பட்ட டெவிஸ்) { Serial.printf ("ஸ்கேன் முடிவு:% s \ n", விளம்பரப்படுத்தப்பட்ட டெவிஸ்.டோஸ்ட்ரிங் (). c_str ()); Server_BLE_Address = புதிய BLEAddress (விளம்பரப்படுத்தப்பட்ட டெவிஸ்.ஜெட்அட்ரஸ் ()); ஸ்கேன் செய்யப்பட்டது_BLE_Address = Server_BLE_Address-> toString (). C_str (); } };
லூப் செயல்பாட்டின் உள்ளே, நாங்கள் 3 விநாடிகள் ஸ்கேன் செய்து, அதன் முடிவைக் கண்டுபிடித்தோம். இது BLEScanResults இன் ஒரு பொருளாகும். ஸ்கேன் செய்வதன் மூலம் ஒன்று அல்லது அதற்கு மேற்பட்ட சாதனங்களைக் கண்டறிந்தால், கண்டுபிடிக்கப்பட்ட பி.எல்.இ முகவரி நாங்கள் நிரலில் உள்ளிட்ட சாதனத்துடன் பொருந்துமா என்பதைச் சரிபார்க்கத் தொடங்குகிறோம். போட்டி நேர்மறையானது மற்றும் சாதனம் முன்பு ஜோடியாக இல்லாவிட்டால், கனெக்டோசர்வர் செயல்பாட்டைப் பயன்படுத்தி அதைப் பிரிக்க முயற்சிக்கிறோம். புரிந்துகொள்ளும் நோக்கத்திற்காக சில சீரியல் அறிக்கைகளையும் பயன்படுத்தியுள்ளோம்.
(foundDevices.getCount ()> = 1) { if (Scaned_BLE_Address == My_BLE_Address && ஜோடி == false) { Serial.println ("சாதனம் கிடைத்தது: -)… சேவையகத்துடன் கிளையண்டாக இணைக்கிறது"); if (connectToserver (* Server_BLE_Address)) {
ConnectToserver செயல்பாட்டின் உள்ளே BLE சேவையகத்துடன் (உடற்பயிற்சி இசைக்குழு) இணைக்க UUID ஐப் பயன்படுத்துகிறோம். ஒரு சேவையகத்துடன் இணைக்க, ESP32 ஒரு கிளையண்டாக செயல்பட வேண்டும், எனவே createClient () செயல்பாட்டைப் பயன்படுத்தி ஒரு கிளையண்டை உருவாக்குகிறோம், பின்னர் BLE சேவையகத்தின் முகவரியுடன் இணைக்கிறோம். UUID மதிப்புகளைப் பயன்படுத்தி சேவை மற்றும் சிறப்பியல்புகளைத் தேடுகிறோம், அதனுடன் இணைக்க முயற்சிக்கிறோம். இணைப்பு வெற்றிகரமாக இருக்கும்போது செயல்பாடு உண்மையைத் தருகிறது, இல்லையென்றால் அது தவறானது. சேவையகத்துடன் இணைக்க சேவை மற்றும் சிறப்பியல்பு UUID ஐ வைத்திருப்பது கட்டாயமில்லை என்பதை நினைவில் கொள்க, இது உங்கள் புரிதலுக்காக மட்டுமே செய்யப்படுகிறது.
bool connectToserver (BLEAddress pAddress) { BLEClient * pClient = BLEDevice:: createClient (); Serial.println ("- கிளையன்ட் உருவாக்கப்பட்டது"); // BLE சேவையகத்துடன் இணைக்கவும். pClient-> connect (pAddress); Serial.println ("- ஃபிட்னெஸ் பேண்டுடன் இணைக்கப்பட்டுள்ளது"); // தொலைநிலை BLE சேவையகத்தில் நாங்கள் சேவையைப் பற்றிய குறிப்பைப் பெறுங்கள். BLERemoteService * pRemoteService = pClient-> getService (serviceUUID); if (pRemoteService! = nullptr) { Serial.println ("- எங்கள் சேவையைக் கண்டறிந்தது"); உண்மைக்குத் திரும்பு; } இல்லையெனில் பொய்யாகத் திரும்பு; // தொலைநிலை BLE சேவையகத்தின் சேவையில் உள்ள சிறப்பியல்பு பற்றிய குறிப்பைப் பெறுங்கள். pRemoteCharacteristic = pRemoteService->getCharacteristic (charUUID); if (pRemoteCharacteristic! = nullptr) Serial.println ("- எங்கள் சிறப்பியல்பு கிடைத்தது"); உண்மைக்குத் திரும்பு; }
இணைப்பு வெற்றிகரமாக இருந்தால், ஜிபிஐஓ முள் 13 உயர்வானது மற்றும் இடைவெளி அறிக்கையைப் பயன்படுத்தி கட்டுப்பாடு வளையத்திற்கு வெளியே அனுப்பப்படும். ஜோடியாக பூலியன் மாறி உண்மையாகவும் அமைக்கப்பட்டுள்ளது.
if (connectToserver (* Server_BLE_Address)) { ஜோடி = உண்மை; Serial.println ("******************** LED இயக்கப்பட்டது ********************** ** "); டிஜிட்டல்ரைட் (13, உயர்); உடைத்தல்; }
இணைத்தல் வெற்றிகரமாக முடிந்ததும், GPIO முள் இயக்கப்பட்டதும் சாதனம் இன்னும் வரம்பில் உள்ளதா என்பதை சரிபார்க்க வேண்டும். இப்போது, சாதனம் ஜோடியாக இருப்பதால், பி.எல்.இ ஸ்கேன் சேவையை இனி பார்க்க முடியாது. பயனர் அந்த பகுதியை விட்டு வெளியேறும்போதுதான் அதை மீண்டும் கண்டுபிடிப்போம். எனவே நாம் வெறுமனே BLE சேவையகத்தை ஸ்கேன் செய்ய வேண்டும், நாங்கள் கண்டுபிடித்தால் கீழே காட்டப்பட்டுள்ளபடி GPIO முள் குறைவாக அமைக்க வேண்டும்
if (Scaned_BLE_Address == My_BLE_Address && ஜோடி == உண்மை) { சீரியல். println ("எங்கள் சாதனம் வரம்பிற்கு வெளியே சென்றது"); ஜோடி = பொய்; சீரியல். println ("******************** LED OOOFFFFF ************************"); டிஜிட்டல்ரைட் (13, குறைந்த); ESP.restart (); உடைத்தல்; }
வேலை மற்றும் சோதனை
நிரல் மற்றும் வன்பொருள் அமைப்போடு நீங்கள் தயாரானதும், குறியீட்டை ESP32 இல் பதிவேற்றி, கீழே காட்டப்பட்டுள்ளபடி முழு அமைப்பையும் ஏற்பாடு செய்யுங்கள்.

ESP32 உடன் உடற்தகுதி இசைக்குழு (சேவையகம்) இணைந்தவுடன் விளக்கு இயக்கப்படுவதை நீங்கள் கவனிக்க வேண்டும். உடற்பயிற்சி குழுவில் இணைப்பு புளூடூத் சின்னத்தைக் கவனிப்பதன் மூலமும் இதைச் சரிபார்க்கலாம். ஜோடியாக ஒருமுறை ESP32 இலிருந்து விலகிச் செல்ல முயற்சிக்கவும், நீங்கள் 3-4 மீட்டர் கடக்கும்போது கடிகாரத்தில் உள்ள புளூடூத் சின்னம் மறைந்து இணைப்பு இழக்கப்படுவதை நீங்கள் காண்பீர்கள். இப்போது, நீங்கள் விளக்கைப் பார்த்தால் அது அணைக்கப்படும். சாதனத்தில் நீங்கள் திரும்பிச் செல்லும்போது மீண்டும் ஜோடியாகி, ஒளி இயங்கும். திட்டத்தின் முழுமையான செயல்பாட்டை கீழே உள்ள வீடியோவில் காணலாம்.
நீங்கள் திட்டத்தை ரசித்தீர்கள், வழியில் புதிதாக ஒன்றைக் கற்றுக்கொண்டீர்கள் என்று நம்புகிறேன். அதைச் செயல்படுத்துவதில் நீங்கள் ஏதேனும் சிக்கலைச் சந்தித்திருந்தால், மன்றங்களில் அல்லது கீழேயுள்ள கருத்துப் பிரிவில் கூட சிக்கலை இடுகையிடலாம்
