- ముందస్తు అవసరాలు
- పదార్థాలు అవసరం
- హార్డ్వేర్
- మీ బ్లూటూత్ చిరునామా సర్వర్ (ఫిట్నెస్ బ్యాండ్ చిరునామా) పొందండి
- సర్వర్ యొక్క సేవ మరియు లక్షణ UUID ని పొందడం
- సామీప్య స్విచ్ అప్లికేషన్ కోసం క్లయింట్గా పనిచేయడానికి ESP32 ను ప్రోగ్రామింగ్ చేస్తోంది
- పని మరియు పరీక్ష
మీరు మీ ఇంటిలోకి ప్రవేశించిన వెంటనే లైట్లను స్వయంచాలకంగా ఆన్ చేసి, మీరు బయలుదేరినప్పుడు దాన్ని మళ్ళీ ఆపివేయడం ఎంత బాగుంది! అవును, ఒక సాధారణ అనువర్తనం మీ కోసం దీన్ని చేయగలదు. ఇక్కడ ఈ ప్రాజెక్ట్లో, మేము ESP32 ను BLE క్లయింట్గా మరియు ఫిట్నెస్ బ్యాండ్ను BLE సర్వర్గా ఉపయోగిస్తాము, కాబట్టి ఫిట్నెస్ బ్యాండ్ ధరించిన వ్యక్తి ESP32 బ్లూటూత్ పరిధిలో వచ్చినప్పుడల్లా, ESP32 దాన్ని గుర్తించి లైట్ను ఆన్ చేస్తుంది. BLE సర్వర్ సామర్థ్యాలను కలిగి ఉన్న ఏదైనా బ్లూటూత్ పరికరాలను ESP32 ఉపయోగించి ఏదైనా గృహోపకరణాలను నియంత్రించడానికి ట్రిగ్గర్ పరికరంగా ఉపయోగించవచ్చు.
మేము ఇప్పటికే ESP32 మాడ్యూల్ యొక్క BLE (బ్లూటూత్ లో ఎనర్జీ) కార్యాచరణలను అన్వేషించాము మరియు నేను చాలా ఆశ్చర్యపోయాను. రీక్యాప్ ఇవ్వడానికి, ఈ మాడ్యూల్ క్లాసిక్ బ్లూటూత్ మరియు బ్లూటూత్ లో ఎనర్జీ (బిఎల్ఇ) రెండింటినీ కలిగి ఉంది, క్లాసిక్ బ్లూటూత్ పాటలు లేదా ఫైళ్ళను బదిలీ చేయడానికి ఉపయోగించవచ్చు మరియు బ్లూటూత్ బీకాన్లు, ఫిట్నెస్ బ్యాండ్లు, సామీప్యత లు వంటి బ్యాటరీ ఆప్టిమైజ్ చేసిన అనువర్తనాల కోసం బిఎల్ఇ ఎంపికను ఉపయోగించవచ్చు., మొదలైనవి సాధారణ మైక్రోకంట్రోలర్ ప్రాజెక్టుల కోసం HC-05 లేదా HC-06 మాడ్యూల్స్ వంటి సీరియల్ బ్లూటూత్గా ఉపయోగించడం కూడా సాధ్యమే.
మీకు తెలిసినట్లుగా ESP32 BLE రెండు వేర్వేరు రీతుల్లో పనిచేయగలదు. ఒకటి బ్యాటరీ స్థాయి సూచిక సేవను అనుకరించడానికి GATT సేవను ఉపయోగించడం ద్వారా మేము ఇప్పటికే చర్చించిన సర్వర్ మోడ్. ఆ వ్యాయామంలో, ESP32 సర్వర్గా మరియు మా మొబైల్ ఫోన్ క్లయింట్గా పనిచేసింది. ఇప్పుడు, ESP32 ను క్లయింట్గా ఆపరేట్ చేద్దాం మరియు నా ఫిట్నెస్ బ్యాండ్ వంటి ఇతర BLE సర్వర్లకు కనెక్ట్ చేయడానికి ప్రయత్నిద్దాం.
నా ఫిట్నెస్ బ్యాండ్తో సహా అన్ని BLE సర్వర్లు స్థిరమైన ప్రకటనల మోడ్లో ఉన్నాయి, అవి క్లయింట్ స్కాన్ చేసినప్పుడు వాటిని ఎల్లప్పుడూ కనుగొనవచ్చు. ఈ లక్షణాన్ని పెంచడం ద్వారా మేము ఈ ఫిట్నెస్ బ్యాండ్లను సామీప్య స్విచ్గా ఉపయోగించవచ్చు, అంటే ఈ ఫిట్నెస్ బ్యాండ్లు ఎల్లప్పుడూ యూజర్ చేతితో ముడిపడి ఉంటాయి మరియు బ్యాండ్ కోసం స్కాన్ చేయడం ద్వారా వ్యక్తి పరిధిలో ఉంటే మేము గుర్తించగలం. ఈ వ్యాసంలో మనం చేయబోయేది ఇదే. మేము BLE క్లయింట్గా పనిచేయడానికి ESP32 ను ప్రోగ్రామ్ చేస్తాము మరియు BLE పరికరాల కోసం నిరంతరం స్కానింగ్ చేస్తాము; మేము ఫిట్నెస్ బ్యాండ్ను పరిధిలో కనుగొంటే, దానికి కనెక్ట్ చేయడానికి ప్రయత్నిస్తాము మరియు కనెక్షన్ విజయవంతమైతే , ESP32 లోని GPIO పిన్లలో ఒకదాన్ని టోగుల్ చేయడం ద్వారా లైట్ బల్బును ప్రారంభించవచ్చు. ప్రతి BLE సర్వర్ ఎందుకంటే పద్ధతి నమ్మదగినది(ఫిట్నెస్ బ్యాండ్) ప్రత్యేకమైన హార్డ్వేర్ ఐడిని కలిగి ఉంటుంది కాబట్టి రెండు BLE సర్వర్ పరికరాలు ఒకేలా ఉండవు. ఆసక్తికరంగా ఉందా? !!! ఇప్పుడు, భవనం తీసుకుందాం
ముందస్తు అవసరాలు
ఈ వ్యాసంలో, ESP32 ట్యుటోరియల్తో ప్రారంభించడానికి వెనక్కి తగ్గకపోతే, ఆర్డునో IDE తో ESP32 బోర్డ్ను ఎలా ఉపయోగించాలో మీకు ఇప్పటికే తెలిసిందని నేను అనుకుంటాను.
మేము సులభంగా అర్థం చేసుకోవడానికి పూర్తి ESP32 బ్లూటూత్ను మూడు విభాగాలుగా విభజించాము. కాబట్టి దీనితో ప్రారంభించే ముందు మొదటి రెండు ట్యుటోరియల్స్ ద్వారా వెళ్ళమని సిఫార్సు చేయబడింది.
- మొబైల్ ఫోన్ నుండి LED ని టోగుల్ చేసే ESP32 లో సీరియల్ బ్లూటూత్
- GATT సేవను ఉపయోగించి మొబైల్ ఫోన్కు బ్యాటరీ స్థాయి డేటాను పంపడానికి BLE సర్వర్
- BLE క్లయింట్ BLE పరికరాల కోసం స్కాన్ చేసి, ఒక బెకన్గా పనిచేస్తుంది.
మేము ఇప్పటికే మొదటి రెండు ట్యుటోరియల్లను కవర్ చేసాము, ఇక్కడ మేము ESP32 ను BLE క్లయింట్గా వివరించడానికి చివరిదానితో ముందుకు వెళ్తున్నాము.
పదార్థాలు అవసరం
- ESP32 అభివృద్ధి బోర్డు
- ఎసి లోడ్ (లాంప్)
- రిలే మాడ్యూల్
హార్డ్వేర్
ఈ ESP32 BLE క్లయింట్ ప్రాజెక్ట్ కోసం హార్డ్వేర్ చాలా సాదాసీదాగా ఉంటుంది, ఎందుకంటే చాలా మేజిక్ కోడ్ లోపల జరుగుతుంది. బ్లూటూత్ సిగ్నల్ కనుగొనబడినప్పుడు లేదా పోయినప్పుడు ESP32 AC దీపం (లోడ్) టోగుల్ చేయాలి. ఈ లోడ్ను టోగుల్ చేయడానికి మేము రిలేను ఉపయోగిస్తాము మరియు ESP32 యొక్క GPIO పిన్లు 3.3V మాత్రమే అనుకూలంగా ఉంటాయి కాబట్టి మనకు రిలే మాడ్యూల్ అవసరం, అది 3.3V తో నడపబడుతుంది. బిసి 548 అయితే రిలే మాడ్యూల్లో ట్రాన్సిస్టర్ ఏమి ఉపయోగించబడుతుందో తనిఖీ చేయండి.
హెచ్చరిక: సర్క్యూట్ ప్రత్యక్ష 220 వి ఎసి మెయిన్స్ వోల్టేజ్తో వ్యవహరిస్తుంది. లైవ్ వైర్లతో జాగ్రత్తగా ఉండండి మరియు మీరు షార్ట్ సర్క్యూట్ సృష్టించలేదని నిర్ధారించుకోండి. మీకు హెచ్చరిక జరిగింది.
BC547 లేదా 2N2222 కన్నా BC548 ను ఉపయోగించటానికి కారణం, అవి తక్కువ బేస్-ఉద్గారిణి వోల్టేజ్ కలిగి ఉండటం, ఇది కేవలం 3.3V తో మాత్రమే ప్రేరేపించబడుతుంది. ఇక్కడ ఉపయోగిస్తారు రిలే ఒక 5V రిలే ఉంది మేము 5V విద్యుత్ కేబుల్ ఏర్పాటు తీసుకుంటున్న విన్ పిన్ తో శక్తి కాబట్టి. గ్రౌండ్ పిన్ సర్క్యూట్ యొక్క భూమికి అనుసంధానించబడి ఉంది. నిరోధకం R1 1K ఒక బేస్ ప్రస్తుత పరిమితిగా నిరోధకం వలె ఉపయోగిస్తారు. దశ వైర్ రిలే యొక్క NO పిన్తో అనుసంధానించబడి ఉంది మరియు రిలే యొక్క కామన్ పిన్ లోడ్తో అనుసంధానించబడి ఉంది మరియు లోడ్ యొక్క మరొక చివర తటస్థానికి అనుసంధానించబడి ఉంది. మీరు దశ మరియు తటస్థ స్థానాన్ని మార్చుకోవచ్చు కాని మీరు వాటిని నేరుగా తగ్గించకుండా జాగ్రత్త వహించండి. ప్రస్తుత ఎల్లప్పుడూ లోడ్ (బల్బ్) గుండా ఉండాలి .విషయాలు సరళంగా ఉంచడానికి నేను రిలే మాడ్యూల్ను ఉపయోగించాను మరియు ఇక్కడ లోడ్ ఫోకస్ LED దీపం. నా సెటప్ క్రింద ఇలా ఉంది
మీరు ఇప్పుడు హార్డ్వేర్ను దాటవేయాలనుకుంటే, మీరు ESP32 లో ఆన్-బోర్డ్ LED ని టోగుల్ చేయడానికి GPIO 13 పిన్కు బదులుగా GPIO 2 పిన్ని ఉపయోగించవచ్చు. ప్రారంభకులకు ఈ పద్ధతి సిఫార్సు చేయబడింది.
మీ బ్లూటూత్ చిరునామా సర్వర్ (ఫిట్నెస్ బ్యాండ్ చిరునామా) పొందండి
ఇంతకు ముందే చెప్పినట్లుగా, మేము క్లయింట్గా (ఫోన్ మాదిరిగానే) పనిచేయడానికి ESP32 ను ప్రోగ్రామ్ చేయబోతున్నాము మరియు నా ఫిట్నెస్ బ్యాండ్ (లెనోవా HW-01) అయిన సర్వర్కు కనెక్ట్ అవ్వండి. క్లయింట్ సర్వర్కు కనెక్ట్ కావాలంటే సర్వర్ యొక్క బ్లూటూత్ చిరునామాను తెలుసుకోవాలి. ఇక్కడ నా ఫిట్నెస్ బ్యాండ్ వంటి ప్రతి బ్లూటూత్ సర్వర్కు దాని స్వంత ప్రత్యేకమైన బ్లూటూత్ చిరునామా ఉంది, ఇది శాశ్వతంగా ఉంటుంది. మీరు దీన్ని మీ ల్యాప్టాప్ లేదా మొబైల్ ఫోన్ యొక్క MAC చిరునామాతో సంబంధం కలిగి ఉండవచ్చు.
ఈ చిరునామాను పొందడానికి, మేము మా మునుపటి ట్యుటోరియల్ కోసం ఇప్పటికే ఉపయోగించిన నార్డిక్ సెమీ కండక్టర్ల నుండి nRF కనెక్ట్ అనే అనువర్తనాన్ని ఉపయోగిస్తాము. ఇది 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 ద్వారా కాంతిని టోగుల్ చేస్తుంది. బాగా సరే! !, కానీ దానితో ఒక సమస్య ఉంది. అన్ని BLE సర్వర్లు 10 మీటర్ల పరిధిని కలిగి ఉంటాయి, ఇది కొంచెం ఎక్కువ. కాబట్టి మేము తలుపు తెరిచిన కాంతిని ఆన్ చేయడానికి సామీప్య స్విచ్ చేయడానికి ప్రయత్నిస్తుంటే ఈ పరిధి చాలా ఎక్కువ.
BLE సర్వర్ యొక్క పరిధిని తగ్గించడానికి మేము జత చేసే ఎంపికను ఉపయోగించవచ్చు. రెండూ 3-4 మీటర్ల దూరంలో ఉంటేనే BLE సర్వర్ మరియు క్లయింట్ జతచేయబడతాయి. ఇది మా అనువర్తనానికి ఖచ్చితంగా సరిపోతుంది. కాబట్టి, మేము ESP32 ను BLE సర్వర్ను కనుగొనటానికి మాత్రమే కాకుండా దానికి కనెక్ట్ అయ్యేలా చేస్తాము మరియు అది జతగా ఉందో లేదో చూసుకోవాలి. అవి జత చేసినంత కాలం ఎసి దీపం అలాగే ఉంటుంది, శ్రేణి జత దాటినప్పుడు పోతుంది మరియు దీపం ఆపివేయబడుతుంది. దీన్ని చేయటానికి పూర్తి ESP32 BLE ఉదాహరణ ప్రోగ్రామ్ ఈ పేజీ చివరిలో ఇవ్వబడింది. ఇక్కడ క్రింద, నేను కోడ్ను చిన్న స్నిప్పెట్లుగా విడదీసి వాటిని వివరించడానికి ప్రయత్నిస్తాను.
హెడర్ ఫైల్ను చేర్చిన తరువాత, పైన పేర్కొన్న శీర్షికలలో వివరించిన విధంగా nRF కనెక్ట్ అప్లికేషన్ ఉన్నప్పటికీ మేము పొందిన BLE చిరునామా, సేవ మరియు లక్షణం UUID గురించి ESP32 కు తెలియజేస్తాము. కోడ్ క్రింద కనిపిస్తుంది
స్టాటిక్ BLEUUID serviceUUID ("0000fee7-0000-1000-8000-00805f9b34fb"); // nRF కనెక్ట్ అప్లికేషన్ స్టాటిక్ BLEUUID charUUID ("0000fee7-0000-1000-8000-00805f9b34fb") ద్వారా పొందిన ఫిట్నెస్బ్యాండ్ యొక్క సర్వీస్ UUID ; // nRF కనెక్ట్ అప్లికేషన్ ద్వారా పొందిన ఫిట్నెస్బ్యాండ్ యొక్క లక్షణ UUID స్ట్రింగ్ My_BLE_Address = "c7: f0: 69: f0: 68: 81"; // నా ఫిట్నెస్బ్యాండ్ యొక్క హార్డ్వేర్ బ్లూటూత్ MAC, nRF కనెక్ట్ అప్లికేషన్ ద్వారా పొందిన ప్రతి బ్యాండ్కు మారుతుంది
ఆ కార్యక్రమంలో మనకు కనెక్ట్టోసర్వర్ మరియు మైఅడ్వర్టైజ్డ్ డెవిస్కాల్బ్యాక్ ఉన్నాయి, వీటిని మనం తరువాత తిరిగి పొందుతాము . సెటప్ ఫంక్షన్ లోపల, మేము సీరియల్ మానిటర్ను ప్రారంభిస్తాము మరియు పరికరం కోసం స్కాన్ చేయడానికి ESP పై BLE ని తయారు చేస్తాము. ప్రతి BLE పరికరానికి స్కాన్ పూర్తయిన తర్వాత MyAdvertisedDeviceCallbacks అనే ఫంక్షన్ కనుగొనబడింది.
మేము ESP32 ను మెయిన్స్ శక్తితో శక్తివంతం చేస్తున్నందున మేము క్రియాశీల స్కాన్ను కూడా ప్రారంభిస్తాము, బ్యాటరీ అనువర్తనం కోసం ప్రస్తుత వినియోగాన్ని తగ్గించడానికి ఇది ఆపివేయబడుతుంది. రిలే ట్రిగ్గర్ పిన్ మా హార్డ్వేర్లో GPIO 13 కి కనెక్ట్ చేయబడింది, కాబట్టి GPIO పిన్ 13 అవుట్పుట్గా కూడా ప్రకటిస్తాము.
void setup () { Serial.begin (115200); // సీరియల్ మానిటర్ను ప్రారంభించండి Serial.println ("ESP32 BLE సర్వర్ ప్రోగ్రామ్"); // పరిచయ సందేశం BLEDevice:: init (""); pBLEScan = BLEDevice:: getScan (); // క్రొత్త స్కాన్ను సృష్టించండి pBLEScan-> setAdvertisedDeviceCallbacks (క్రొత్త MyAdvertisedDeviceCallbacks ()); // పైన నిర్వచించిన తరగతికి కాల్ చేయండి pBLEScan-> setActiveScan (true); // క్రియాశీల స్కాన్ ఎక్కువ శక్తిని ఉపయోగిస్తుంది, కాని ఫలితాలను వేగంగా పొందండి పిన్మోడ్ (13, OUTPUT); // అంతర్నిర్మిత LED పిన్ను అవుట్పుట్గా ప్రకటించండి }
MyAdvertisedDeviceCallbacks ఫంక్షన్ లోపల, మేము కనుగొన్న BLE పరికరాల పేరు మరియు ఇతర సమాచారాన్ని జాబితా చేసే పంక్తిని ప్రింట్ చేస్తాము. కనుగొనబడిన BLE పరికరం యొక్క హార్డ్వేర్ ID మాకు అవసరం, తద్వారా దాన్ని కావలసిన దానితో పోల్చవచ్చు. కాబట్టి మేము పరికరం యొక్క చిరునామాను పొందడానికి వేరియబుల్ Server_BLE_Address ను ఉపయోగిస్తాము మరియు దానిని BLEAddress రకం నుండి స్ట్రింగ్ గా మార్చడానికి కూడా ఉపయోగిస్తాము.
తరగతి MyAdvertisedDeviceCallbacks: పబ్లిక్ BLEAdvertisedDeviceCallbacks { శూన్యమైన ఫలితం (BLEAdvertisedDevice అడ్వర్టైజ్డ్ డెవిస్) { Serial.printf ("స్కాన్ ఫలితం:% s \ n", అడ్వర్టైజ్డ్ డెవిస్.టో స్ట్రింగ్ (). c_str ()); సర్వర్_బిఎల్_అడ్డ్రెస్ = క్రొత్త BLEAddress (అడ్వర్టైజ్డ్ డెవిస్.గెట్అడ్రెస్ ()); స్కాన్_బిఎల్_అడ్డ్రెస్ = సర్వర్_బిఎల్_అడ్డ్రెస్-> టు స్ట్రింగ్ (). సి_స్ట్రా (); } };
లూప్ ఫంక్షన్ లోపల, మేము 3 సెకన్లపాటు స్కాన్ చేసి, ఫలితాన్ని BLEScanResults నుండి వచ్చిన వస్తువు అయిన foundDevices లోపల ఉంచాము. స్కాన్ చేయడం ద్వారా ఒకటి లేదా అంతకంటే ఎక్కువ పరికరాలను మేము కనుగొంటే, మేము కనుగొన్న BLE చిరునామా ప్రోగ్రామ్లో నమోదు చేసిన పరికరంతో సరిపోతుందో లేదో తనిఖీ చేయడం ప్రారంభిస్తాము. మ్యాచ్ సానుకూలంగా ఉంటే మరియు పరికరం ఇంతకు ముందు జత చేయకపోతే, కనెక్ట్టోసర్వర్ ఫంక్షన్ను ఉపయోగించి దానితో పార్సింగ్ చేయడానికి ప్రయత్నిస్తాము. అర్థం చేసుకోవడానికి మేము కొన్ని సీరియల్ స్టేట్మెంట్లను కూడా ఉపయోగించాము.
అయితే (foundDevices.getCount ()> = 1) { if (Scaned_BLE_Address == My_BLE_Address && జత == తప్పుడు) { Serial.println ("దొరికిన పరికరం: -)… సర్వర్కు క్లయింట్గా కనెక్ట్ అవుతోంది "); if (connectToserver (* Server_BLE_Address)) {
ConnectToserver ఫంక్షన్ లోపల మేము BLE సర్వర్ (ఫిట్నెస్ బ్యాండ్) తో జత చేయడానికి UUID ని ఉపయోగిస్తాము. సర్వర్తో కనెక్ట్ అవ్వడానికి, ESP32 క్లయింట్గా పనిచేయాలి, కాబట్టి మేము క్రియేట్ క్లయింట్ () ఫంక్షన్ను ఉపయోగించి క్లయింట్ను సృష్టించి, ఆపై BLE సర్వర్ చిరునామాకు కనెక్ట్ చేస్తాము . అప్పుడు మేము UUID విలువలను ఉపయోగించి సేవ మరియు లక్షణం కోసం శోధిస్తాము మరియు దానికి కనెక్ట్ చేయడానికి ప్రయత్నించండి. కనెక్షన్ విజయవంతం అయినప్పుడు ఫంక్షన్ నిజమైనది మరియు కాకపోతే అది తప్పుడును అందిస్తుంది. సర్వర్తో జత చేయడానికి సేవ మరియు లక్షణం UUID కలిగి ఉండటం తప్పనిసరి కాదని గమనించండి, ఇది మీ అవగాహన కోసం మాత్రమే జరుగుతుంది.
bool connectToserver (BLEAddress pAddress) { BLEClient * pClient = BLEDevice:: createClient (); Serial.println ("- క్లయింట్ సృష్టించబడింది"); // BLE సర్వర్కు కనెక్ట్ అవ్వండి. pClient-> కనెక్ట్ (pAddress); Serial.println ("- ఫిట్నెస్బ్యాండ్కు కనెక్ట్ చేయబడింది"); // రిమోట్ BLE సర్వర్లో మేము చేస్తున్న సేవకు సూచనను పొందండి. BLERemoteService * pRemoteService = pClient-> getService (serviceUUID); if (pRemoteService! = nullptr) { Serial.println ("- మా సేవ కనుగొనబడింది"); నిజమైన తిరిగి; } else తప్పుడు తిరిగి; // రిమోట్ BLE సర్వర్ యొక్క సేవలోని లక్షణానికి సూచనను పొందండి. pRemoteCharacteristic = pRemoteService->getCharacteristic (charUUID); if (pRemoteCharacteristic! = nullptr) Serial.println ("- మా లక్షణం కనుగొనబడింది"); నిజమైన తిరిగి; }
కనెక్షన్ విజయవంతమైతే GPIO పిన్ 13 అధికంగా తయారవుతుంది మరియు బ్రేక్ స్టేట్మెంట్ ఉపయోగించి నియంత్రణ లూప్ వెలుపల పంపబడుతుంది. జత చేసిన బూలియన్ వేరియబుల్ కూడా నిజమని సెట్ చేయబడింది.
if (connectToserver (* Server_BLE_Address)) { జత = నిజం; Serial.println ("******************** LED ఆన్ చేయబడింది ********************** ** "); డిజిటల్ రైట్ (13, హై); విచ్ఛిన్నం; }
జత చేయడం విజయవంతమై, GPIO పిన్ ఆన్ చేసిన తర్వాత, పరికరం ఇంకా పరిధిలో ఉందో లేదో తనిఖీ చేయాలి. ఇప్పుడు, పరికరం జత చేయబడినందున, BLE స్కాన్ సేవ ఇకపై చూడలేరు. వినియోగదారు ఆ ప్రాంతాన్ని విడిచిపెట్టినప్పుడే మేము దాన్ని మళ్ళీ కనుగొంటాము. కాబట్టి మనం BLE సర్వర్ కోసం స్కాన్ చేయాలి మరియు మేము కనుగొంటే క్రింద చూపిన విధంగా GPIO పిన్ను తక్కువకు సెట్ చేయాలి
if (Scaned_BLE_Address == My_BLE_Address && జత == true) { సీరియల్. println ("మా పరికరం పరిధికి మించిపోయింది "); జత = తప్పుడు; క్రమ. println ("******************** LED OOOFFFFF ************************"); డిజిటల్ రైట్ (13, తక్కువ); ESP.restart (); విచ్ఛిన్నం; }
పని మరియు పరీక్ష
మీరు ప్రోగ్రామ్ మరియు హార్డ్వేర్ సెటప్తో సిద్ధమైన తర్వాత, కోడ్ను ESP32 కు అప్లోడ్ చేయండి మరియు క్రింద చూపిన విధంగా మొత్తం సెటప్ను ఏర్పాటు చేయండి.
మీరు గమనించే ఉండాలి లాంప్ ESP32 తో వెంటనే ఫిట్నెస్ బ్యాండ్ గా (సర్వర్) జతల ఆన్ విధానం. ఫిట్నెస్ బ్యాండ్లోని కనెక్షన్ బ్లూటూత్ చిహ్నాన్ని గమనించడం ద్వారా మీరు దీన్ని తనిఖీ చేయవచ్చు. జత చేసిన తర్వాత ESP32 నుండి దూరంగా నడవడానికి ప్రయత్నించండి మరియు మీరు 3-4 మీటర్లు దాటినప్పుడు వాచ్లోని బ్లూటూత్ గుర్తు అదృశ్యమై కనెక్షన్ పోతుందని మీరు గమనించవచ్చు. ఇప్పుడు, మీరు దీపం చూస్తే అది ఆపివేయబడుతుంది. మీరు పరికరంలో తిరిగి నడిచినప్పుడు మళ్లీ జతచేయబడుతుంది మరియు కాంతి ఆన్ అవుతుంది. ప్రాజెక్ట్ యొక్క పూర్తి పనిని ఈ క్రింది వీడియోలో చూడవచ్చు.
మీరు ప్రాజెక్ట్ను ఆస్వాదించారని మరియు మార్గంలో క్రొత్తదాన్ని నేర్చుకున్నారని ఆశిస్తున్నాము. మీరు పని చేయడంలో ఏదైనా సమస్యను ఎదుర్కొన్నట్లయితే, సమస్యను ఫోరమ్లలో లేదా దిగువ వ్యాఖ్య విభాగంలో పోస్ట్ చేయడానికి సంకోచించకండి