- BLE (బ్లూటూత్ లో ఎనర్జీ) కు సంబంధించిన పరిభాష
- హార్డ్వేర్ను సిద్ధం చేస్తోంది
- GATT సేవను ఉపయోగించి బ్యాటరీ స్థాయి సూచిక కోసం ప్రోగ్రామింగ్ ESP32
- ESP32 BLE లో మీ GATT సేవను పరీక్షిస్తోంది
వైర్లెస్ హెడ్ఫోన్స్, ఫిట్నెస్ బ్యాండ్లు, బ్లూటూత్ స్పీకర్లు, ఇన్-ఇయర్ హెడ్ఫోన్స్, మొబైల్ ఫోన్లు, ల్యాప్టాప్లు… మన చుట్టూ చాలా బ్లూటూత్ పరికరాలు ఉన్నాయి మరియు ఈ పరికరాల్లో ఎక్కువ భాగం బ్యాటరీతో పనిచేస్తాయి. మీరు బ్లూటూత్ పరికరాన్ని మీ మొబైల్ ఫోన్కు కనెక్ట్ చేసినప్పుడు, కనెక్ట్ చేయబడిన పరికరం కంప్యూటర్ లేదా ఆడియో పరికరం లేదా మొబైల్ ఫోన్ అని స్వయంచాలకంగా ఎలా అర్థం చేసుకుంటుందని మీరు ఎప్పుడైనా ఆలోచిస్తున్నారా? కొన్ని పరికరాల కోసం నోటిఫికేషన్ బార్లో కనెక్ట్ చేయబడిన పరికరం యొక్క బ్యాటరీ శాతాన్ని మా ఫోన్ స్వయంచాలకంగా చూపిస్తుంది. ఇవన్నీ వారి స్వంతంగా ఎలా జరుగుతాయి? ఫోన్ మరియు బ్లూటూత్ పరికరం మధ్య కొన్ని సాధారణ ప్రోటోకాల్ భాగస్వామ్యం ఉండాలి!
ఆసక్తిగా ఉండండి , జనాదరణ పొందిన ESP32 మాడ్యూల్తో బ్లూటూత్ తక్కువ శక్తిని (సంక్షిప్తంగా BLE) అర్థం చేసుకోవడానికి మేము ప్రయత్నిస్తున్నప్పుడు ఈ ప్రశ్నలకు మీరు సమాధానాలు పొందుతారు. ESP32 లోని క్లాసిక్ బ్లూటూత్ మాదిరిగా కాకుండా, BLE ఒక కమ్యూనికేషన్ సక్రియం అయినప్పుడు మరియు స్లీప్ మోడ్లో ఉన్నప్పుడు మాత్రమే పనిచేస్తుంది, ఇది బ్యాటరీతో నడిచే అనువర్తనాలకు సరైన ఎంపిక అవుతుంది. BLE కూడా మెష్ నెట్వర్క్లను ఏర్పరుస్తుంది మరియు బీకాన్లుగా పనిచేస్తుంది. సాధారణంగా BLE గుణకాలు సర్వర్గా లేదా క్లయింట్గా పనిచేస్తాయి, ఇక్కడ మేము ESP32 BLE ని సర్వర్గా ఉపయోగిస్తాము.
ఇక్కడ మేము పూర్తి ESP32 బ్లూటూత్ను మూడు విభాగాలుగా విభజించాము.
1. మొబైల్ ఫోన్ నుండి LED ని టోగుల్ చేసే ESP32 పై సీరియల్ బ్లూటూత్
2 . GATT సేవను ఉపయోగించి మొబైల్ ఫోన్కు బ్యాటరీ స్థాయి డేటాను పంపడానికి BLE సర్వర్
3. BLE పరికరాలను స్కాన్ చేయడానికి మరియు బెకన్గా పనిచేయడానికి BLE క్లయింట్.
మేము ఇప్పటికే మొదటి వ్యాసాన్ని కవర్ చేసాము; ఈ వ్యాసంలో ESP32 BLE ను సర్వర్గా ఎలా పని చేయాలో నేర్చుకుంటాము మరియు బ్యాటరీ స్థాయి సమాచారాన్ని పంపడానికి GATT సేవను ఉపయోగిస్తాము. పరీక్షా ప్రయోజనం కోసం మేము BLE GATT సేవ ద్వారా ESP32 నుండి హార్డ్కోడ్ విలువలను మా మొబైల్ ఫోన్కు పంపుతాము, ఈ విధంగా మా మొబైల్ ESP32 బ్యాటరీతో పనిచేసే బ్లూటూత్ పరికరం అని అనుకుంటుంది, ఇది దాని బ్యాటరీ శాతానికి పంపడానికి ప్రయత్నిస్తుంది. వివరంగా వెళ్లేముందు బ్లూటూత్ లో ఎనర్జీకి సంబంధించిన కొన్ని పరిభాషలను మేము అర్థం చేసుకుంటాము.
BLE (బ్లూటూత్ లో ఎనర్జీ) కు సంబంధించిన పరిభాష
BLE సర్వర్: ముందే చెప్పినట్లుగా BLE ను సర్వర్గా లేదా క్లయింట్గా పనిచేయడానికి ప్రోగ్రామ్ చేయవచ్చు. సర్వర్గా పనిచేసేటప్పుడు BLE డేటాను మాత్రమే అందించగలదు అది కనెక్షన్ను ప్రారంభించదు. ఉదాహరణ ఫిట్నెస్ బ్యాండ్. క్లయింట్ దాని కోసం అభ్యర్థిస్తేనే సర్వర్ సమాచారాన్ని పంపగలదు.
సర్వసాధారణంగా ESP32 యొక్క BLE సర్వర్ ఉపయోగించబడుతుంది. ప్రతి సర్వర్ దానిలో ఒకటి లేదా అంతకంటే ఎక్కువ సేవలను కలిగి ఉంటుంది మరియు అదేవిధంగా ప్రతి సేవకు ఒకటి లేదా అంతకంటే ఎక్కువ లక్షణాలు ఉంటాయి. ఒక లక్షణం దానిలో సున్నా, ఒకటి లేదా అంతకంటే ఎక్కువ డిస్క్రిప్టర్ కలిగి ఉండవచ్చు. ప్రతి సేవ, లక్షణం లేదా డిస్క్రిప్టర్కు UUID అని పిలువబడే ముందుగా నిర్వచించిన ప్రత్యేక ID ఉంటుంది.
BLE క్లయింట్: క్లయింట్ కనెక్ట్ను స్కాన్ చేయవచ్చు మరియు ఇతర బ్లూటూత్ పరికరాలను వినవచ్చు. మీ మొబైల్ ఫోన్ ఒక ఉదాహరణ. చాలా BLE హార్డ్వేర్ పరికరాలు సర్వర్గా మరియు క్లయింట్గా పనిచేయగలవని గమనించండి, ఇది పరికరం యొక్క పాత్రను నిర్ణయించే సాఫ్ట్వేర్.
పరిధీయ పరికరం / సెంట్రల్ పరికరం: ఒక BLE నెట్వర్క్లో ఒకే ఒక కేంద్ర పరికరం మాత్రమే ఉండవచ్చు, కానీ అవసరమైనంత ఎక్కువ పరిధీయ పరికరాలను కలిగి ఉంటుంది. సెంట్రల్ పరికరం ఒకే సమయంలో అన్ని పరిధీయ పరికరాలకు కనెక్ట్ చేయగలదు, కాని పరిధీయ పరికరం సెంట్రల్ పరికరానికి మాత్రమే కనెక్ట్ చేయగలదు, ఈ విధంగా రెండు పరిధీయ పరికరాలు ఒకదానికొకటి డేటాను పంచుకోలేవు. సెంట్రల్ పరికరానికి మంచి ఉదాహరణ మా స్మార్ట్ ఫోన్లు మరియు పరిధీయ పరికరం మా బ్లూటూత్ ఇయర్ ఫోన్ లేదా ఫిట్నెస్ బ్యాండ్లు.
BLE అడ్వర్టైజింగ్: BLE అడ్వర్టైజింగ్ అనేది బ్లూటూత్ పరికరాన్ని అందరికీ కనిపించేలా సూచించడానికి గీకీ పదం, తద్వారా ఇది జత మరియు కనెక్షన్ను ఏర్పాటు చేస్తుంది.ఇది వన్ వే కమ్యూనికేషన్గా పరిగణించబడుతుంది. ఇక్కడ సర్వర్ స్వీకరించాలని ఆశిస్తూ ప్రకటనల డేటాను సర్వర్ ఉంచుతుంది. BLE బెకన్ ఒక రకమైన BLE.
UUID (యూనివర్సల్ యూనిక్ ఐడెంటిఫైయర్): ప్రతి BLE బ్లూటూత్ పరికరానికి ప్రోగ్రామర్ ప్రోగ్రామ్ చేసినప్పుడు యూనివర్సల్ యూనిక్ ఐడెంటిఫైయర్ నంబర్ ఇవ్వబడుతుంది. మీరు ఈ ఐడెంటిఫైయర్ను BLE పరికరం యొక్క కార్యాచరణ / పాత్రను సూచించే సంఖ్యల శ్రేణిగా భావించవచ్చు. మళ్ళీ UUID లో రెండు రకాలు ఉన్నాయి. ఒకటి సర్వీస్ యుయుఐడి, మరొకటి క్యారెక్టరిస్టిక్ యుయుఐడి.
GATT సేవ: GATT అంటే సాధారణ లక్షణ ప్రొఫైల్; ఇది రెండు BLE పరికరాలను ఎల్లప్పుడూ కమ్యూనికేట్ చేయవలసిన కొన్ని ప్రామాణిక మార్గాలను నిర్వచిస్తుంది. ఈ లక్షణం (ATT) ప్రోటోకాల్ ముందే నిర్వచించబడింది మరియు ఇది అన్ని BLE పరికరాలకు సాధారణం కాబట్టి ఈ విధంగా ఏదైనా రెండు BLE పరికరాలు ఒకదానికొకటి గుర్తించగలవు. కాబట్టి మా మునుపటి ప్రశ్నకు GATT సమాధానం.
రెండు BLE పరికరం డేటాను ముందుకు మరియు వెనుకకు పంపే సాంకేతికత సేవలు మరియు లక్షణాలు అనే భావన ద్వారా నిర్వచించబడుతుంది.
BLE సేవ / BLE లక్షణం: BLE పరికరం ఏ రకమైన సేవ చేయబోతోందో సేవా UUID మాకు చెబుతుంది మరియు ఆ సేవ ద్వారా నిర్వహించబడే పారామితులు లేదా విధులు ఏమిటో లక్షణ UUID చెబుతుంది. కాబట్టి ప్రతి సేవలో ఒకటి లేదా అంతకంటే ఎక్కువ లక్షణాలు ఉంటాయి. సరే! ప్రోగ్రామర్ ఈ UUID ను ఎక్కడ నుండి పొందుతాడు? ప్రతి UUID ఇప్పటికే GATT (జెనెరిక్ అట్రిబ్యూట్ ప్రొఫైల్) చేత నిర్వచించబడింది, మీరు వారి వెబ్సైట్ను సందర్శించి, ప్రాజెక్ట్ కోసం అవసరమైన విధంగా UUID ని ఎంచుకోవచ్చు. ఇది మా తలపై కొంచెం బౌన్స్ అయిందని నాకు తెలుసు; దానిని ఉదాహరణతో అర్థం చేసుకోవడానికి ప్రయత్నిద్దాం.
ఆడియో ప్లేయర్ యొక్క BLE పరికరాన్ని అనుకుందాం. ప్రారంభంలో మీరు దీన్ని మీ ఫోన్తో జత చేసినప్పుడు, మీ ఫోన్ దాన్ని ఆడియో పరికరంగా గుర్తిస్తుంది మరియు బ్యాటరీ స్థాయిని స్టేటస్ బార్లో ప్రదర్శిస్తుంది. కాబట్టి, ఇది జరగడానికి ఆడియో ప్లేయర్ మీ ఫోన్కు బ్యాటరీ స్థాయిని మరియు బ్యాటరీలో ఛార్జ్ శాతం పంచుకునేందుకు సిద్ధంగా ఉందని చెప్పాలి. ఇది UUID ని ఉపయోగించడం ద్వారా జరుగుతుంది, ఒక నిర్దిష్ట UUID ఉంది, ఇది BLE పాచికలు బ్యాటరీ స్థాయి గురించి వివరాలను అందించబోతున్నాయని ఈ UUID ని సేవా రకాన్ని సర్వీస్ UUID అంటారు , మళ్ళీ చాలా పారామితులు ఉండవచ్చు బ్యాటరీ విలువ అటువంటి పారామితిలో ఉన్నట్లుగా ఒక సేవను పూర్తి చేయడానికి మార్పిడి చేసుకోవాలి, ప్రతి పరామితికి దాని స్వంత UUID ఉంటుంది మరియు వీటిని లక్షణ UUID అంటారు .ఒక లక్షణం చేత చేయబడిన సాధారణ పని చదవడం, వ్రాయడం, తెలియజేయడం మరియు సూచించడం.
BLE డిస్క్రిప్టర్: డిస్క్రిప్టర్ అనేది ఐచ్ఛిక లక్షణం, ఇది లక్షణం లోపల ఉంటుంది. ఒక డిస్క్రిప్టర్ సాధారణంగా ఒక లక్షణాన్ని ఎలా యాక్సెస్ చేయాలో నిర్దేశిస్తుంది.
BLE బెకన్: బ్లూటూత్ బెకన్ సామీప్య స్విచ్ లాగా ఉంటుంది, ఇది వినియోగదారు పరిధిలోకి వచ్చినప్పుడు (ముందుగానే) కొంత ముందుగా నిర్వచించిన చర్యను చేస్తుంది. ఇది తన గుర్తింపును ఎప్పటికప్పుడు ప్రచారం చేస్తుంది మరియు అందువల్ల ఎల్లప్పుడూ జత చేయడానికి సిద్ధంగా ఉంది.
BLE2902: ఈ విషయం గురించి నాకు ఇంకా అనుమానం ఉంది, కాని మీరు క్లయింట్ వైపు ఉన్న సాఫ్ట్వేర్ ముక్కగా భావించవచ్చు, ఇది నోటిఫికేషన్ను ఆన్ లేదా ఆఫ్ చేయమని సర్వర్కు తెలియజేస్తుంది. ఇది శక్తిని ఆదా చేయడంలో మాకు సహాయపడుతుంది
మీకు కఠినమైన ఆలోచన వచ్చిందని ఆశిస్తున్నాము, గ్రంథాలయాలు అయినప్పటికీ అన్ని చేతిపని ఇప్పటికే మన కోసం పూర్తయినందున మాకు పెద్దగా తెలియదు.
హార్డ్వేర్ను సిద్ధం చేస్తోంది
ఈ ప్రాజెక్ట్కు హార్డ్వేర్ సెటప్ అవసరం లేదు, కానీ మీరు మీ ఆర్డునో IDE లో ESP32 బోర్డ్ వివరాలను జోడించారని మరియు ప్రతిదీ.హించిన విధంగా పనిచేస్తుందో లేదో తనిఖీ చేయడానికి కనీస నమూనా బ్లింక్ ప్రోగ్రామ్ను ప్రయత్నించారని నిర్ధారించుకోండి. దీన్ని ఎలా చేయాలో మీకు అనుమానం ఉంది, అదే విధంగా చేయటానికి ఆర్డునో ట్యుటోరియల్తో ESP32 తో ప్రారంభించడం అనుసరించండి.
BLE సేవలను పరీక్షించడానికి మేము మా మొబైల్లో nRF ఆండ్రాయిడ్ అప్లికేషన్ను ఉపయోగిస్తాము, వీటిని నేరుగా ప్లేస్టోర్ నుండి డౌన్లోడ్ చేసుకోవచ్చు. ఇది ఐఫోన్ వినియోగదారుల కోసం ఐట్యూన్స్ స్టోర్లో కూడా అందుబాటులో ఉంది. మీరు BLE తో ఎక్కువ కాలం పనిచేయాలని ఆలోచిస్తుంటే, డీబగ్గింగ్ ప్రయోజనాల కోసం ఈ అప్లికేషన్ నిజంగా ఉపయోగపడుతుంది.
GATT సేవను ఉపయోగించి బ్యాటరీ స్థాయి సూచిక కోసం ప్రోగ్రామింగ్ ESP32
ఈ సమయానికి మీకు GATT సేవ మరియు సేవ మరియు లక్షణ నమూనాలను ఉపయోగించి ఎలా అమలు చేయబడుతుందనే దానిపై మీకు సరైన ఆలోచన ఉందని నేను అనుకుంటాను. ఇప్పుడు, ఆర్డునో IDE ని ఉపయోగించి ESP32 లో ఇది ఎలా అమలు చేయబడుతుందో తెలుసుకోవడానికి ప్రోగ్రామ్లోకి ప్రవేశిద్దాం. మేము కొనసాగడానికి ముందు ఆండ్రియాస్ స్పైస్ తన వీడియో BLE కోసం కృతజ్ఞతలు చెప్పడానికి ఈ స్థలాన్ని ఉపయోగించాలనుకుంటున్నాను, ఇది నా వైపు చాలా స్పష్టంగా చెప్పింది.
అవసరమైన గ్రంథాలయాలను మా స్కెచ్లోకి దిగుమతి చేయడం ద్వారా మేము ప్రోగ్రామ్ను ప్రారంభిస్తాము. ESP32 యొక్క BLE కార్యాచరణను ఉపయోగించటానికి ఆకృతీకరించుటకు చాలా విషయాలు ఉన్నాయి, అయినప్పటికీ నీల్ కొల్బాన్ కృతజ్ఞతలు ఇప్పటికే మన కోసం కృషి చేసి, గ్రంథాలయాలను అందించారు. మీరు లైబ్రరీల కార్యాచరణను అర్థం చేసుకోవాలనుకుంటే, మీరు అతని డాక్యుమెంటేషన్ను గితుబ్ పేజీలో చూడవచ్చు.
# చేర్చండి
తరువాత మన బ్లూటూత్ పరికరం కోసం సర్వర్ కాల్-బ్యాక్ ఫంక్షన్ను నిర్వచించాలి. దీనికి ముందు BLE లో బ్యాక్ ఫంక్షన్ అంటే ఏమిటో అర్థం చేసుకోవచ్చు.
BLE లో బ్యాక్ ఫంక్షన్ అంటే ఏమిటి?
చేసినప్పుడు BLE సర్వర్ పనిచేస్తే అది ఒక సర్వర్ బ్యాక్ ఫంక్షన్ నిర్వచించే ముఖ్యం. BLE తో అనుబంధించబడిన అనేక రకాల కాల్బ్యాక్లు ఉన్నాయి, కానీ సరళంగా చెప్పాలంటే, చర్య పూర్తయిందని నిర్ధారించుకోవడానికి వీటిని ఒక రసీదుగా పరిగణిస్తారు. క్లయింట్ మరియు సర్వర్ మధ్య కనెక్షన్ విజయవంతంగా స్థాపించబడిందని నిర్ధారించడానికి సర్వర్ బ్యాక్ ఉపయోగించబడుతుంది.
సర్వర్ బ్యాక్బ్యాక్ చేయడానికి మేము ఈ క్రింది కోడ్ పంక్తులను ఉపయోగిస్తాము.
bool _BLEClientConnected = తప్పుడు; తరగతి MyServerCallbacks : పబ్లిక్ BLEServerCallbacks { void onConnect (BLEServer * pServer) { _BLEClientConnected = true; }; void onDisconnect (BLEServer * pServer) { _BLEClientConnected = తప్పుడు; } };
శూన్య సెటప్ ఫంక్షన్ లోపల, డీబగ్గింగ్ కోసం మేము 115200 వద్ద సీరియల్ కమ్యూనికేషన్ను ప్రారంభిస్తాము, ఆపై InitBLE ఫంక్షన్ ద్వారా బ్లూటూత్ పరికరాన్ని ప్రారంభిస్తాము.
void setup () { Serial.begin (115200); Serial.println ("బ్యాటరీ స్థాయి సూచిక - BLE"); InitBLE (); }
InitBLE మేజిక్ జరిగే అన్ని ప్రదేశం. మేము బ్లూటూత్ సర్వర్ని సృష్టించి, ఇక్కడ బ్యాటరీ స్థాయి సేవను ఉపయోగించాలి. కానీ దీనికి ముందు మేము బ్యాటరీ స్థాయిని చదవడానికి సేవ, లక్షణం మరియు వివరణ కోసం UUID ని నిర్వచించాలి. అన్ని UUID ను బ్లూటూత్ GATT సేవా వెబ్సైట్ నుండి పొందవచ్చు. మా విషయంలో మేము బ్యాటరీ సేవను ఉపయోగించటానికి ప్రయత్నిస్తున్నాము మరియు దాని కోసం UUID క్రింద చూపిన విధంగా 0X180F గా నిర్వచించబడింది.
తరువాత, ఈ సేవతో అనుబంధించబడిన లక్షణాన్ని మనం తెలుసుకోవాలి. బ్యాటరీ సేవపై క్లిక్ చేయండి మరియు మీరు సేవా లక్షణాల పేజీకి తీసుకెళ్లబడతారు, ఇక్కడ బ్యాటరీ స్థాయి లక్షణాల పేరు మరియు ఇది 0 నుండి 100 వరకు విలువను తీసుకుంటుందని ప్రస్తావించబడింది. అలాగే మనం రెండు మాత్రమే చేయగలమని గమనించండి ఈ లక్షణంతో చర్యలు, ఒకటి చదవడం తప్పనిసరి మరియు మరొకటి నోటిఫై ఇది ఐచ్ఛికం. కాబట్టి మేము బ్యాటరీ విలువను క్లయింట్ (ఫోన్) కు పంపాలి, ఇది తప్పనిసరి మరియు అవసరమైతే ఐచ్ఛికం గురించి ఫోన్కు తెలియజేయవచ్చు.
అయితే వేచి ఉండండి మేము ఇంకా లక్షణ బ్యాటరీ స్థాయికి UUID విలువను కనుగొనలేదు. అలా చేయడానికి బ్యాటరీ లక్షణాల పేజీలోకి ప్రవేశించి, బ్యాటరీ స్థాయి పేరు కోసం శోధించండి మీరు దాని UUID ని 0X2A19 గా కనుగొంటారు, దాని స్నాప్షాట్ క్రింద చూపబడింది.
ఇప్పుడు మనకు అన్ని విలువలు ఉన్నాయి, క్రింద చూపిన విధంగా ప్రోగ్రామ్ను ఉంచండి. పేరు BatterySerivce , BatteryLevelCharacteristic మరియు BatteryLevelDescriptor మేము ప్రోగ్రామ్ లో ఉపయోగిస్తున్న సర్వీస్, లక్షణం మరియు వర్ణన సూచించడానికి వినియోగదారు నిర్వచించిన వేరియబుల్స్ ఉన్నాయి. విలువ యొక్క పరిమాణం 8-బిట్ అయినప్పుడు డిస్క్రిప్టర్ 0X2901 కోసం విలువ ఉపయోగించబడుతుంది, మరింత సమాచారం డిస్క్రిప్టర్ వివరణ పేజీ చూడవచ్చు.
# బ్యాటరీ సేవ BLEUUID ని నిర్వచించండి ((uint16_t) 0x180F)
BLECharacteristic BatteryLevelCharacteristic (BLEUUID ((uint16_t) 0x2A19), BLECharacteristic :: PROPERTY_READ - BLECharacteristic :: PROPERTY_NOTIFY); BLEDescriptor BatteryLevelDescriptor (BLEUUID ((uint16_t) 0x2901%);
InitBLE ఫంక్షన్కు తిరిగి రావడం. మేము మొదట BLE సర్వర్ను ప్రారంభించి, పేరుతో ప్రకటన చేయవలసి ఉంటుంది. క్రింది పంక్తులు సర్వర్గా BLE ప్రారంభించడానికి ఉపయోగిస్తారు. నా BLe సర్వర్కు నేను ఇచ్చిన పేరు “BLE బ్యాటరీ”, కానీ మీరు మీ స్వంతంగా ఎంచుకోవచ్చు.
BLEDevice:: init ("BLE బ్యాటరీ"); // BLE సర్వర్ BLEServer ను సృష్టించండి * pServer = BLEDevice:: createServer (); pServer-> setCallbacks (క్రొత్త MyServerCallbacks ());
తరువాత మేము GUT సేవను ప్రారంభించాలి, ఎందుకంటే మేము ఇప్పటికే UUID ని నిర్వచించాము, ఈ క్రింది పంక్తిని ఉపయోగించి సేవను ప్రారంభించవచ్చు.
// BLE సేవ BLEService ని సృష్టించండి * pBattery = pServer-> createService (BatteryService);
సేవ ప్రారంభించిన తర్వాత మేము డిస్క్రిప్టర్ను లక్షణాలతో లింక్ చేయవచ్చు మరియు విలువలను సెట్ చేయవచ్చు. క్రింద చూపిన విధంగా BLE2902 సేవ కూడా ఇక్కడ జోడించబడింది.
pBattery-> addCharacteristic (& BatteryLevelCharacteristic); BatteryLevelDescriptor.setValue ("శాతం 0 - 100"); BatteryLevelCharacteristic.addDescriptor (& BatteryLevelDescriptor); BatteryLevelCharacteristic.addDescriptor (కొత్త BLE2902 ());
చివరగా ప్రతిదీ సెట్ చేయబడింది, ఇప్పుడు మిగిలి ఉన్నది ESP32 ను ప్రకటన చేయమని అడగడం, తద్వారా మా ఫోన్ వంటి ఇతర పరికరాలు దానిని కనుగొని దానికి కనెక్ట్ అవ్వగలవు మరియు క్లయింట్తో కనెక్ట్ అయినప్పుడు బ్యాటరీ సేవను ప్రారంభించాలి, అయినప్పటికీ ఇది చేయవచ్చు క్రింది పంక్తులు.
pServer-> getAd advertising () -> addServiceUUID (బ్యాటరీ సేవ); pBattery-> ప్రారంభం (); // ప్రకటనలను ప్రారంభించండి pServer-> getAd advertising () -> ప్రారంభం ();
ఇది ఇప్పటివరకు చాలా మంచిది, చివరి దశ క్లయింట్ (ఫోన్) కు పంపాల్సిన శాతంలో బ్యాటరీ విలువ ఏమిటో డిస్క్రిప్టర్కు చెప్పడం. ఈ విలువ 0 -100 నుండి మనం ఇంతకు ముందు చదివినట్లుగా ఉంటుంది, విషయాలు సరళంగా ఉంచడానికి, బ్యాటరీ విలువను 57 గా ఉండటానికి నేను హార్డ్ హార్డ్ కోడెడ్ చేసాను, ఆపై ప్రతి 5 సెకన్లకు పెంచండి మరియు 100 కి చేరుకున్న తర్వాత 0 నుండి ప్రారంభించండి. చేయవలసిన కోడ్ అది క్రింద చూపబడింది. పంపబడుతున్న విలువ యూనిట్ 8_t ఆకృతిలో ఉందని గమనించండి.
uint8_t స్థాయి = 57; void loop () { BatteryLevelCharacteristic.setValue (& స్థాయి, 1); BatteryLevelCharacteristic.notify (); ఆలస్యం (5000); స్థాయి ++; సీరియల్.ప్రింట్ల్న్ (పూర్ణాంకానికి (స్థాయి)); if (int (level) == 100) level = 0; }
ESP32 BLE లో మీ GATT సేవను పరీక్షిస్తోంది
పైన వివరించిన పూర్తి కోడ్ పేజీ చివర ఇవ్వబడుతుంది. మీ ESP32 బోర్డ్కు కోడ్ను అప్లోడ్ చేయండి. మీ ఫోన్ను అప్లోడ్ చేసిన తర్వాత దానితో “BLE బ్యాటరీ” పెయిర్ అనే బ్లూటూత్ పరికరాన్ని కనుగొనాలి.
అప్పుడు nRF ఆండ్రాయిడ్ అప్లికేషన్ను ఇన్స్టాల్ చేసి దాన్ని తెరిచి BLE బ్యాటరీ BLE పరికరానికి కనెక్ట్ చేయండి. బ్యాటరీ సేవా విభాగాన్ని విస్తరించండి మరియు మీరు ఈ క్రింది స్క్రీన్ను కనుగొనాలి.
మీరు చూడగలిగినట్లుగా, BLE బ్యాటరీ సేవను అందిస్తుంది మరియు బ్యాటరీ స్థాయి యొక్క లక్షణాలను కలిగి ఉందని అప్లికేషన్ స్వయంచాలకంగా గుర్తించింది ఎందుకంటే మేము ప్రోగ్రామ్లో ఉపయోగించిన UUID కారణంగా. ప్రస్తుత బ్యాటరీ విలువ 67% 5 సెకన్ల పాటు వేచి ఉండడాన్ని మీరు చూడవచ్చు మరియు అది పెరుగుతున్నట్లు మీరు గమనించవచ్చు.
BLE ని ఉపయోగించడం గురించి మంచి విషయం ఏమిటంటే, ఇప్పుడు BLE తో పనిచేసే ఏదైనా అప్లికేషన్ మీ ESP32 బ్యాటరీ స్థాయిని తెలియజేసే BLE పరికరం అని అనుకుంటుంది. దీన్ని ప్రయత్నించడానికి నేను బాటాన్ అనే అప్లికేషన్ను ఉపయోగించాను మరియు అప్లికేషన్ ESP32 ని బ్యాటరీతో నడిచే బ్లూటూత్ పరికరంగా గుర్తించింది మరియు నా ఫోన్లో శాతం నోటిఫికేషన్ను ఇచ్చింది
కూల్ !! సరియైనదా? నేను ఈ క్రింది వీడియోలో పూర్తి పనిని చూపించాను. ఇప్పుడు, మీరు ESP32 తో BLE బ్యాటరీ సేవలను ఎలా ఉపయోగించాలో నేర్చుకున్నారని, మీరు ఇతర GATT సేవలను కూడా ప్రయత్నించవచ్చు, ఇవి పల్స్ రేట్, HID, హార్ట్ రేట్ మొదలైనవి చాలా ఆసక్తికరంగా ఉంటాయి. ఆనందించండి….