- „nRF52“ kūrimo rinkinys:
- „Segger“ įterptoji studija
- DHT11 su nRF52DK
- Kaip dirbti su „Bluetooth Low Energy“ (BLE)?
- BLE aptarnavimo / charakteristikų diagrama
- „nRF52 BLE“ programos paaiškinimas
- Mūsų programos testavimas naudojant „nRF Connect“
„Fitness Bands“, „Smartwatches“ ir kitiems nešiojamiems įrenginiams vis labiau populiarėjant „ Bluetooth 5“ / „ Bluetooth Low Energy“ naudojimuikomunikacijos standartai yra plačiai taikomi. BLE padeda mums keistis duomenimis trumpu atstumu, naudojant labai mažai energijos, o tai labai svarbu akumuliatoriais valdomiems prietaisams, pvz., Nešiojamiesiems. Tai taip pat padeda mums sukurti belaidžius „BLE“ tinklo tinklus, ši funkcija yra naudinga namų automatikos prietaisams, kai keli įrenginiai turi bendrauti tarpusavyje uždaroje aplinkoje. Kai kurioms pagrindinėms BLE funkcijoms atlikti mes jau naudojome BLE su Raspberry Pi ir BLE su ESP32. Inžinieriai eksperimentuoja su BLE kurdami nešiojamus belaidžius įrenginius, kurie ilgą laiką gali veikti su mažomis baterijomis, ir yra keli kūrimo rinkiniai, skirti dirbti su BLE. Naujausioje „Arduino Nano 33“ apžvalgoje taip pat pastebėjome, kad plokštė turi „nRF52840“ su BLE galimybėmis.
Šioje pamokoje mes ištirsime dar vieną įdomią ir populiarią kūrimo lentą, vadinamą nRF52 DK, kad matuotume temperatūrą ir drėgmę naudodami BLE. Pagal numatytuosius nustatymus „BLE Environment Sensing Profiles“ palaiko platų aplinkos parametrų diapazoną, tačiau ši pamoka apsiriboja tik temperatūros ir drėgmės vertėmis. Šis sprendimas sujungiamas su išmaniuoju telefonu per mažą „Bluetooth“ energiją ir dažnai atnaujinami aplinkos parametrai, ty temperatūra, drėgmė. Mes naudosime DHT1 jutiklį, o temperatūros matavimas bus atliekamas su 0,01 laipsnio Celsijaus skiriamąja geba, o drėgmės - su 0,01 procento skiriamąja geba.
„nRF52“ kūrimo rinkinys:
„nRF52DK“ yra išsami „Bluetooth“ mažai energijos naudojančios ir 2,4 GHz belaidžio daiktų interneto programos prototipų kūrimo platforma. Kūrimo rinkinys palaiko įvairius standartinius „Nordic Toolchain“, pvz., Atvirojo kodo, GCC ir komercines integruotas kūrimo aplinkas, tokias kaip „ Keil“, „IAR“ ir „Segger Embedded Studio“ ir kt. „Nordic“ taip pat teikia pilnavertį programinės įrangos kūrimo rinkinį, skirtą „nRF52“, įskaitant pilną „nRF52DK“ palaikymą.
„nRF52DK“ yra maitinamas su nRF52832 „ARM Cortex-M4F“ mikrovaldikliu, kuris yra integruotas 512 kt. „Flash Memor“ ir 64 kt. „SRAM“. „nRF52DK“ turi integruotą „ Segger J-Link On Board“ derintuvą, kuris leidžia lengviau ir greičiau derinti be išorinių / papildomų „jtag“ derinimo įrenginių. Jame taip pat yra „ Arduino Uno Rev3“ suderinama jungtis, kuri palaiko analoginių ir skaitmeninių įėjimų sąsają su mikroprocesoriumi, taip pat apima standartinius ryšio protokolus, tokius kaip I2C (integruota grandinė), SPI (nuoseklioji periferinė sąsaja) ir UART (universalus asinchroninis imtuvas ir siųstuvas). Šis kūrimo rinkinys sukurtas su integruota integruota PCB antena, užtikrinančia mažo nuotolio belaidį ryšį naudojant „Bluetooth Low Energy“, kad būtų galima prisijungti prie išmaniojo telefono, nešiojamųjų kompiuterių ir planšetinių kompiuterių.
„Segger“ įterptoji studija
Norėdami programuoti kūrimo lentą, naudosime „ Segger Embedded Studio“ su nRF52. „Segger Embedded Studio“ yra galinga integruoto kūrimo aplinka (ID / C + C ++), skirta specialiai įterptųjų sistemų kūrimui. Tai suteikia išsamų „viskas viename“ sprendimą, kuriame yra viskas, ko reikia įdėtam C programavimui, kūrimui ir derinimui. Tai apima visą įdėtųjų sistemų programavimo ir kūrimo darbo eigą, pristatomą kartu su projektų valdymu, redaktoriumi, derintuvu, palaikančiu „ARM Cortex“ įrenginius. Šis galingas ir lengvai naudojamas IDE yra visiškai nemokamas Šiaurės šalių klientams, turintiems pilną licenciją be jokių kodo dydžio apribojimų. IDE galima atsisiųsti iš toliau pateiktos nuorodos,
Atsisiųskite „Segger Embedded Studio“
DHT11 su nRF52DK
DHT11 yra visavertis temperatūros ir drėgmės jutiklis su atsparaus tipo drėgmės matavimo komponentu ir NTC tipo temperatūros matavimo komponentu. Tai siūlo puikią kokybę, greitesnį reagavimą ir ekonomiškumą. Pagal numatytuosius nustatymus visi DHT11 jutikliai yra kalibruojami laboratorijoje, o tai lemia ypatingą tikslumą ir patikimumą. Jis bendrauja naudodamas vienos laido nuosekliosios sąsajos sistemą, o kitos specifikacijos pateiktos žemiau
DHT11 specifikacijos:
- Drėgmės diapazonas: 20–90% RH
- Temperatūros diapazonas: 0 - 50 laipsnių Celsijaus
- Drėgmės tikslumas: ± 5 % RH
- Temperatūros tikslumas: ± 2 ℃
DHT11 laiko schema:
Naudojant aukščiau pateiktą laiko schemą, duomenis iš DHT11 jutiklio nuskaityti yra gana paprasta. Procedūra yra panaši į bet kurį valdiklį, ir mes jau naudojome šį jutiklį su kitomis kūrimo platformomis, tokiomis kaip
- DHT11 jutiklis su aviete Pi
- DHT11 jutiklis su PIC16F877A
- DHT11 jutiklis su STM32F103C8
- DHT11 jutiklis su „NodeMCU“
Norėdami susieti DHT11 temperatūros ir drėgmės jutiklį su „nRF52“ kūrimo rinkiniu, vadovaukitės toliau pateikta jungimo schema.
Aš naudoju jungties modulį jutikliui prijungti prie savo plokštės, todėl mano paskutinė sąranka atrodo taip
Srauto diagrama bendraujant su DHT11:
Žemiau pateiktoje schemoje paaiškinamas programos loginis srautas, kurį naudosime bendraudami tarp nRF52DK ir DHT11
Duomenų formatas:
Kaip dirbti su „Bluetooth Low Energy“ (BLE)?
Norėdami suprasti, kaip naudotis BLE funkcija, turime suprasti keletą pagrindinių paaiškinimų, kurie yra paaiškinti žemiau, taip pat galite perskaityti ESP32 BLE straipsnį, kad sužinotumėte daugiau apie BLE
Bendrosios prieigos profilis (GAP)
„Bendrosios prieigos profilis“ yra visiškai atsakingas už ryšio tarp BLE periferinių ir centrinių įrenginių užmezgimą. GAP taip pat teikia įvairias procedūras, įskaitant įrenginių nuskaitymą / paiešką, ryšio susiejimo nustatymą, ryšio nutraukimą, saugos funkcijų paspaudimą rankomis ir visavertę įrenginio konfigūraciją. GAP veikia šiomis įrenginio būsenomis
GAP valstybės |
apibūdinimas |
Budėjimo režimu |
Įrenginio pradinė būsena iš naujo nustatius |
Reklamuotojas |
Įrenginio reklamavimas naudojant duomenis, kurie padeda nuskaityti iniciatorių |
Skaitytuvas |
Gauna ir siunčia nuskaitymo užklausą reklamuotojui |
Iniciatorius |
Siunčia ryšio užklausą, norėdamas nustatyti saitą |
Vergas / Šeimininkas |
Prisijungus įrenginys yra vergas, jei reklamuotojas, pagrindinis, jei iniciatorius |
Bendras atributų profilio sluoksnis (GATT)
GATT reiškia „Generic Attribute Profile Layer“, jis atsakingas už duomenų perdavimą tarp dviejų BLE įrenginių (periferinių ir centrinių). Duomenų perdavimas apibūdinamas charakteristikų forma, kurios perduoda ir saugo duomenis. „BLE“ įrenginys atlieka du skirtingus toliau nurodytus prietaiso ryšio vaidmenis:
- GATT serveryje yra informacija apie charakteristikas, kuri bus naudojama skaityti ir rašyti. Mūsų pamokoje DHT11 jutiklis ir kūrėjas. rinkinys yra mūsų GATT serveris.
- GATT klientas skaito ir rašo duomenis iš / į GATT serverį. Išmanusis telefonas yra GATT klientas, kuris skaito ir įrašo duomenis į mūsų jutiklių plokštę.
„Bluetooth SIG“
„Bluetooth Special Interest Group“ (SIG) yra standartų organizacija, stebinti „Bluetooth“ standartų plėtrą ir „Bluetooth“ technologijų licencijavimą. SIG grupė negamina ir neparduoda jokių „Bluetooth“ produktų. Jis apibrėžia „Bluetooth“ specifikaciją ir standartizavimą. Jie apibrėžia unikalų „Bluetooth“ energijos vartojimo profilio unikalų identifikatorių ir atitinkamas charakteristikas. GATT profilio specifikacijas galite rasti žemiau esančioje nuorodoje
GATT profilio specifikacijos
Remdamiesi pirmiau pateiktoje nuorodoje pateikta GATT specifikacija, mes surinkome unikalius identifikatorius, reikalingus mūsų projektui, kurie pateikiami toliau.
Profilis / charakteristikos |
UUID |
GAP (bendroji prieiga) |
0x1800 |
GATT (bendras atributas) |
0x1801 |
ESS (aplinkos jutimas) |
0x181A |
Temperatūra |
0x2A6E |
Drėgmė |
0x2A6F |
BLE aptarnavimo / charakteristikų diagrama
BLE UUID
UUID |
16 bitų vertė |
128 bitų UUID |
ESS tarnyba |
0x181A |
0000181A-0000-0000-0000-00000000000 |
Temp Char |
0x2A6E |
00002A6E-0000-0000-0000-00000000000 |
Drėgmė Char |
0x2A6F |
00002A6F-0000-0000-0000-00000000000 |
Temperatūros charakteristikos
Nuosavybė |
apibūdinimas |
Vienetas |
Celsijaus laipsnis, kai skiriamoji geba yra 0,01 laipsnio |
Formatas |
sint16 |
UUID |
0x2A6E |
Dešimtainis rodiklis |
2 |
Perskaityk |
Privaloma |
Drėgmės charakteristikos
Nuosavybė |
apibūdinimas |
Vienetas |
Procentas, kai skiriamoji geba yra 0,01 proc |
Formatas |
uint16 |
UUID |
0x2A6F |
Dešimtainis rodiklis |
2 |
Perskaityk |
Privaloma |
„nRF52 BLE“ programos paaiškinimas
Norėdami programuoti „nRF52“ kūrimo rinkinį, naudosime „nRF5 SDK “. „nRF5 SDK“ yra pilnas programinės įrangos kūrimo rinkinys, integruotas su daugybe „Bluetooth“ mažai energijos naudojančių profilių, „GATT Serializer“ ir tvarkyklių palaikymu visiems „nRF5“ serijos „SoC“ periferiniams įrenginiams. Šis SDK padeda kūrėjams kurti visavertes, patikimas ir saugias „Bluetooth“ mažai energijos naudojančias programas su „nRF52“ ir „nRF51“ mikrovaldiklių serijomis. Visą programą galima atsisiųsti iš čia, kodo paaiškinimas yra toks.
Konfigūruokite DHT11 DATA kaištį kaip įvestį nrf52 su įjungimo įjungimo funkcija. Smeigtuko būsena turėtų būti aukšta, kad būtų galima patvirtinti, jog nRF52 teikia tinkamą PULLUP DHT11 duomenų kaiščiui
/ * nustatykite įvestį ir patikrinkite, ar signalas nėra ištrauktas * / Data_SetInput (); „DelayUSec“ (50); if (Data_GetVal () == 0) {grąžinti DHT11_NO_PULLUP; }
Generuokite START signalą iš „nRF52“ mikrovaldiklio ir patikrinkite, ar nėra patvirtinimo signalo.
/ * siųsti pradinį signalą * / Data_SetOutput (); Data_ClrVal (); Vėlavimas MSec (20); / * palaikykite žemą signalą mažiausiai 18 ms * / Data_SetInput (); „DelayUSec“ (50); / * patikrinkite, ar nėra patvirtinimo signalo * / jei (Data_GetVal ()! = 0) {/ * signalas turi būti žemai pritrauktas jutikliu * / return DHT11_NO_ACK_0; } / * palaukite ne daugiau kaip 100 mus, kol gausis jutiklio jutiklis * / cntr = 18; o (Data_GetVal () == 0) {/ * palaukite, kol signalas pakils * / DelayUSec (5); if (--cntr == 0) {grąžinti DHT11_NO_ACK_1; / * ACK signalas čia turėtų būti pakeltas * /}} / * palaukite, kol vėl nusileis, ACK sekos pabaiga * / cntr = 18; o (Data_GetVal ()! = 0) {/ * palaukite, kol signalas sumažės * / DelayUSec (5); if (--cntr == 0) {grąžinti DHT11_NO_ACK_0; / * čia vėl turėtų būti žemas nulis * /}}
Dabar perskaitykite 40 duomenų bitų, kuriuose yra 2 baitai temperatūros, 2 baitai drėgmės ir 1 baitas kontrolinės sumos.
/ * dabar perskaitykite 40 bitų duomenis * / i = 0; duomenys = 0; loopBits = 40; padaryti {cntr = 11; / * palauk max 55 us * / while (Data_GetVal () == 0) {DelayUSec (5); if (--cntr == 0) {grąžinti DHT11_NO_DATA_0; }} cntr = 15; / * palaukite maks. 75 us * / while (Data_GetVal ()! = 0) {DelayUSec (5); if (--cntr == 0) {grąžinti DHT11_NO_DATA_1; }} duomenys << = 1; / * kitas duomenų bitas * / if (cntr <10) {/ * duomenų signalas aukštas> 30 us ==> 1 duomenų bitas * / duomenys - = 1; } if ((loopBits & 0x7) == 1) {/ * kitas baitas * / buferis = duomenys; i ++; duomenys = 0; }} while (- loopBits! = 0);
Patvirtinkite duomenis naudodami kontrolinę sumą.
/ * testuokite CRC * / if ((uint8_t) (buferis + buferis + buferis + buferis)! = buferis) {return DHT11_BAD_CRC; }
Manipuliuokite ir laikykite temperatūrą bei drėgmę
/ * saugoti skambinančiojo duomenų reikšmes * / drėgmė = ((int) buferis) * 100 + buferis; temperatūra = ((int) buferis) * 100 + buferis;
Inicializuokite „nRF5 SDK Logger“ paslaugą. „nRF52 SDK“ yra su registravimo valdymo sąsaja, vadinama nrf_log, ir registruodamas informaciją naudoja numatytąją antrinę programą . Numatytasis backendas bus nuoseklusis prievadas. Čia taip pat inicijuojame „ nrf_log“ valdymo sąsają ir numatytąsias „ nrf_log“ backendes .
ret_code_t err_code = NRF_LOG_INIT (NULL); APP_ERROR_CHECK (klaidos kodas); NRF_LOG_DEFAULT_BACKENDS_INIT ();
„nRF52 SDK“ turi programos laikmačio funkcionalumą. Programos laikmačio modulis leidžia sukurti keletą laikmačio egzempliorių, pagrįstų RTC1 periferiniu įrenginiu. Čia mes inicijuojame „nRF5“ programos laikmačio modulį. Šiame sprendime naudojami du programos laikmačiai ir duomenų atnaujinimo intervalas.
ret_code_t err_code = app_timer_init (); APP_ERROR_CHECK (klaidos kodas);
„nRF52 SDK“ turi pilną funkcijų energijos valdymo modulį, nes „BLE“ įrenginiai turi veikti kelis mėnesius naudodami monetų elementų bateriją. Maitinimo valdymas vaidina svarbų vaidmenį BLE programose. „nRF52“ energijos valdymo modulis visiškai valdo tą patį. Čia mes inicijuojame „nRF5 SDK“ maitinimo valdymo modulį
ret_code_t err_code; err_code = nrf_pwr_mgmt_init (); APP_ERROR_CHECK (klaidos kodas);
„nRF52 SDK“ turi įmontuotą „ Nordic Soft Device“ programinės aparatinės įrangos šešioliktainį failą, kuriame yra „Bluetooth“ mažo energijos kiekio centrinis ir periferinis kaminas. Šis aukštos kvalifikacijos protokolų rinkinys apima GATT, GAP, ATT, SM, L2CAP ir „Link Layer“. Čia sekame inicializavimo seką, kuri inicijavo „nRF5 BLE Radio Stack“ („Nordic Soft Device“)
ret_code_t err_code; err_code = nrf_sdh_enable_request (); APP_ERROR_CHECK (klaidos kodas); // Konfigūruokite BLE kaminą naudodami numatytuosius nustatymus. // Gaukite programos RAM pradžios adresą. uint32_t ram_start = 0; err_code = nrf_sdh_ble_default_cfg_set (APP_BLE_CONN_CFG_TAG ir & ram_start); APP_ERROR_CHECK (klaidos kodas); // Įgalinti BLE kaminą. err_code = nrf_sdh_ble_enable (& ram_start); APP_ERROR_CHECK (klaidos kodas); // Užregistruokite BLE renginių tvarkytuvą. NRF_SDH_BLE_OBSERVER („m_ble_observer“, „APP_BLE_OBSERVER_PRIO“, „ble_evt_handler“, NULL);
GAP yra atsakinga už įrenginio nuskaitymą / atradimą, nuorodos nustatymą, nuorodos nutraukimą, saugos funkcijų inicijavimą ir konfigūravimą. GAP pasižymėjo pagrindiniais ryšio parametrais, tokiais kaip ryšio intervalas, vergo vėlavimas, priežiūros skirtasis laikas ir kt. Šiuo atveju inicijuojami „Generic Access Profile“ ryšio parametrai
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 (klaidos kodas); 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 (klaidos kodas);
GATT yra atsakinga už duomenų perdavimą tarp BLE periferinių ir centrinių įrenginių. „nRF52 GATT“ modulis yra naudingas derantis ir stebint maksimalų ATT_MTU dydį. Čia mes inicijuojame „nRF52 SDK“ bendrojo atributo modulį, ret_code_t err_code = nrf_ble_gatt_init (& m_gatt, NULL); APP_ERROR_CHECK (klaidos kodas);
GATT teikia duomenų perdavimo paslaugas ir charakteristikas. Čia mes inicijuojame GATT aplinkos jutimo paslaugas, kurios apima tokių charakteristikų kaip temperatūra ir drėgmė inicijavimą.
ret_code_terr_code; nrf_ble_qwr_init_t qwr_init = {0}; // Inicijuoti eilės rašymo modulį. qwr_init.error_handler = nrf_qwr_error_handler; err_code = nrf_ble_qwr_init (& m_qwr, & qwr_init); APP_ERROR_CHECK (klaidos kodas); m_ess.notif_write_handler = ble_ess_notif_write_handler; err_code = ble_ess_init (& m_ess); APP_ERROR_CHECK (klaidos kodas);
Reklama vaidina svarbų vaidmenį BLE taikymo aplinkoje. paketuose yra informacija apie adreso tipą, reklamos tipą, reklamos duomenis, konkrečių įrenginių gamintojų duomenis ir nuskaitymo atsako duomenis. „nRF52 SDK“ yra su reklaminiu moduliu. Čia mes inicijuojame reklaminį modulį su parametrais.
ret_code_terr_code; ble_advdata_t advdata; ble_advdata_t srdata; ble_uuid_t adv_uuids = {{ESS_UUID_SERVICE, BLE_UUID_TYPE_BLE}}; // Sukurkite ir nustatykite reklamavimo duomenis. memset (& advdata, 0, sizeof (advdata)); advdata.name_type = BLE_ADVDATA_FULL_NAME; advdata.include_appearance = true; 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 (klaidos kodas); err_code = ble_advdata_encode (& srdata, m_adv_data.scan_rsp_data.p_data, & m_adv_data.scan_rsp_data.len); APP_ERROR_CHECK (klaidos kodas); ble_gap_adv_params_t adv_params; // Nustatykite reklamavimo parametrus. 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 ir & adv_params); APP_ERROR_CHECK (klaidos kodas);
„BLE“ ryšys bus tvarkomas ir stebimas naudojant įvairius ryšio parametrus, pvz., Pirmojo prisijungimo parametrų atnaujinimo vėlavimą, kitus nuoseklius vėlavimus, atnaujinimų skaičių, ryšio įvykių tvarkytojo atgalinio skambinimo funkciją ir ryšio klaidos atgalinio įvykio tvarkytuvą. Čia mes inicijuojame BLE ryšio nustatymo parametrus ir ryšio įvykių bei klaidų įvykių atgalinio įvykio tvarkytuvą.
ret_code_terr_code; ble_conn_params_init_t cp_init; atminties rinkinys (& 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 = false; 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 (klaidos kodas);
Baigę sistemos inicializavimą, čia mes pradedame reklamuoti BLE įrenginio pavadinimą ir informacijos apie galimybes. Iš čia šį išorinį įrenginį galima pamatyti išmaniojo telefono „Ble“ nuskaitymo sąraše.
ret_code_terr_code; err_code = sd_ble_gap_adv_start („m_adv_handle“, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK (klaidos kodas);
Pagrindinė kilpa eina per 2 sekundes, nuskaito temperatūrą ir drėgmę bei atnaujina prijungtą išmanųjį įrenginį naudodama skaitymo arba pranešimo funkciją
už (;;) { uint16_t temperatūrą, drėgmę; DHTxx_ErrorCode dhtErrCode; idle_state_handle (); if (updtmrexp) { dhtErrCode = DHTxx_Read (& temperatūra, & drėgmė); if (dhtErrCode == DHT11_OK) { NRF_LOG_INFO ("Temperatūra:% d Drėgmė:% d \ n", temperatūra, drėgmė); jei (temp_notif_enabled) { ble_ess_notify_temp (m_conn_handle, & m_ess, temperatūra); } else { ble_ess_update_temp (& m_ess, temperatūra); } if (drėgnas_notifas įgalintas) { ble_ess_notify_humid (m_kontakto_rankė, & m_ess, drėgmė); } else { ble_ess_update_humid (& m_ess, drėgmė); } } updtmrexp = klaidinga; } }
Mūsų programos testavimas naudojant „nRF Connect“
„nRF Connect“ yra galingas „Bluetooth“ energijos taupymo įrankis, leidžiantis nuskaityti ir ištirti periferinius įrenginius, kuriuose įgalinta BLE. „nRF Connect“ mobiliesiems palaiko platų „Bluetooth SIG“ standartinių profilių asortimentą. Mes galime patikrinti savo programą naudodamiesi tuo, įdiegę programą, mes galime suporuoti „nRF52“ lentą su savo telefonu, ieškodami programoje esančių „BLE“ įrenginių. Aplinkos jutimo atribute galime pastebėti, kad temperatūros ir drėgmės vertės atnaujinamos, kaip parodyta toliau pateiktose nuotraukose.
Hariharanas Veerappanas yra nepriklausomas konsultantas, turintis daugiau nei 15 metų patirtį įterptųjų produktų kūrimo srityje. Jis teikia konsultacines paslaugas įterptosios programinės aparatinės įrangos / „Linux“ kūrimo srityje, taip pat teikia verslo ir internetinius mokymus. Hariharanas turi inžinerijos bakalauro laipsnį elektronikos ir komunikacijos inžinerijos srityje. Savo straipsniais ir vadovėliais jis dalijasi patirtimi ir mintimis su „Circuit Digest“ skaitytojais.