- nRF52 மேம்பாட்டு கிட்:
- செகர் உட்பொதிக்கப்பட்ட ஸ்டுடியோ
- NRF52DK உடன் DHT11
- புளூடூத் லோ எனர்ஜி (பி.எல்.இ) உடன் எவ்வாறு செயல்படுவது?
- BLE சேவை / பண்புகள் வரைபடம்
- nRF52 BLE நிரல் விளக்கம்
- NRF இணைப்பைப் பயன்படுத்தி எங்கள் நிரலைச் சோதிக்கிறது
உடற்தகுதி பட்டைகள், ஸ்மார்ட்வாட்ச்கள் மற்றும் அணியக்கூடிய பிற சாதனங்கள் புளூடூத் 5 / புளூடூத் குறைந்த ஆற்றலின் பயன்பாடு பெருகிய முறையில் பிரபலமடைகின்றனதகவல்தொடர்பு தரங்கள் பரவலாக ஏற்றுக்கொள்ளப்படுகின்றன. மிகக் குறைந்த சக்தியுடன் குறுகிய தூரத்திற்கு தரவைப் பரிமாறிக் கொள்ள BLE உதவுகிறது, இது அணியக்கூடியவை போன்ற பேட்டரி மூலம் இயக்கப்படும் சாதனங்களுக்கு மிகவும் முக்கியமானது. வயர்லெஸ் பி.எல்.இ மெஷ் நெட்வொர்க்குகளை அமைக்கவும் இது எங்களுக்கு உதவுகிறது, இந்த அம்சம் வீட்டு ஆட்டோமேஷன் சாதனங்களுக்கு எளிதில் வருகிறது, அங்கு பல சாதனங்கள் ஒருவருக்கொருவர் மூடிய சூழலில் தொடர்பு கொள்ள வேண்டும். சில அடிப்படை பி.எல்.இ செயல்பாடுகளைச் செய்ய நாங்கள் ஏற்கனவே ராஸ்பெர்ரி பை உடன் பி.எல்.இ மற்றும் ஈ.எஸ்.பி 32 உடன் பி.எல்.இ. சிறிய பேட்டரிகளில் நீண்ட நேரம் இயங்கக்கூடிய சிறிய வயர்லெஸ் சாதனங்களை வடிவமைக்க பொறியாளர்கள் பி.எல்.இ உடன் பரிசோதனை செய்கிறார்கள், மேலும் பி.எல்.இ உடன் பணிபுரிய பல மேம்பாட்டு கருவிகள் உள்ளன. Arduino நானோ 33 குறித்த எங்கள் சமீபத்திய மதிப்பாய்வில், BLE திறன்களுடன் nRF52840 போர்டில் இருப்பதையும் நாங்கள் கவனித்தோம்.
இந்த டுடோரியலில், BLE ஐப் பயன்படுத்தி வெப்பநிலை மற்றும் ஈரப்பதத்தை அளவிட nRF52 DK எனப்படும் மற்றொரு அற்புதமான மற்றும் பிரபலமான மேம்பாட்டு வாரியத்தை ஆராய்வோம். இயல்பாக, BLE சுற்றுச்சூழல் உணர்திறன் சுயவிவரங்கள் பரந்த அளவிலான சுற்றுச்சூழல் அளவுருக்களை ஆதரிக்கின்றன, ஆனால் இந்த பயிற்சி வெப்பநிலை மற்றும் ஈரப்பதம் மதிப்புகளுக்கு மட்டுமே. இந்த தீர்வு புளூடூத் குறைந்த ஆற்றலுடன் ஸ்மார்ட்போனுடன் இணைகிறது மற்றும் சுற்றுச்சூழல் அளவுருக்கள், வெப்பநிலை, ஈரப்பதம் குறித்து அடிக்கடி புதுப்பிப்பை வழங்குகிறது. நாங்கள் டிஹெச்.டி 1 சென்சாரைப் பயன்படுத்துவோம், வெப்பநிலை அளவீட்டு 0.01 டிகிரி செல்சியஸ் தீர்மானத்துடன் செய்யப்படும் மற்றும் ஈரப்பதம் அளவீட்டு 0.01 சதவீத தீர்மானத்துடன் செய்யப்படும்.
nRF52 மேம்பாட்டு கிட்:
nRF52DK என்பது புளூடூத் லோ எனர்ஜி மற்றும் 2.4 ஜிகாஹெர்ட்ஸ் வயர்லெஸ் இன்டர்நெட் ஆஃப் திங்ஸ் பயன்பாட்டிற்கான முழுமையான முன்மாதிரி தளமாகும். மேம்பாட்டு கிட் திறந்த-மூல, ஜி.சி.சி மற்றும் கெயில், ஐ.ஏ.ஆர் மற்றும் செகர் உட்பொதிக்கப்பட்ட ஸ்டுடியோ போன்ற வணிக ஒருங்கிணைந்த மேம்பாட்டு சூழல்கள் போன்ற பல்வேறு தரமான நோர்டிக் கருவித்தொகுப்புகளை ஆதரிக்கிறது.

nRF52DK ஆனது nRF52832 ARM Cortex-M4F மைக்ரோகண்ட்ரோலருடன் இயக்கப்படுகிறது, இது 512Kbytes Flash Memor மற்றும் 64 Kbytes SRAM உடன் ஒருங்கிணைக்கப்பட்டுள்ளது. nRF52DK ஆனது ஒருங்கிணைந்த செகர் ஜே-லிங்க் ஆன் போர்டு பிழைத்திருத்தியைக் கொண்டுள்ளது, இது வெளிப்புற / கூடுதல் jtag பிழைத்திருத்த சாதனங்கள் இல்லாமல் எளிதான மற்றும் விரைவான பிழைத்திருத்தத்தை வழங்குகிறது. இது Arduino Uno Rev3 இணக்கமான இணைப்பையும் கொண்டுள்ளது, இது நுண்செயலியுடன் அனலாக் மற்றும் டிஜிட்டல் உள்ளீடுகளை இடைமுகப்படுத்துவதை ஆதரிக்கிறது, மேலும் இது I2C (இன்டர்-ஒருங்கிணைந்த சுற்று), SPI (சீரியல் புற இடைமுகம்) மற்றும் UART (யுனிவர்சல் ஒத்திசைவற்ற ரிசீவர் மற்றும் டிரான்ஸ்மிட்டர்) போன்ற நிலையான தகவல் தொடர்பு நெறிமுறைகளையும் உள்ளடக்கியது. ஸ்மார்ட் போன், மடிக்கணினிகள் மற்றும் டேப்லெட்டுகளுடன் இணைப்பதற்காக புளூடூத் லோ எனர்ஜியைப் பயன்படுத்தி குறுகிய தூர வயர்லெஸ் தகவல்தொடர்புகளை வழங்கும் ஒருங்கிணைந்த உள்ளமைக்கப்பட்ட பிசிபி ஆண்டெனாவுடன் இந்த மேம்பாட்டு கிட் வடிவமைக்கப்பட்டுள்ளது.
செகர் உட்பொதிக்கப்பட்ட ஸ்டுடியோ
மேம்பாட்டு வாரியத்தை நிரல் செய்ய, நாங்கள் செகர் உட்பொதிக்கப்பட்ட ஸ்டுடியோவை nRF52 உடன் பயன்படுத்துவோம். செகர் உட்பொதிக்கப்பட்ட ஸ்டுடியோ என்பது ஒரு சக்திவாய்ந்த சி / சி ++ ஒருங்கிணைந்த மேம்பாட்டு சூழல் (ஐடிஇ) என்பது உட்பொதிக்கப்பட்ட அமைப்புகள் மேம்பாட்டிற்காக குறிப்பாக குறிவைக்கப்படுகிறது. உட்பொதிக்கப்பட்ட சி நிரலாக்க, மேம்பாடு மற்றும் பிழைத்திருத்தத்திற்கு தேவையான அனைத்தையும் உள்ளடக்கிய முழுமையான ஆல் இன் ஒன் தீர்வை இது வழங்குகிறது. உட்பொதிக்கப்பட்ட அமைப்புகள் நிரலாக்க மற்றும் மேம்பாட்டுக்கான முழுமையான பணிப்பாய்வு இதில் அடங்கும், இது திட்ட மேலாண்மை, ஆசிரியர், பிழைத்திருத்தத்தை ஆதரிக்கும் ARM கோர்டெக்ஸ் சாதனங்களுடன் இடம்பெற்றுள்ளது. இந்த சக்திவாய்ந்த மற்றும் பயன்படுத்த எளிதான ஐடிஇ நோர்டிக் வாடிக்கையாளர்களுக்கு எந்த குறியீடு அளவு கட்டுப்பாடுகளும் இல்லாமல் முழு உரிமத்துடன் முற்றிலும் இலவசம். கீழே கொடுக்கப்பட்டுள்ள இணைப்பிலிருந்து IDE ஐ பதிவிறக்கம் செய்யலாம்,
செகர் உட்பொதிக்கப்பட்ட ஸ்டுடியோவைப் பதிவிறக்குக
NRF52DK உடன் DHT11
டி.எச்.டி 11 என்பது ஒரு முழு வகை வெப்பநிலை மற்றும் ஈரப்பதம் சென்சார் ஆகும், இது ஒரு எதிர்ப்பு வகை ஈரப்பதம் அளவீட்டு கூறு மற்றும் என்.டி.சி வகை வெப்பநிலை அளவீட்டு கூறு ஆகியவற்றைக் கொண்டுள்ளது. இது சிறந்த தரம், வேகமான பதில் மற்றும் செலவு-செயல்திறனை வழங்குகிறது. இயல்பாக, அனைத்து DHT11 சென்சார்களும் ஆய்வகத்தில் அளவீடு செய்யப்படுகின்றன, இது தீவிர துல்லியம் மற்றும் நம்பகத்தன்மைக்கு வழிவகுக்கிறது. இது ஒற்றை-வயர் சீரியல் இடைமுக அமைப்பைப் பயன்படுத்தி தொடர்பு கொள்கிறது மற்றும் பிற விவரக்குறிப்புகள் கீழே கொடுக்கப்பட்டுள்ளன

DHT11 இன் விவரக்குறிப்புகள்:
- ஈரப்பதம் வரம்பு: 20 - 90% ஆர்.எச்
- வெப்பநிலை வரம்பு: 0 - 50 டிகிரி செல்சியஸ்
- ஈரப்பதம் துல்லியம்: ± 5 RH
- வெப்பநிலை துல்லியம்: ± 2
DHT11 இன் நேர வரைபடம்:

மேலே காட்டப்பட்டுள்ள நேர வரைபடத்தைப் பயன்படுத்தி DHT11 சென்சாரிலிருந்து தரவைப் படிப்பது மிகவும் எளிது. செயல்முறை எந்த கட்டுப்படுத்தியையும் ஒத்திருக்கிறது, மேலும் இந்த சென்சாரை பிற மேம்பாட்டு தளங்களுடன் ஏற்கனவே பயன்படுத்தினோம்
- ராஸ்பெர்ரி பை உடன் DHT11 சென்சார்
- PIC16F877A உடன் DHT11 சென்சார்
- STM32F103C8 உடன் DHT11 சென்சார்
- NodeMCU உடன் DHT11 சென்சார்
டி.எச்.டி 11 வெப்பநிலை மற்றும் ஈரப்பதம் சென்சார் ஆகியவற்றை என்.ஆர்.எஃப் 52 டெவலப்மென்ட் கிட் உடன் இணைக்க, கீழே கொடுக்கப்பட்டுள்ள இணைப்பு வரைபடத்தைப் பின்பற்றவும்.

சென்சாரை எனது போர்டுடன் இணைக்க நான் ஒரு இணைப்பு தொகுதியைப் பயன்படுத்துகிறேன், எனவே எனது இறுதி அமைவு இதுபோல் தெரிகிறது

DHT11 உடன் தொடர்புகொள்வதற்கான பாய்வு விளக்கப்படம்:
NRF52DK மற்றும் DHT11 க்கு இடையில் தொடர்புகொள்வதற்கு நாங்கள் பயன்படுத்தும் நிரல் தருக்க ஓட்டத்தை கீழே உள்ள ஓட்ட விளக்கப்படம் விளக்குகிறது

தரவு வடிவம்:

புளூடூத் லோ எனர்ஜி (பி.எல்.இ) உடன் எவ்வாறு செயல்படுவது?
பி.எல்.இ அம்சத்தை எவ்வாறு பயன்படுத்துவது என்பதைப் புரிந்து கொள்ள, கீழே விளக்கப்பட்டுள்ள சில அடிப்படை சொற்களை நாங்கள் புரிந்து கொள்ள வேண்டும், பி.எல்.இ பற்றி மேலும் அறிய நீங்கள் ஈ.எஸ்.பி 32 பி.எல்.இ கட்டுரையையும் படிக்கலாம்
பொதுவான அணுகல் சுயவிவரம் (GAP)
பி.எல்.இ புற மற்றும் மத்திய சாதனங்களுக்கிடையேயான தகவல்தொடர்புக்கான இணைப்பை நிறுவுவதற்கான முழுப் பொறுப்பையும் பொதுவான அணுகல் சுயவிவரம் கொண்டுள்ளது. சாதனம் ஸ்கேனிங் / கண்டுபிடிப்பு, இணைப்பு-அடுக்கு இணைப்பு நிறுவுதல், இணைப்பு முடித்தல், பாதுகாப்பு அம்சங்களின் கைகுலுக்கல் மற்றும் முழு அளவிலான சாதன உள்ளமைவு உள்ளிட்ட பல்வேறு நடைமுறைகளையும் GAP வழங்குகிறது. GAP பின்வரும் சாதன நிலைகளில் செயல்படுகிறது
|
GAP மாநிலங்கள் |
விளக்கம் |
|
காத்திருப்பு |
மீட்டமைக்கும்போது சாதனத்தின் ஆரம்ப நிலை |
|
விளம்பரதாரர் |
துவக்க ஸ்கேனிங்கிற்கு உதவும் தரவுடன் சாதன விளம்பரம் |
|
ஸ்கேனர் |
விளம்பரதாரருக்கு ஸ்கேன் கோரிக்கையைப் பெற்று அனுப்புகிறது |
|
துவக்கி |
இணைப்பை நிறுவ இணைப்பு கோரிக்கையை அனுப்புகிறது |
|
அடிமை / மாஸ்டர் |
இணைப்பில், விளம்பரதாரராக இருந்தால் அடிமையாக சாதனம், துவக்கியவர் என்றால் மாஸ்டர் |
பொதுவான பண்புக்கூறு சுயவிவர அடுக்கு (GATT)
GATT என்பது பொதுவான பண்புக்கூறு சுயவிவர அடுக்குக்கு குறுகியதாக உள்ளது, இது இரண்டு BLE சாதனங்களுக்கிடையில் (புற மற்றும் மத்திய) தரவு தொடர்புக்கு பொறுப்பாகும். தரவு தொடர்பு என்பது குணாதிசயங்களின் வடிவத்தில் வகைப்படுத்தப்படுகிறது, இது தரவைத் தொடர்புகொண்டு சேமிக்கிறது. கீழே கொடுக்கப்பட்டுள்ள சாதன தகவல்தொடர்புக்கு BLE சாதனம் இரண்டு வெவ்வேறு பாத்திரங்களை வகிக்கிறது,
- GATT சேவையகத்தில் பண்புகள் பற்றிய தகவல்கள் உள்ளன, அவை படிக்கவும் எழுதவும் பயன்படும். எங்கள் டுடோரியலில், டி.எச்.டி 11 சென்சார் மற்றும் தேவ். கிட் எங்கள் GATT சேவையகம்.
- GATT கிளையண்ட் / இலிருந்து GATT சேவையகத்திற்கு தரவைப் படித்து எழுதுகிறார். ஸ்மார்ட்போன் ஒரு GATT கிளையண்ட் ஆகும், இது எங்கள் சென்சார் போர்டில் தரவைப் படித்து எழுதுகிறது.
புளூடூத் எஸ்.ஐ.ஜி.
புளூடூத் சிறப்பு வட்டி குழு (எஸ்.ஐ.ஜி) என்பது புளூடூத் தரங்களின் வளர்ச்சியைக் கண்காணிக்கும் தரநிலை அமைப்பு மற்றும் புளூடூத் தொழில்நுட்பங்களுக்கு உரிமம் வழங்குதல். 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 தொடர் மைக்ரோகண்ட்ரோலர்களுடன் முழு அம்சமான, நம்பகமான மற்றும் பாதுகாப்பான புளூடூத் குறைந்த ஆற்றல் பயன்பாடுகளை உருவாக்க உதவுகிறது. முழுமையான நிரலை இங்கிருந்து பதிவிறக்கம் செய்யலாம், குறியீடு விளக்கம் பின்வருமாறு.
DHT11 DATA பின்னை nrf52 இல் உள்ளீடாக உள்ளமைக்கவும். NHF52 DHT11 தரவு முள் சரியான PULLUP ஐ வழங்குகிறது என்பதை உறுதிப்படுத்த முள் நிலை அதிகமாக இருக்க வேண்டும்
/ * உள்ளீட்டிற்கு அமைக்கப்பட்டு, சமிக்ஞை இழுக்கப்படுகிறதா என சரிபார்க்கவும் * / Data_SetInput (); DelayUSec (50); if (Data_GetVal () == 0) {திரும்ப DHT11_NO_PULLUP; }
NRF52 மைக்ரோகண்ட்ரோலரிலிருந்து START சமிக்ஞையை உருவாக்கி ஒப்புதல் சிக்னலை சரிபார்க்கவும்.
/ * தொடக்க சமிக்ஞையை அனுப்பு * / Data_SetOutput (); தரவு_ClrVal (); DelayMSec (20); / * குறைந்தது 18 எம்.எஸ்ஸுக்கு சமிக்ஞையை குறைவாக வைத்திருங்கள் * / Data_SetInput (); DelayUSec (50); / * ஒப்புதல் சமிக்ஞையை சரிபார்க்கவும் * / if (Data_GetVal ()! = 0) {/ * சமிக்ஞை சென்சார் மூலம் குறைவாக இழுக்கப்பட வேண்டும் * / திரும்ப DHT11_NO_ACK_0; Sens / * சென்சாரிலிருந்து அக் சிக்னலுக்காக அதிகபட்சம் 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; do {cntr = 11; / * அதிகபட்சம் 55 எங்களை காத்திருங்கள் * / போது (Data_GetVal () == 0) {DelayUSec (5); if (--cntr == 0) {திரும்ப DHT11_NO_DATA_0; }} cntr = 15; / * அதிகபட்சம் 75 எங்களை காத்திருங்கள் * / போது (Data_GetVal ()! = 0) {DelayUSec (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 Logger சேவையைத் தொடங்கவும். nRF52 எஸ்டிகே ஒரு அழைக்கப்படும் லாக்கிங் கட்டுப்பாடு இடைமுகத்துடன் இடம்பெற்றது 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 முழு அம்ச சக்தி மேலாண்மை தொகுதியைக் கொண்டுள்ளது. பி.எல்.இ பயன்பாடுகளில் சக்தி மேலாண்மை முக்கிய பங்கு வகிக்கிறது. 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 அடுக்கை உள்ளமைக்கவும். // பயன்பாட்டு ரேமின் தொடக்க முகவரியைப் பெறுங்கள். uint32_t ram_start = 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 (பிழை_ குறியீடு);
பி.எல்.இ புற மற்றும் மத்திய சாதனங்களுக்கு இடையிலான தரவு தகவல்தொடர்புக்கு கேட் பொறுப்பு. அதிகபட்ச ATT_MTU அளவை பேச்சுவார்த்தை மற்றும் கண்காணிக்க nRF52 GATT தொகுதி உதவியாக இருக்கும். இங்கே நாம் 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 இணைப்பு நிறுவல் அளவுருக்கள் மற்றும் இணைப்பு நிகழ்வுகள் மற்றும் பிழை நிகழ்வுகளுக்கான அழைப்பு நிகழ்வு கையாளுதல் செய்கிறோம்.
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 ஆண்டுகளுக்கும் மேலாக அனுபவம் பெற்றவர். அவர் உட்பொதிக்கப்பட்ட ஃபார்ம்வேர் / லினக்ஸ் வளர்ச்சியில் ஆலோசனை சேவைகளை வழங்குகிறார், அவர் பெருநிறுவன மற்றும் ஆன்லைன் பயிற்சியையும் வழங்குகிறார். ஹரிஹரன் எலெக்ட்ரானிக்ஸ் & கம்யூனிகேஷன் இன்ஜினியரிங் துறையில் இளங்கலை பொறியியல் பட்டம் பெற்றார், தனது கட்டுரைகள் மற்றும் பயிற்சிகள் மூலம் சர்க்யூட் டைஜஸ்டின் வாசகர்களுடன் தனது அனுபவத்தையும் எண்ணங்களையும் பகிர்ந்து கொள்கிறார்.
