- nRF52 Geliştirme Kiti:
- Segger Gömülü Stüdyo
- NRF52DK ile DHT11
- Bluetooth Low Energy (BLE) ile nasıl çalışılır?
- BLE Servis / Özellikler Şeması
- nRF52 BLE Program Açıklaması
- Programımızı nRF Connect kullanarak test etme
Fitness Bantları, Akıllı Saatler ve diğer giyilebilir cihazlar Bluetooth 5 / Bluetooth Düşük Enerji kullanımı giderek daha popüler hale geliyoriletişim standartları yaygın olarak benimseniyor. BLE, giyilebilir cihazlar gibi pille çalışan cihazlar için çok önemli olan, çok az güçle kısa mesafelerde veri alışverişi yapmamıza yardımcı oluyor. Ayrıca, kablosuz BLE örgü ağları kurmamıza yardımcı olur, bu özellik, birden fazla cihazın kapalı bir ortamda birbiriyle iletişim kurması gereken ev otomasyon cihazları için kullanışlıdır. Bazı temel BLE işlevlerini gerçekleştirmek için Raspberry Pi ile BLE ve ESP32 ile BLE'yi zaten kullandık. Mühendisler, küçük pillerle uzun süre çalışabilen taşınabilir kablosuz aygıtlar tasarlamak için BLE ile deneyler yapıyor ve BLE ile çalışmak için birden fazla geliştirme kiti mevcut. Arduino Nano 33 ile ilgili son incelememizde, kartın BLE özellikli nRF52840'a sahip olduğunu da fark ettik.
Bu eğitimde, BLE kullanarak Sıcaklık ve Nemi ölçmek için nRF52 DK adlı başka bir heyecan verici ve popüler geliştirme panosunu keşfedeceğiz. Varsayılan olarak, BLE Ortam Algılama Profilleri çok çeşitli çevresel parametreleri destekler ancak bu eğitim yalnızca sıcaklık ve nem değerleriyle sınırlıdır. Bu çözüm, Bluetooth düşük enerji üzerinden bir Akıllı Telefona bağlanır ve Sıcaklık, Nem gibi çevresel parametrelerle ilgili sık güncelleme sağlar. DHT1 sensörünü kullanacağız ve Sıcaklık ölçümü 0,01 Santigrat derece çözünürlükte, Nem ölçümü ise yüzde 0,01 çözünürlükle yapılacaktır.
nRF52 Geliştirme Kiti:
nRF52DK, Bluetooth Low Energy ve 2.4 GHz Wireless Internet of Things uygulaması için eksiksiz bir prototip oluşturma platformudur. Geliştirme kiti, açık kaynak, GCC ve Keil, IAR ve Segger Embedded Studio gibi ticari entegre geliştirme ortamları gibi çeşitli standart Nordic Araç Zincirlerini destekler. Nordic ayrıca nRF52 için tam donanımlı bir yazılım geliştirme kiti sağlar ve nRF52DK için tam destek içerir.
nRF52DK, 512Kbyte Flash Memor ve 64 Kbyte SRAM entegre nRF52832 ARM Cortex-M4F Microcontroller ile güçlendirilmiştir. nRF52DK, harici / ek jtag hata ayıklama cihazları olmadan daha kolay ve daha hızlı hata ayıklama sağlayan entegre bir Segger J-Link Dahili hata ayıklayıcıya sahiptir. Ayrıca Arduino Uno Rev3 uyumlu konektörü içerirAnalog ve dijital girişlerin mikroişlemci ile arayüzlenmesini destekleyen ve ayrıca I2C (Inter-Integrated Circuit), SPI (Seri Çevre Arabirimi) ve UART (Evrensel Asenkron Alıcı ve Verici) gibi standart iletişim protokollerini içerir. Bu geliştirme kiti, Akıllı Telefon, Dizüstü Bilgisayarlar ve Tabletlere bağlanmak için Bluetooth Düşük Enerji kullanarak kısa menzilli kablosuz iletişim sağlayan entegre yerleşik bir PCB anteni ile tasarlanmıştır.
Segger Gömülü Stüdyo
Geliştirme panosunu programlamak için nRF52 ile Segger Embedded Studio'yu kullanacağız. Segger Embedded Studio, özellikle gömülü sistem geliştirme için hedeflenen güçlü bir C / C ++ entegre geliştirme ortamıdır (IDE). Bu, gömülü C programlama, geliştirme ve hata ayıklama için gereken her şeyi içeren eksiksiz bir hepsi bir arada çözüm sağlar. Bu, ARM Cortex cihazlarını destekleyen proje yönetimi, düzenleyici ve hata ayıklayıcı özellikli yerleşik sistem programlama ve geliştirme için eksiksiz iş akışını içerir. Bu güçlü ve kullanımı kolay IDE, herhangi bir kod boyutu kısıtlaması olmaksızın tam lisansa sahip İskandinav müşterileri için tamamen ücretsizdir. IDE aşağıda verilen bağlantıdan indirilebilir,
Segger Embedded Studio'yu indirin
NRF52DK ile DHT11
DHT11, Dirençli Tip Nem Ölçüm Bileşenine ve NTC tipi Sıcaklık Ölçüm Bileşenine sahip tam özellikli bir Sıcaklık ve Nem Sensörüdür. Mükemmel kalite, daha hızlı yanıt ve maliyet etkinliği sunar. Varsayılan olarak, tüm DHT11 sensörleri laboratuvarda kalibre edilir ve bu da aşırı doğruluk ve güvenilirlik sağlar. Tek Telli Seri Arabirim sistemi kullanarak iletişim kurar ve diğer özellikler aşağıda verilmiştir.
DHT11'in özellikleri:
- Nem Aralığı:% 20 - 90 Bağıl Nem
- Sıcaklık Aralığı: 0-50 derece santigrat
- Nem Doğruluğu: ± 5 % RH
- Sıcaklık Doğruluğu: ± 2 ℃
DHT11'in Zamanlama Şeması:
DHT11 sensöründen verileri okumak, yukarıda gösterilen zamanlama diyagramını kullanarak nispeten basittir. Prosedür herhangi bir denetleyiciye benzer ve bu sensörü zaten diğer geliştirme platformlarıyla kullandık.
- Raspberry Pi'li DHT11 Sensörü
- PIC16F877A ile DHT11 Sensörü
- STM32F103C8 ile DHT11 Sensörü
- NodeMCU'lu DHT11 sensörü
DHT11 Sıcaklık ve Nem sensörünü nRF52 Geliştirme Kiti ile arayüzlemek için aşağıda verilen bağlantı şemasını izleyin.
Sensörü kartıma bağlamak için bir konektör modülü kullanıyorum, bu nedenle son kurulumum şöyle görünüyor
DHT11 ile iletişim için Akış Şeması:
Aşağıdaki akış şeması, nRF52DK ve DHT11 arasında iletişim kurmak için kullanacağımız program mantıksal akışını açıklamaktadır.
Veri formatı:
Bluetooth Low Energy (BLE) ile nasıl çalışılır?
BLE özelliğini nasıl kullanacağınızı anlamak için aşağıda açıklanan birkaç temel terminolojiyi anlamamız gerekiyor, BLE hakkında daha fazla bilgi edinmek için ESP32 BLE makalesini de okuyabilirsiniz.
Genel Erişim Profili (GAP)
Generic Access Profile, BLE çevre birimleri ve Merkezi Cihazlar arasındaki iletişim için bağlantı kurmanın tüm sorumluluğunu taşır. GAP ayrıca cihaz tarama / bulma, bağlantı katmanı bağlantı kurma, bağlantı sonlandırma, güvenlik özelliklerinin anlaşması ve tam donanımlı cihaz yapılandırması dahil olmak üzere çeşitli prosedürler sağlar. GAP, aşağıdaki cihaz durumlarında çalışır
GAP Devletleri |
Açıklama |
Yanında olmak |
Sıfırlamanın ardından cihazın başlangıç durumu |
Reklamveren |
Başlatıcı taramaya yardımcı olan verilerle cihaz reklamcılığı |
Tarayıcı |
Tarama isteğini alır ve reklamverene gönderir |
Başlatıcı |
Bir bağlantı kurmak için bir bağlantı isteği gönderir |
Köle / Usta |
Bağlantı kurulduğunda, cihaz reklamveren ise ikincil, başlatıcı ise ana |
Genel Nitelik Profil Katmanı (GATT)
GATT, Generic Attribute Profile Layer'ın kısaltmasıdır, iki BLE cihazı (Peripheral & Central) arasındaki veri iletişiminden sorumludur. Veri iletişimi, verileri ileten ve depolayan özellikler biçiminde karakterize edilir. BLE cihazı, aşağıda verilen cihaz iletişimi için iki farklı rol oynamaktadır,
- GATT Sunucusu, okumak ve yazmak için kullanılacak özellik bilgilerini içerir. Eğitimimizde DHT11 sensörü ve dev. kit GATT Sunucumuzdur.
- GATT İstemcisi, GATT Sunucusundaki verileri okur ve ona yazar. Akıllı telefon, verileri okuyan ve sensör kartımıza yazan bir GATT İstemcisidir.
Bluetooth SIG
Bluetooth Özel İlgi Grubu (SIG), Bluetooth standartlarının gelişimini ve Bluetooth teknolojilerinin lisanslanmasını izleyen standartlar kuruluşudur. SIG grubu herhangi bir Bluetooth ürünü üretmez veya satmaz. Bluetooth özelliğini ve standardizasyonunu tanımlar. Bluetooth düşük enerji profili ve ilgili özellikleri için Benzersiz Tanımlayıcıyı tanımlarlar. GATT Profil özellikleri aşağıdaki bağlantıda bulunabilir.
GATT Profil özellikleri
Yukarıdaki bağlantıda verilen GATT Spesifikasyonuna dayanarak, projemiz için gerekli olan benzersiz tanımlayıcıları aşağıda tablo halinde topladık.
Profil / Özellikler |
UUID |
GAP (Genel Erişim) |
0x1800 |
GATT (Genel Özellik) |
0x1801 |
ESS (Çevre Algılama) |
0x181A |
Sıcaklık |
0x2A6E |
Nem |
0x2A6F |
BLE Servis / Özellikler Şeması
BLE UUID'leri
UUID |
16 bit değer |
128 bit UUID |
ESS Hizmeti |
0x181A |
0000181A-0000-0000-0000-00000000000 |
Temp Char |
0x2A6E |
00002A6E-0000-0000-0000-00000000000 |
Nem Char |
0x2A6F |
00002A6F-0000-0000-0000-00000000000 |
Sıcaklık Karakteristikleri
Emlak |
Açıklama |
Birim |
0.01 derece çözünürlüğe sahip Santigrat derece |
Biçim |
sint16 |
UUID |
0x2A6E |
Ondalık Üs |
2 |
Okuyun |
Zorunlu |
Nem Özellikleri
Emlak |
Açıklama |
Birim |
Yüzde 0,01 çözünürlüklü yüzde |
Biçim |
uint16 |
UUID |
0x2A6F |
Ondalık Üs |
2 |
Okuyun |
Zorunlu |
nRF52 BLE Program Açıklaması
NRF52 Geliştirme kitimizi programlamak için nRF5 SDK'yı kullanacağız. nRF5 SDK, çok sayıda Bluetooth Düşük Enerji profili, GATT Serileştirici ve nRF5 serisi SoC'lerdeki tüm çevre birimleri için sürücü desteği ile entegre edilmiş eksiksiz bir yazılım geliştirme kitidir. Bu SDK, geliştiricilerin nRF52 ve nRF51 serisi mikrodenetleyicilerle tam özellikli, güvenilir ve güvenli Bluetooth düşük enerji uygulamaları oluşturmasına yardımcı olur. Programın tamamı buradan indirilebilir, kod açıklaması aşağıdaki gibidir.
DHT11 DATA pinini yukarı çekme etkinleştirme ile nrf52'de giriş olarak yapılandırın. NRF52'nin DHT11 veri pini için uygun ÇEKME sağladığını doğrulamak için pin durumu yüksek olmalıdır
/ * girişe ayarlı ve sinyalin yukarı çekilip çekilmediğini kontrol et * / Data_SetInput (); GecikmeUSec (50); eğer (Data_GetVal () == 0) {DHT11_NO_PULLUP döndür; }
NRF52 Mikrodenetleyiciden BAŞLAT sinyali oluşturun ve onay sinyalini kontrol edin.
/ * başlangıç sinyali gönder * / Data_SetOutput (); Data_ClrVal (); GecikmeMSec (20); / * sinyali en az 18 ms için düşük tut * / Data_SetInput (); GecikmeUSec (50); / * onay sinyalini kontrol et * / if (Data_GetVal ()! = 0) {/ * sinyal sensör tarafından aşağı çekilmelidir * / return DHT11_NO_ACK_0; } / * sensörden gelen ack sinyali için en fazla 100 us bekleyin * / cntr = 18; while (Data_GetVal () == 0) {/ * sinyal yükselene kadar bekle * / DelayUSec (5); eğer (--cntr == 0) {dönüş DHT11_NO_ACK_1; / * sinyal ACK için burada olmalı * /}} / * tekrar aşağı inene kadar bekle, ack dizisinin sonu * / cntr = 18; while (Data_GetVal ()! = 0) {/ * sinyal düşene kadar bekle * / DelayUSec (5); eğer (--cntr == 0) {dönüş DHT11_NO_ACK_0; / * sinyal burada tekrar sıfıra düşmelidir * /}}
Şimdi 2 bayt sıcaklık, 2 bayt nem ve 1 bayt sağlama toplamı içeren 40 bitlik veriyi okuyun.
/ * şimdi 40 bitlik veriyi oku * / i = 0; veri = 0; loopBits = 40; do {cntr = 11; / * en fazla 55 us bekleyin * / while (Data_GetVal () == 0) {DelayUSec (5); eğer (--cntr == 0) {dönüş DHT11_NO_DATA_0; }} cntr = 15; / * en fazla 75 us bekleyin * / while (Data_GetVal ()! = 0) {DelayUSec (5); eğer (--cntr == 0) {DHT11_NO_DATA_1 döndür; }} veri << = 1; / * sonraki veri biti * / if (cntr <10) {/ * veri sinyali yüksek> 30 us ==> veri biti 1 * / veri - = 1; } if ((loopBits & 0x7) == 1) {/ * sonraki bayt * / buffer = data; i ++; veri = 0; }} while (- loopBits! = 0);
Verileri Checksum yardımıyla doğrulayın.
/ * CRC'yi test et * / if ((uint8_t) (arabellek + arabellek + arabellek + arabellek)! = arabellek) {dönüş DHT11_BAD_CRC; }
Sıcaklık ve nemi değiştirin ve saklayın
/ * arayan için veri değerlerini sakla * / nem = ((int) arabellek) * 100 + arabellek; sıcaklık = ((int) tampon) * 100 + tampon;
NRF5 SDK Logger hizmetini başlatın. nRF52 SDK, nrf_log adı verilen bir günlük kaydı kontrol arayüzüne sahiptir ve bilgileri günlüğe kaydetmek için varsayılan arka ucu kullanır. Varsayılan arka uç, bir seri bağlantı noktası olacaktır. Burada hem nrf_log kontrol arayüzünü hem de nrf_log varsayılan arka uçlarını da başlatıyoruz .
ret_code_t err_code = NRF_LOG_INIT (NULL); APP_ERROR_CHECK (err_code); NRF_LOG_DEFAULT_BACKENDS_INIT ();
nRF52 SDK, uygulama zamanlayıcı işlevine sahiptir. Uygulama zamanlayıcı modülü, RTC1 çevre birimine göre birden çok zamanlayıcı örneği oluşturmaya olanak tanır. Burada nRF5 uygulama zamanlayıcı modülünü başlatıyoruz. Bu çözümde, iki uygulama zamanlayıcısı ve veri güncelleme aralığı kullanılır.
ret_code_t err_code = app_timer_init (); APP_ERROR_CHECK (err_code);
nRF52 SDK, tam özellikli güç yönetimi modülüne sahiptir, çünkü BLE cihazlarının bir Düğme pille birkaç ay çalışması gerekir. Güç yönetimi, BLE uygulamalarında hayati bir rol oynar. nRF52 güç yönetimi modülü tamamen aynısını idare eder. Burada nRF5 SDK'nın Güç Yönetimi modülünü başlatıyoruz
ret_code_t hata_kodu; err_code = nrf_pwr_mgmt_init (); APP_ERROR_CHECK (err_code);
nRF52 SDK, Bluetooth düşük enerjili merkezi ve çevresel yığın özelliğine sahip yerleşik bir Nordic Soft Device firmware hex dosyasına sahiptir. Bu yüksek nitelikli protokol yığını, GATT, GAP, ATT, SM, L2CAP ve Bağlantı Katmanı içerir. Burada nRF5 BLE Radyo Yığını'nı (Nordic Soft Device) başlatan başlatma sırasını takip ediyoruz.
ret_code_t hata_kodu; err_code = nrf_sdh_enable_request (); APP_ERROR_CHECK (err_code); // Varsayılan ayarları kullanarak BLE yığınını yapılandırın. // Uygulama RAM'inin başlangıç adresini getir. uint32_t ram_start = 0; err_code = nrf_sdh_ble_default_cfg_set (APP_BLE_CONN_CFG_TAG, & ram_start); APP_ERROR_CHECK (err_code); // BLE yığınını etkinleştirin. err_code = nrf_sdh_ble_enable (& ram_start); APP_ERROR_CHECK (err_code); // BLE olayları için bir işleyici kaydedin. NRF_SDH_BLE_OBSERVER (m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
GAP, cihaz taraması / keşfi, bağlantı kurulumu, bağlantı sonlandırma, güvenlik özelliklerinin başlatılması ve yapılandırılmasından sorumludur. GAP, bağlantı aralığı, bağımlı gecikme süresi, denetim zaman aşımı vb. Gibi temel bağlantı parametrelerine sahiptir. Bununla birlikte, Genel Erişim Profili bağlantı parametrelerinin başlatılması
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 (err_code); 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 (err_code);
GATT, BLE çevresel ve merkezi cihazlar arasındaki veri iletişiminden sorumludur. nRF52 GATT modülü, maksimum ATT_MTU boyutunu görüşmek ve takip etmek için yararlıdır. Burada nRF52 SDK Genel Öznitelik Modülünü başlatıyoruz, ret_code_t err_code = nrf_ble_gatt_init (& m_gatt, NULL); APP_ERROR_CHECK (err_code);
GATT, hizmetler ve özellikler biçiminde veri iletişimi yapar. Burada, sıcaklık ve nem gibi özelliklerin başlatılmasını içeren GATT ortam algılama hizmetlerini başlatıyoruz.
ret_code_terr_code; nrf_ble_qwr_init_t qwr_init = {0}; // Sıraya Alınmış Yazma Modülünü Başlat. qwr_init.error_handler = nrf_qwr_error_handler; err_code = nrf_ble_qwr_init (& m_qwr, & qwr_init); APP_ERROR_CHECK (err_code); m_ess.notif_write_handler = ble_ess_notif_write_handler; err_code = ble_ess_init (& m_ess); APP_ERROR_CHECK (err_code);
Reklam, BLE uygulama ortamında hayati bir rol oynar. paketler, adres türü, reklam türü, reklam verileri, cihaz üreticisine özel veriler ve tarama yanıt verilerini içerir. nRF52 SDK, bir reklamcılık modülüne sahiptir. Burada reklam modülünü parametrelerle başlatıyoruz.
ret_code_terr_code; ble_advdata_t advdata; ble_advdata_t srdata; ble_uuid_t adv_uuids = {{ESS_UUID_SERVICE, BLE_UUID_TYPE_BLE}}; // Reklam verilerini oluşturun ve ayarlayın. 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 (err_code); err_code = ble_advdata_encode (& srdata, m_adv_data.scan_rsp_data.p_data, & m_adv_data.scan_rsp_data.len); APP_ERROR_CHECK (err_code); ble_gap_adv_params_t adv_params; // Reklam parametrelerini ayarlayın. 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 (err_code);
BLE Bağlantısı, ilk bağlantı parametreleri güncelleme gecikmesi, sonraki ardışık gecikmeler, güncelleme sayısı, bağlantı olayı işleyicisi geri arama işlevi ve bağlantı hatası geri arama olay işleyicisi gibi çeşitli bağlantı parametreleri ile yönetilecek ve izlenecektir. Burada, bağlantı olayları ve hata olayları için BLE Bağlantısı oluşturma parametrelerini ve bir geri arama olay işleyicisini başlatıyoruz.
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 = 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 (err_code);
Sistemin başlatılmasının tamamlanmasından sonra, burada BLE cihaz adı ve yetenek bilgilerinin reklamıyla başlıyoruz. Buradan, bu çevre birimi akıllı telefon Ble tarama listesi üzerinden görülebilir.
ret_code_terr_code; err_code = sd_ble_gap_adv_start (m_adv_handle, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK (err_code);
Ana döngü 2 saniyelik aralıklarla çalışır, okuma veya bildirim kullanarak bağlı bir akıllı cihazdaki sıcaklığı ve nemi okuyun ve güncellemeleri okuyun
için (;;) { uint16_t sıcaklık, nem; DHTxx_ErrorCode dhtErrCode; idle_state_handle (); eğer (updtmrexp) { dhtErrCode = DHTxx_Read (& sıcaklık, & nem); if (dhtErrCode == DHT11_OK) { NRF_LOG_INFO ("Sıcaklık:% d Nem:% d \ n", sıcaklık, nem); eğer (temp_notif_enabled) { ble_ess_notify_temp (m_conn_handle, & m_ess, sıcaklık); } else { ble_ess_update_temp (& m_ess, sıcaklık); } if (humid_notif_enabled) { ble_ess_notify_humid (m_conn_handle, & m_ess, nem); } else { ble_ess_update_humid (& m_ess, nem); } } updtmrexp = false; } }
Programımızı nRF Connect kullanarak test etme
nRF Connect, BLE özellikli çevre birimlerini taramanıza ve keşfetmenize olanak tanıyan güçlü bir Bluetooth düşük enerji aracıdır. nRF Connect for mobile, çok çeşitli Bluetooth SIG kabul edilmiş standart profilleri destekler. Bunu kullanarak programımızı doğrulayabiliriz, uygulamayı yükledikten sonra uygulama üzerinde BLE cihazlarını tarayarak nRF52 kartını telefonumuzla eşleştirebiliriz. Çevresel algılama özelliği içinde, aşağıdaki resimlerde gösterildiği gibi sıcaklık ve nem değerlerinin güncellendiğini görebiliriz.
Hariharan Veerappan, yerleşik ürün geliştirmede 15 yıldan fazla deneyime sahip bağımsız bir danışmandır. Gömülü aygıt yazılımı / Linux geliştirme konusunda danışmanlık hizmetleri veriyor, ayrıca kurumsal ve çevrimiçi eğitimler veriyor. Hariharan, Elektronik ve Haberleşme Mühendisliği disiplininde Mühendislik Diplomasına sahiptir ve makaleleri ve eğitimleri aracılığıyla, deneyimlerini ve düşüncelerini Circuit Digest okuyucuları ile paylaşmaktadır.