- nRF52 డెవలప్మెంట్ కిట్:
- సెగ్గర్ ఎంబెడెడ్ స్టూడియో
- NRF52DK తో DHT11
- బ్లూటూత్ లో ఎనర్జీ (బిఎల్ఇ) తో ఎలా పని చేయాలి?
- BLE సేవ / లక్షణాల రేఖాచిత్రం
- nRF52 BLE ప్రోగ్రామ్ వివరణ
- NRF కనెక్ట్ ఉపయోగించి మా ప్రోగ్రామ్ను పరీక్షిస్తోంది
ఫిట్నెస్ బ్యాండ్లు, స్మార్ట్వాచ్లు మరియు ఇతర ధరించగలిగే పరికరాలతో బ్లూటూత్ 5 / బ్లూటూత్ లో ఎనర్జీ వాడకం బాగా ప్రాచుర్యం పొందింది.కమ్యూనికేషన్ ప్రమాణాలు విస్తృతంగా అనుసరించబడుతున్నాయి. చాలా తక్కువ శక్తితో తక్కువ దూరానికి డేటాను మార్పిడి చేయడానికి BLE మాకు సహాయపడుతుంది, ఇది ధరించగలిగినవి వంటి బ్యాటరీతో పనిచేసే పరికరాలకు చాలా కీలకం. వైర్లెస్ BLE మెష్ నెట్వర్క్లను సెటప్ చేయడానికి కూడా ఇది మాకు సహాయపడుతుంది, మూసివేసిన వాతావరణంలో బహుళ పరికరాలు ఒకదానితో ఒకటి సంభాషించుకోవాల్సిన ఇంటి ఆటోమేషన్ పరికరాల కోసం ఈ లక్షణం ఉపయోగపడుతుంది. మేము ఇప్పటికే కొన్ని ప్రాథమిక BLE విధులను నిర్వహించడానికి రాస్ప్బెర్రీ పైతో BLE మరియు ESP32 తో BLE ని ఉపయోగించాము. చిన్న బ్యాటరీలపై ఎక్కువసేపు పనిచేయగల పోర్టబుల్ వైర్లెస్ పరికరాలను రూపొందించడానికి ఇంజనీర్లు BLE తో ప్రయోగాలు చేస్తున్నారు మరియు, BLE తో పనిచేయడానికి బహుళ అభివృద్ధి వస్తు సామగ్రి అందుబాటులో ఉన్నాయి. Arduino నానో 33 పై మా ఇటీవలి సమీక్షలో, BLE సామర్థ్యాలతో బోర్డు nRF52840 ఉందని మేము గమనించాము.
ఈ ట్యుటోరియల్లో, BLE ని ఉపయోగించి ఉష్ణోగ్రత మరియు తేమను కొలవడానికి nRF52 DK అని పిలువబడే మరొక ఉత్తేజకరమైన మరియు ప్రసిద్ధ అభివృద్ధి బోర్డుని అన్వేషిస్తాము. అప్రమేయంగా, BLE ఎన్విరాన్మెంట్ సెన్సింగ్ ప్రొఫైల్స్ విస్తృతమైన పర్యావరణ పారామితులకు మద్దతు ఇస్తుంది, అయితే ఈ ట్యుటోరియల్ ఉష్ణోగ్రత మరియు తేమ విలువలకు మాత్రమే పరిమితం చేయబడింది. ఈ పరిష్కారం బ్లూటూత్ తక్కువ శక్తితో స్మార్ట్ఫోన్తో కలుపుతుంది మరియు పర్యావరణ పారామితులకు సంబంధించి తరచుగా నవీకరణను అందిస్తుంది, అంటే ఉష్ణోగ్రత, తేమ. మేము DHT1 సెన్సార్ను ఉపయోగిస్తాము మరియు ఉష్ణోగ్రత కొలత 0.01 డిగ్రీల సెల్సియస్ రిజల్యూషన్తో చేయబడుతుంది మరియు తేమ కొలత 0.01 శాతం రిజల్యూషన్తో చేయబడుతుంది.
nRF52 డెవలప్మెంట్ కిట్:
nRF52DK అనేది బ్లూటూత్ లో ఎనర్జీ మరియు 2.4 GHz వైర్లెస్ ఇంటర్నెట్ ఆఫ్ థింగ్స్ అప్లికేషన్ కోసం పూర్తి ప్రోటోటైపింగ్ ప్లాట్ఫాం. డెవలప్మెంట్ కిట్ ఓపెన్-సోర్స్, జిసిసి మరియు కైల్, ఐఎఆర్ మరియు సెగ్గర్ ఎంబెడెడ్ స్టూడియో వంటి వాణిజ్య ఇంటిగ్రేటెడ్ డెవలప్మెంట్ ఎన్విరాన్మెంట్స్ వంటి వివిధ ప్రామాణిక నార్డిక్ టూల్ చెయిన్లకు మద్దతు ఇస్తుంది. నార్డిక్ కూడా ఎన్ఆర్ఎఫ్ 52 కొరకు పూర్తి స్థాయి సాఫ్ట్వేర్ డెవలప్మెంట్ కిట్ను అందిస్తుంది, ఇందులో ఎన్ఆర్ఎఫ్ 52 డికెకు పూర్తి మద్దతు ఉంటుంది.
nRF52DK nRF52832 ARM కార్టెక్స్- M4F మైక్రోకంట్రోలర్తో పనిచేస్తుంది, ఇది 512Kbytes ఫ్లాష్ మెమర్తో మరియు 64 Kbytes SRAM తో అనుసంధానించబడి ఉంది. nRF52DK లో ఇంటిగ్రేటెడ్ సెగ్గర్ J- లింక్ ఆన్ బోర్డ్ డీబగ్గర్ ఉంది, ఇది బాహ్య / అదనపు jtag డీబగ్ పరికరాలు లేకుండా సులభమైన మరియు వేగవంతమైన డీబగ్గింగ్ను అందిస్తుంది. ఇందులో ఆర్డునో యునో రెవ్ 3 అనుకూల కనెక్టర్ కూడా ఉంది, ఇది మైక్రోప్రాసెసర్తో అనలాగ్ మరియు డిజిటల్ ఇన్పుట్లను ఇంటర్ఫేసింగ్ చేయడానికి మద్దతు ఇస్తుంది మరియు ఇందులో I2C (ఇంటర్-ఇంటిగ్రేటెడ్ సర్క్యూట్), SPI (సీరియల్ పెరిఫెరల్ ఇంటర్ఫేస్) మరియు UART (యూనివర్సల్ ఎసిన్క్రోనస్ రిసీవర్ మరియు ట్రాన్స్మిటర్) వంటి ప్రామాణిక కమ్యూనికేషన్ ప్రోటోకాల్లు కూడా ఉన్నాయి. ఈ అభివృద్ధి కిట్ స్మార్ట్ ఫోన్, ల్యాప్టాప్లు మరియు టాబ్లెట్లతో కనెక్ట్ కావడానికి బ్లూటూత్ లో ఎనర్జీని ఉపయోగించి స్వల్ప-శ్రేణి వైర్లెస్ కమ్యూనికేషన్ను అందించే ఇంటిగ్రేటెడ్ పిసిబి యాంటెన్నాతో రూపొందించబడింది.
సెగ్గర్ ఎంబెడెడ్ స్టూడియో
డెవలప్మెంట్ బోర్డ్ను ప్రోగ్రామ్ చేయడానికి, మేము nRF52 తో సెగ్గర్ ఎంబెడెడ్ స్టూడియోని ఉపయోగిస్తాము. సెగ్గర్ ఎంబెడెడ్ స్టూడియో అనేది శక్తివంతమైన సి / సి ++ ఇంటిగ్రేటెడ్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ (ఐడిఇ), ఇది ఎంబెడెడ్ సిస్టమ్స్ డెవలప్మెంట్ కోసం ప్రత్యేకంగా లక్ష్యంగా ఉంది. ఇది ఎంబెడెడ్ సి ప్రోగ్రామింగ్, డెవలప్మెంట్ మరియు డీబగ్గింగ్కు అవసరమైన ప్రతిదాన్ని కలిగి ఉన్న పూర్తి ఆల్ ఇన్ వన్ పరిష్కారాన్ని అందిస్తుంది. ఇది ఎంబెడెడ్ సిస్టమ్స్ ప్రోగ్రామింగ్ మరియు డెవలప్మెంట్ కోసం పూర్తి వర్క్ఫ్లో ఉంటుంది, ఇది ప్రాజెక్ట్ మేనేజ్మెంట్, ఎడిటర్, డీబగ్గర్ సపోర్టింగ్ ARM కార్టెక్స్ పరికరాలతో ఉంటుంది. ఈ శక్తివంతమైన మరియు ఉపయోగించడానికి సులభమైన IDE ఎటువంటి కోడ్ పరిమాణ పరిమితులు లేకుండా పూర్తి లైసెన్స్ ఉన్న నోర్డిక్ కస్టమర్లకు పూర్తిగా ఉచితం. దిగువ ఇచ్చిన లింక్ నుండి IDE ని డౌన్లోడ్ చేసుకోవచ్చు,
సెగ్గర్ ఎంబెడెడ్ స్టూడియోని డౌన్లోడ్ చేయండి
NRF52DK తో DHT11
DHT11 అనేది నిరోధక రకం తేమ కొలత భాగం మరియు NTC రకం ఉష్ణోగ్రత కొలత భాగం కలిగిన పూర్తి-లక్షణ ఉష్ణోగ్రత మరియు తేమ సెన్సార్. ఇది అద్భుతమైన నాణ్యత, వేగవంతమైన ప్రతిస్పందన మరియు ఖర్చు-ప్రభావాన్ని అందిస్తుంది. అప్రమేయంగా, అన్ని DHT11 సెన్సార్లు ప్రయోగశాలలో క్రమాంకనం చేయబడతాయి, ఇది తీవ్ర ఖచ్చితత్వం మరియు విశ్వసనీయతకు దారితీస్తుంది. ఇది సింగిల్-వైర్ సీరియల్ ఇంటర్ఫేస్ వ్యవస్థను ఉపయోగించి కమ్యూనికేట్ చేస్తుంది మరియు ఇతర లక్షణాలు క్రింద ఇవ్వబడ్డాయి
DHT11 యొక్క లక్షణాలు:
- తేమ పరిధి: 20 - 90% RH
- ఉష్ణోగ్రత పరిధి: 0 - 50-డిగ్రీల సెల్సియస్
- తేమ ఖచ్చితత్వం: ± 5 RH
- ఉష్ణోగ్రత ఖచ్చితత్వం: ± 2
DHT11 యొక్క సమయ రేఖాచిత్రం:
పైన చూపిన టైమింగ్ రేఖాచిత్రాన్ని ఉపయోగించి DHT11 సెన్సార్ నుండి డేటాను చదవడం చాలా సులభం. ఈ విధానం ఏదైనా నియంత్రికతో సమానంగా ఉంటుంది మరియు మేము ఇప్పటికే ఈ సెన్సార్ను ఇతర అభివృద్ధి ప్లాట్ఫారమ్లతో ఉపయోగించాము
- రాస్ప్బెర్రీ పైతో DHT11 సెన్సార్
- PIC16F877A తో DHT11 సెన్సార్
- STM32F103C8 తో DHT11 సెన్సార్
- NodeMCU తో DHT11 సెన్సార్
DRT11 ఉష్ణోగ్రత మరియు తేమ సెన్సార్ను nRF52 డెవలప్మెంట్ కిట్తో ఇంటర్ఫేస్ చేయడానికి, క్రింద ఇచ్చిన కనెక్షన్ రేఖాచిత్రాన్ని అనుసరించండి.
సెన్సార్ను నా బోర్డుకి కనెక్ట్ చేయడానికి నేను కనెక్టర్ మాడ్యూల్ను ఉపయోగిస్తున్నాను, కాబట్టి నా చివరి సెటప్ ఇలా కనిపిస్తుంది
DHT11 తో కమ్యూనికేట్ చేయడానికి ఫ్లో చార్ట్:
దిగువ ఫ్లో చార్ట్ nRF52DK మరియు DHT11 మధ్య కమ్యూనికేట్ చేయడానికి మేము ఉపయోగించే ప్రోగ్రామ్ లాజికల్ ఫ్లోను వివరిస్తుంది
డేటా ఫార్మాట్:
బ్లూటూత్ లో ఎనర్జీ (బిఎల్ఇ) తో ఎలా పని చేయాలి?
BLE లక్షణాన్ని ఎలా ఉపయోగించాలో అర్థం చేసుకోవడానికి, మేము క్రింద వివరించిన కొన్ని ప్రాథమిక పరిభాషలను అర్థం చేసుకోవాలి, BLE గురించి మరింత తెలుసుకోవడానికి మీరు ESP32 BLE కథనాన్ని కూడా చదవవచ్చు
సాధారణ యాక్సెస్ ప్రొఫైల్ (GAP)
జెనెరిక్ యాక్సెస్ ప్రొఫైల్ BLE పరిధీయ మరియు సెంట్రల్ పరికరాల మధ్య కమ్యూనికేషన్ కోసం కనెక్షన్ను ఏర్పాటు చేసే పూర్తి బాధ్యతను కలిగి ఉంది. పరికర స్కానింగ్ / డిస్కవరీ, లింక్-లేయర్ కనెక్షన్ స్థాపన, లింక్ ముగింపు, భద్రతా లక్షణాల హ్యాండ్షేకింగ్ మరియు పూర్తి స్థాయి పరికర కాన్ఫిగరేషన్తో సహా వివిధ విధానాలను కూడా GAP అందిస్తుంది. GAP కింది పరికర స్థితుల్లో పనిచేస్తుంది
GAP స్టేట్స్ |
వివరణ |
స్టాండ్బై |
రీసెట్ చేసిన తర్వాత పరికర ప్రారంభ స్థితి |
ప్రకటనదారు |
ఇనిషియేటర్ స్కానింగ్కు సహాయపడే డేటాతో పరికర ప్రకటన |
స్కానర్ |
ప్రకటనదారుకు స్కాన్ అభ్యర్థనను స్వీకరిస్తుంది మరియు పంపుతుంది |
ఇనిషియేటర్ |
లింక్ను స్థాపించడానికి కనెక్షన్ అభ్యర్థనను పంపుతుంది |
బానిస / మాస్టర్ |
కనెక్షన్లో, ప్రకటనదారు అయితే బానిసగా పరికరం, ఇనిషియేటర్ అయితే మాస్టర్ |
సాధారణ లక్షణ ప్రొఫైల్ లేయర్ (GATT)
జెనరిక్ అట్రిబ్యూట్ ప్రొఫైల్ లేయర్ కోసం GATT చిన్నది, ఇది రెండు BLE పరికరాల (పెరిఫెరల్ & సెంట్రల్) మధ్య డేటా కమ్యూనికేషన్కు బాధ్యత వహిస్తుంది. డేటా కమ్యూనికేషన్ లక్షణాల రూపంలో వర్గీకరించబడుతుంది, ఇది డేటాను కమ్యూనికేట్ చేస్తుంది మరియు నిల్వ చేస్తుంది. దిగువ ఇచ్చిన పరికర కమ్యూనికేషన్ కోసం BLE పరికరం రెండు వేర్వేరు పాత్రలను పోషిస్తుంది,
- GATT సర్వర్ లక్షణాల సమాచారాన్ని కలిగి ఉంది, ఇది చదవడానికి మరియు వ్రాయడానికి ఉపయోగించబడుతుంది. మా ట్యుటోరియల్లో, DHT11 సెన్సార్ మరియు దేవ్. కిట్ మా GATT సర్వర్.
- GATT క్లయింట్ / నుండి GATT సర్వర్కు డేటాను చదువుతుంది మరియు వ్రాస్తుంది. స్మార్ట్ఫోన్ GATT క్లయింట్, ఇది మా సెన్సార్ బోర్డ్లో డేటాను చదివి వ్రాస్తుంది.
బ్లూటూత్ SIG
బ్లూటూత్ స్పెషల్ ఇంటరెస్ట్ గ్రూప్ (SIG) అనేది బ్లూటూత్ ప్రమాణాల అభివృద్ధిని మరియు బ్లూటూత్ టెక్నాలజీలకు లైసెన్స్ ఇచ్చే ప్రమాణాల సంస్థ. SIG సమూహం ఏ బ్లూటూత్ ఉత్పత్తులను ఉత్పత్తి చేయదు లేదా అమ్మదు. ఇది బ్లూటూత్ స్పెసిఫికేషన్ మరియు ప్రామాణీకరణను నిర్వచిస్తుంది. వారు బ్లూటూత్ తక్కువ శక్తి ప్రొఫైల్ మరియు సంబంధిత లక్షణాల కోసం ప్రత్యేక ఐడెంటిఫైయర్ను నిర్వచించారు. GATT ప్రొఫైల్ లక్షణాలు క్రింది లింక్ వద్ద చూడవచ్చు
GATT ప్రొఫైల్ లక్షణాలు
పై లింక్లో ఇచ్చిన GATT స్పెసిఫికేషన్ ఆధారంగా, మా ప్రాజెక్ట్కు అవసరమైన ప్రత్యేకమైన ఐడెంటిఫైయర్లను మేము సేకరించాము, ఇది క్రింద ఇవ్వబడింది.
ప్రొఫైల్ / లక్షణాలు |
UUID |
GAP (జెనరిక్ యాక్సెస్) |
0x1800 |
GATT (సాధారణ లక్షణం) |
0x1801 |
ESS (ఎన్విరాన్మెంట్ సెన్సింగ్) |
0x181A |
ఉష్ణోగ్రత |
0x2A6E |
తేమ |
0x2A6F |
BLE సేవ / లక్షణాల రేఖాచిత్రం
BLE UUID లు
UUID |
16 బిట్ విలువ |
128 బిట్ UUID |
ESS సేవ |
0x181A |
0000181A-0000-0000-0000-00000000000 |
టెంప్ చార్ |
0x2A6E |
00002A6E-0000-0000-0000-00000000000 |
తేమ చార్ |
0x2A6F |
00002A6F-0000-0000-0000-00000000000 |
ఉష్ణోగ్రత లక్షణాలు
ఆస్తి |
వివరణ |
యూనిట్ |
0.01 డిగ్రీల రిజల్యూషన్తో డిగ్రీ సెల్సియస్ |
ఫార్మాట్ |
sint16 |
UUID |
0x2A6E |
దశాంశ ఘాతాంకం |
2 |
చదవండి |
తప్పనిసరి |
తేమ లక్షణాలు
ఆస్తి |
వివరణ |
యూనిట్ |
0.01 శాతం రిజల్యూషన్తో శాతం |
ఫార్మాట్ |
uint16 |
UUID |
0x2A6F |
దశాంశ ఘాతాంకం |
2 |
చదవండి |
తప్పనిసరి |
nRF52 BLE ప్రోగ్రామ్ వివరణ
మా nRF52 డెవలప్మెంట్ కిట్ను ప్రోగ్రామ్ చేయడానికి మేము nRF5 SDK ని ఉపయోగిస్తాము. nRF5 SDK అనేది అనేక బ్లూటూత్ లో ఎనర్జీ ప్రొఫైల్స్, GATT సీరియలైజర్ మరియు nRF5 సిరీస్ SoC లలో అన్ని పెరిఫెరల్స్ కొరకు డ్రైవర్ మద్దతుతో అనుసంధానించబడిన పూర్తి సాఫ్ట్వేర్ డెవలప్మెంట్ కిట్. ఈ SDK డెవలపర్లకు nRF52 మరియు nRF51 సిరీస్ మైక్రోకంట్రోలర్లతో పూర్తి-ఫీచర్, నమ్మకమైన మరియు సురక్షితమైన బ్లూటూత్ తక్కువ శక్తి అనువర్తనాలను రూపొందించడానికి సహాయపడుతుంది. పూర్తి ప్రోగ్రామ్ను ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవచ్చు, కోడ్ వివరణ ఈ క్రింది విధంగా ఉంటుంది.
పుల్ అప్ ఎనేబుల్ తో nrf52 వద్ద DHT11 DATA పిన్ను ఇన్పుట్గా కాన్ఫిగర్ చేయండి. DHT11 డేటా పిన్కు nRF52 సరైన PULLUP ను అందిస్తుందని నిర్ధారించడానికి పిన్ స్థితి ఎక్కువగా ఉండాలి
/ * ఇన్పుట్కు సెట్ చేసి, సిగ్నల్ పైకి లాగబడిందో లేదో తనిఖీ చేయండి * / Data_SetInput (); DelayUSec (50); if (Data_GetVal () == 0) {తిరిగి DHT11_NO_PULLUP; }
NRF52 మైక్రోకంట్రోలర్ నుండి START సిగ్నల్ను రూపొందించండి మరియు గుర్తించే సిగ్నల్ కోసం తనిఖీ చేయండి.
/ * ప్రారంభ సిగ్నల్ పంపండి * / డేటా_సెట్ఆట్పుట్ (); డేటా_ClrVal (); DelayMSec (20); / * కనీసం 18 ఎంఎస్ల వరకు సిగ్నల్ తక్కువగా ఉంచండి * / డేటా_సెట్ఇన్పుట్ (); DelayUSec (50); / * గుర్తించే సిగ్నల్ కోసం తనిఖీ చేయండి * / if (Data_GetVal ()! = 0) {/ * సిగ్నల్ సెన్సార్ చేత తక్కువగా లాగబడాలి * / తిరిగి DHT11_NO_ACK_0; సెన్సార్ నుండి అక్ సిగ్నల్ కోసం max / * గరిష్టంగా 100 మాకు వేచి ఉండండి * / cntr = 18; అయితే (Data_GetVal () == 0) signal / * సిగ్నల్ పెరిగే వరకు వేచి ఉండండి * / DelayUSec (5); if (--cntr == 0) {తిరిగి DHT11_NO_ACK_1; / * సిగ్నల్ ఇక్కడ ACK కోసం ఉండాలి * /} * / * అది మళ్ళీ దిగిపోయే వరకు వేచి ఉండండి, అక్ సీక్వెన్స్ ముగింపు * / cntr = 18; అయితే (Data_GetVal ()! = 0) signal / * సిగ్నల్ తగ్గే వరకు వేచి ఉండండి * / DelayUSec (5); if (--cntr == 0) {తిరిగి DHT11_NO_ACK_0; / * సిగ్నల్ ఇక్కడ మళ్ళీ సున్నాకి ఉండాలి * /}}
ఇప్పుడు 2 బైట్ల ఉష్ణోగ్రత, 2 బైట్ల తేమ మరియు 1 చెక్సమ్ కలిగి ఉన్న 40 బిట్స్ డేటాను చదవండి.
/ * ఇప్పుడు 40 బిట్ డేటాను చదవండి * / i = 0; డేటా = 0; loopBits = 40; చేయండి {cntr = 11; / * గరిష్టంగా 55 మాకు వేచి ఉండండి * / అయితే (డేటా_గెట్వాల్ () == 0) {ఆలస్యంసెక్ (5); if (--cntr == 0) {తిరిగి DHT11_NO_DATA_0; }} cntr = 15; / * గరిష్టంగా 75 మాకు వేచి ఉండండి * / అయితే (డేటా_గెట్వాల్ ()! = 0) {ఆలస్యంసెక్ (5); if (--cntr == 0) {తిరిగి DHT11_NO_DATA_1; <} డేటా << = 1; / * తదుపరి డేటా బిట్ * / if (cntr <10) {/ * డేటా సిగ్నల్ హై> 30 మాకు ==> డేటా బిట్ 1 * / డేటా - = 1; } if ((loopBits & 0x7) == 1) {/ * తదుపరి బైట్ * / బఫర్ = డేటా; i ++; డేటా = 0; }} ఉండగా (- లూప్బిట్స్! = 0);
చెక్సమ్ సహాయంతో డేటాను ధృవీకరించండి.
/ * పరీక్ష CRC * / if ((uint8_t) (బఫర్ + బఫర్ + బఫర్ + బఫర్)! = బఫర్) {తిరిగి DHT11_BAD_CRC; }
ఉష్ణోగ్రత మరియు తేమను మార్చండి మరియు నిల్వ చేయండి
/ * కాలర్ కోసం డేటా విలువలను నిల్వ చేయండి * / తేమ = ((పూర్ణాంకానికి) బఫర్) * 100 + బఫర్; ఉష్ణోగ్రత = ((పూర్ణాంకానికి) బఫర్) * 100 + బఫర్;
NRF5 SDK లాగర్ సేవను ప్రారంభించండి. nRF52 SDK లాగింగ్ కంట్రోల్ ఇంటర్ఫేస్తో nrf_log అని పిలువబడుతుంది మరియు సమాచారాన్ని లాగిన్ చేయడానికి డిఫాల్ట్ బ్యాకెండ్ను ఉపయోగిస్తుంది. డిఫాల్ట్ బ్యాకెండ్ సీరియల్ పోర్ట్ అవుతుంది. ఇక్కడ మేము nrf_log కంట్రోల్ ఇంటర్ఫేస్ మరియు nrf_log డిఫాల్ట్ బ్యాకెండ్ రెండింటినీ ప్రారంభిస్తాము.
ret_code_t err_code = NRF_LOG_INIT (NULL); APP_ERROR_CHECK (తప్పు_కోడ్); NRF_LOG_DEFAULT_BACKENDS_INIT ();
nRF52 SDK అప్లికేషన్ టైమర్ కార్యాచరణను కలిగి ఉంది. అప్లికేషన్ టైమర్ మాడ్యూల్ RTC1 పరిధీయ ఆధారంగా బహుళ టైమర్ ఉదంతాలను సృష్టించడానికి అనుమతిస్తుంది. ఇక్కడ మేము nRF5 అప్లికేషన్ టైమర్ మాడ్యూల్ను ప్రారంభిస్తాము. ఈ పరిష్కారంలో, రెండు అప్లికేషన్ టైమర్లు ఉపయోగించబడతాయి మరియు డేటా నవీకరణ విరామం.
ret_code_t err_code = app_timer_init (); APP_ERROR_CHECK (తప్పు_కోడ్);
కాయిన్ సెల్ బ్యాటరీలో BLE పరికరాలు బహుళ నెలలు పని చేయాల్సిన అవసరం ఉన్నందున nRF52 SDK కి పూర్తి ఫీచర్ పవర్ మేనేజ్మెంట్ మాడ్యూల్ ఉంది. BLE అనువర్తనాలలో శక్తి నిర్వహణ కీలక పాత్ర పోషిస్తుంది. nRF52 పవర్ మేనేజ్మెంట్ మాడ్యూల్ పూర్తిగా అదే నిర్వహిస్తుంది. ఇక్కడ మేము nRF5 SDK యొక్క పవర్ మేనేజ్మెంట్ మాడ్యూల్ను ప్రారంభిస్తాము
ret_code_t err_code; err_code = nrf_pwr_mgmt_init (); APP_ERROR_CHECK (తప్పు_కోడ్);
nRF52 SDK లో అంతర్నిర్మిత నార్డిక్ సాఫ్ట్ డివైస్ ఫర్మ్వేర్ హెక్స్ ఫైల్ ఉంది, దీనిలో బ్లూటూత్ తక్కువ ఎనర్జీ సెంట్రల్ మరియు పెరిఫెరల్ స్టాక్ ఉన్నాయి. ఈ అత్యంత అర్హత కలిగిన ప్రోటోకాల్ స్టాక్లో GATT, GAP, ATT, SM, L2CAP మరియు లింక్ లేయర్ ఉన్నాయి. ఇక్కడ మేము ప్రారంభించిన క్రమాన్ని అనుసరిస్తాము, అది ప్రారంభించిన nRF5 BLE రేడియో స్టాక్ (నార్డిక్ సాఫ్ట్ డివైస్)
ret_code_t err_code; err_code = nrf_sdh_enable_request (); APP_ERROR_CHECK (తప్పు_కోడ్); // డిఫాల్ట్ సెట్టింగులను ఉపయోగించి BLE స్టాక్ను కాన్ఫిగర్ చేయండి. // అప్లికేషన్ RAM యొక్క ప్రారంభ చిరునామాను పొందండి. uint32_t రామ్_స్టార్ట్ = 0; err_code = nrf_sdh_ble_default_cfg_set (APP_BLE_CONN_CFG_TAG, & ram_start); APP_ERROR_CHECK (తప్పు_కోడ్); // BLE స్టాక్ను ప్రారంభించండి. err_code = nrf_sdh_ble_enable (& ram_start); APP_ERROR_CHECK (తప్పు_కోడ్); // BLE ఈవెంట్ల కోసం హ్యాండ్లర్ను నమోదు చేయండి. NRF_SDH_BLE_OBSERVER (m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
పరికర స్కానింగ్ / డిస్కవరీ, లింక్ స్థాపన, లింక్ ముగింపు, భద్రతా లక్షణాల ప్రారంభం మరియు కాన్ఫిగరేషన్కు GAP బాధ్యత వహిస్తుంది. కనెక్షన్ విరామం, బానిస జాప్యం, పర్యవేక్షణ సమయం ముగియడం వంటి కీ కనెక్షన్ పారామితులతో GAP ఫీచర్ చేయబడింది. జెనెరిక్ యాక్సెస్ ప్రొఫైల్ కనెక్షన్ పారామితులను ప్రారంభించే హెరెవిత్
ret_code_terr_code; ble_gap_conn_params_tgap_conn_params; ble_gap_conn_sec_mode_t sec_mode; BLE_GAP_CONN_SEC_MODE_SET_OPEN (& sec_mode); err_code = sd_ble_gap_device_name_set (& sec_mode, ( const uint8_t *) DEVICE_NAME, strlen (DEVICE_NAME)); APP_ERROR_CHECK (తప్పు_కోడ్); memset (& gap_conn_params, 0, sizeof (gap_conn_params)); gap_conn_params.min_conn_interval = MIN_CONN_INTERVAL; gap_conn_params.max_conn_interval = MAX_CONN_INTERVAL; gap_conn_params.slave_latency = SLAVE_LATENCY; gap_conn_params.conn_sup_timeout = CONN_SUP_TIMEOUT; err_code = sd_ble_gap_ppcp_set (& gap_conn_params); APP_ERROR_CHECK (తప్పు_కోడ్);
BLE పరిధీయ మరియు కేంద్ర పరికరాల మధ్య డేటా కమ్యూనికేషన్కు GATT బాధ్యత వహిస్తుంది. nRF52 GATT మాడ్యూల్ గరిష్ట ATT_MTU పరిమాణాన్ని చర్చించడానికి మరియు ట్రాక్ చేయడానికి సహాయపడుతుంది. ఇక్కడ మేము nRF52 SDK జెనరిక్ అట్రిబ్యూట్ మాడ్యూల్, ret_code_t err_code = nrf_ble_gatt_init (& m_gatt, NULL); APP_ERROR_CHECK (తప్పు_కోడ్);
GATT సేవలు మరియు లక్షణాల రూపంలో డేటా కమ్యూనికేషన్ చేస్తుంది. ఇక్కడ మేము GATT ఎన్విరాన్మెంట్ సెన్సింగ్ సేవలను ప్రారంభిస్తాము, ఇందులో ఉష్ణోగ్రత మరియు తేమ వంటి లక్షణాల ప్రారంభం ఉంటుంది.
ret_code_terr_code; nrf_ble_qwr_init_t qwr_init = {0}; // క్యూడ్ రైట్ మాడ్యూల్ను ప్రారంభించండి. qwr_init.error_handler = nrf_qwr_error_handler; err_code = nrf_ble_qwr_init (& m_qwr, & qwr_init); APP_ERROR_CHECK (తప్పు_కోడ్); m_ess.notif_write_handler = ble_ess_notif_write_handler; err_code = ble_ess_init (& m_ess); APP_ERROR_CHECK (తప్పు_కోడ్);
BLE అప్లికేషన్ వాతావరణంలో ప్రకటనలు కీలక పాత్ర పోషిస్తాయి. ప్యాకెట్లలో చిరునామా రకం, ప్రకటనల రకం, ప్రకటనల డేటా, పరికర తయారీదారు-నిర్దిష్ట డేటా మరియు స్కాన్ ప్రతిస్పందన డేటా ఉన్నాయి. nRF52 SDK ఒక ప్రకటన మాడ్యూల్తో ఫీచర్ చేయబడింది. ఇక్కడ మేము పారామితులతో ప్రకటన మాడ్యూల్ యొక్క ప్రారంభాన్ని చేస్తాము.
ret_code_terr_code; ble_advdata_t advdata; ble_advdata_t srdata; ble_uuid_t adv_uuids = {{ESS_UUID_SERVICE, BLE_UUID_TYPE_BLE}}; // ప్రకటనల డేటాను రూపొందించండి మరియు సెట్ చేయండి. memset (& advdata, 0, sizeof (advdata)); advdata.name_type = BLE_ADVDATA_FULL_NAME; advdata.include_appearance = నిజం; advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE; memset (& srdata, 0, sizeof (srdata)); srdata.uuids_complete.uuid_cnt = sizeof (adv_uuids) / sizeof (adv_uuids); srdata.uuids_complete.p_uuids = adv_uuids; err_code = ble_advdata_encode (& advdata, m_adv_data.adv_data.p_data, & m_adv_data.adv_data.len); APP_ERROR_CHECK (తప్పు_కోడ్); err_code = ble_advdata_encode (& srdata, m_adv_data.scan_rsp_data.p_data, & m_adv_data.scan_rsp_data.len); APP_ERROR_CHECK (తప్పు_కోడ్); ble_gap_adv_params_t adv_params; // ప్రకటన పారామితులను సెట్ చేయండి. memset (& adv_params, 0, sizeof (adv_params)); adv_params.primary_phy = BLE_GAP_PHY_1MBPS; adv_params.duration = APP_ADV_DURATION; adv_params.properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED; adv_params.p_peer_addr = NULL; adv_params.filter_policy = BLE_GAP_ADV_FP_ANY; adv_params.interval = APP_ADV_INTERVAL; err_code = sd_ble_gap_adv_set_configure (& m_adv_handle, & m_adv_data, & adv_params); APP_ERROR_CHECK (తప్పు_కోడ్);
మొదటి కనెక్షన్ పారామ్ల నవీకరణ ఆలస్యం, తదుపరి వరుస ఆలస్యం, నవీకరణ గణన, కనెక్షన్ ఈవెంట్ హ్యాండ్లర్ బ్యాక్బ్యాక్ ఫంక్షన్ మరియు కనెక్షన్ లోపం బ్యాక్బ్యాక్ ఈవెంట్ హ్యాండ్లర్ వంటి వివిధ కనెక్షన్ పారామితులతో BLE కనెక్షన్ నిర్వహించబడుతుంది మరియు పర్యవేక్షించబడుతుంది. ఇక్కడ మేము ప్రారంభించడం BLE కనెక్షన్ స్థాపన పారామితులు మరియు కనెక్షన్ సంఘటనలు మరియు దోష సంఘటనల కోసం బ్యాక్ ఈవెంట్ హ్యాండ్లర్.
ret_code_terr_code; ble_conn_params_init_t cp_init; memset (& cp_init, 0, sizeof (cp_init)); cp_init.p_conn_params = NULL; cp_init.first_conn_params_update_delay = FIRST_CONN_PARAMS_UPDATE_DELAY; cp_init.next_conn_params_update_delay = NEXT_CONN_PARAMS_UPDATE_DELAY; cp_init.max_conn_params_update_count = MAX_CONN_PARAMS_UPDATE_COUNT; t_on_notify_cccd_handle = BLE_GATT_HANDLE_INVALID; cp_init.disconnect_on_fail = తప్పుడు; cp_init.evt_handler = on_conn_params_evt; cp_init.error_handler = conn_params_error_handler; err_code = ble_conn_params_init (& cp_init); APP_ERROR_CHECK (తప్పు_కోడ్);
సిస్టమ్ ప్రారంభించడం పూర్తయిన తరువాత, ఇక్కడ మేము BLE పరికరం పేరు మరియు సామర్థ్య సమాచారాన్ని ప్రకటించడం ద్వారా ప్రారంభిస్తాము. ఇక్కడ నుండి, ఈ పరిధీయతను స్మార్ట్ఫోన్ బ్లే స్కాన్ జాబితాలో చూడవచ్చు.
ret_code_terr_code; err_code = sd_ble_gap_adv_start (m_adv_handle, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK (తప్పు_కోడ్);
ప్రధాన లూప్ 2 సెకన్ల వ్యవధిలో నడుస్తుంది, చదవడం లేదా నోటిఫికేషన్ ఉపయోగించి కనెక్ట్ చేయబడిన స్మార్ట్ పరికరానికి ఉష్ణోగ్రత & తేమ మరియు నవీకరణలను చదవండి
(;;) { uint16_t ఉష్ణోగ్రత, తేమ; DHTxx_ErrorCode dhtErrCode; idle_state_handle (); if (updatetmrexp) { dhtErrCode = DHTxx_Read (& ఉష్ణోగ్రత, & తేమ); if (dhtErrCode == DHT11_OK) { NRF_LOG_INFO ("ఉష్ణోగ్రత:% d తేమ:% d \ n", ఉష్ణోగ్రత, తేమ); if (temp_notif_enabled) { ble_ess_notify_temp (m_conn_handle, & m_ess, ఉష్ణోగ్రత); } else { ble_ess_update_temp (& m_ess, ఉష్ణోగ్రత); } if (humid_notif_enabled) { ble_ess_notify_humid (m_conn_handle, & m_ess, తేమ); } else { ble_ess_update_humid (& m_ess, తేమ); } } updatetmrexp = తప్పుడు; } }
NRF కనెక్ట్ ఉపయోగించి మా ప్రోగ్రామ్ను పరీక్షిస్తోంది
nRF కనెక్ట్ అనేది శక్తివంతమైన బ్లూటూత్ తక్కువ శక్తి సాధనం, ఇది BLE ప్రారంభించబడిన పెరిఫెరల్స్ ను స్కాన్ చేయడానికి మరియు అన్వేషించడానికి అనుమతిస్తుంది. మొబైల్ కోసం nRF కనెక్ట్ బ్లూటూత్ SIG స్వీకరించిన ప్రామాణిక ప్రొఫైల్లకు విస్తృత మద్దతు ఇస్తుంది. దీన్ని ఉపయోగించడం ద్వారా మేము మా ప్రోగ్రామ్ను ధృవీకరించవచ్చు, అనువర్తనాన్ని ఇన్స్టాల్ చేసిన తర్వాత, అనువర్తనంలోని BLE పరికరాల కోసం స్కాన్ చేయడం ద్వారా nRF52 బోర్డ్ను మా ఫోన్తో జత చేయవచ్చు. ఎన్విరాన్మెంటల్ సెన్సింగ్ లక్షణం లోపల, ఈ క్రింది చిత్రాలలో చూపిన విధంగా ఉష్ణోగ్రత మరియు తేమ విలువలు నవీకరించబడటం మనం గమనించవచ్చు.
హరిహరన్ వీరప్పన్ స్వతంత్ర కన్సల్టెంట్, ఎంబెడెడ్ ఉత్పత్తి అభివృద్ధిలో 15 సంవత్సరాల కంటే ఎక్కువ అనుభవం ఉంది. అతను ఎంబెడెడ్ ఫర్మ్వేర్ / లైనక్స్ అభివృద్ధిలో కన్సల్టింగ్ సేవలను అందిస్తాడు, అతను కార్పొరేట్ మరియు ఆన్లైన్ శిక్షణను కూడా ఇస్తాడు. హరిహరన్ ఎలక్ట్రానిక్స్ & కమ్యూనికేషన్ ఇంజనీరింగ్ విభాగంలో బ్యాచిలర్ ఆఫ్ ఇంజనీరింగ్ పట్టా పొందారు, తన వ్యాసాలు మరియు ట్యుటోరియల్స్ ద్వారా సర్క్యూట్ డైజెస్ట్ పాఠకులతో తన అనుభవాన్ని మరియు ఆలోచనలను పంచుకుంటాడు.