- ערכת פיתוח nRF52:
- סטודיו משובץ סגגר
- DHT11 עם nRF52DK
- כיצד לעבוד עם Bluetooth אנרגיה נמוכה (BLE)?
- תרשים שירות / מאפיינים של BLE
- הסבר לתכנית nRF52 BLE
- בודקים את התוכנית שלנו באמצעות nRF Connect
עם להקות כושר, שעונים חכמים ומכשירים לבישים אחרים הפופולריים יותר ויותר השימוש ב- Bluetooth 5 / Bluetooth Low Energyתקני תקשורת מאומצים באופן נרחב. BLE עוזר לנו להחליף נתונים על פני מרחק קצר עם מעט מאוד כוח, וזה קריטי מאוד עבור מכשירים המופעלים באמצעות סוללות כמו לבישים. זה גם עוזר לנו להקים רשתות רשת אלחוטיות מסוג BLE, תכונה זו שימושית עבור מכשירי אוטומציה ביתיים שבהם מספר מכשירים צריכים לתקשר זה עם זה בסביבה סגורה. השתמשנו כבר ב- BLE עם Raspberry Pi ו- BLE עם ESP32 כדי לבצע כמה פונקציות BLE בסיסיות. מהנדסים מתנסים עם BLE כדי לעצב מכשירים אלחוטיים ניידים שיכולים לפעול לאורך זמן על סוללות קטנות, וישנן ערכות פיתוח מרובות לעבודה עם BLE. בסקירה האחרונה שלנו על Arduino Nano 33, שמנו לב גם כי ללוח יש nRF52840 עם יכולות BLE.
במדריך זה נחקור לוח פיתוח מרתק ופופולרי נוסף בשם nRF52 DK למדידת טמפרטורה ולחות באמצעות BLE. כברירת מחדל, פרופילי חישה של סביבה תומכים במגוון רחב של פרמטרים סביבתיים אך הדרכה זו מוגבלת רק לערכי טמפרטורה ולחות. פיתרון זה מתחבר לטלפון חכם באמצעות אנרגיה נמוכה באמצעות Bluetooth ומספק עדכון תכוף לגבי הפרמטרים הסביבתיים, כלומר טמפרטורה, לחות. נשתמש בחיישן DHT1 ומדידת הטמפרטורה תעשה ברזולוציה של 0.01 מעלות צלזיוס ומדידת לחות תעשה ברזולוציה של 0.01 אחוז.
ערכת פיתוח nRF52:
nRF52DK הינה פלטפורמת אב טיפוס מלאה ליישום Bluetooth Low Energy ו- 2.4 GHz Internet of Things Wireless. ערכת הפיתוח תומכת בכלי רשת נורדיים סטנדרטיים שונים כמו קוד פתוח, GCC וסביבות פיתוח משולבות מסחריות כמו Keil, IAR ו- Segger Embedded Studio וכו '. Nordic מספקת גם ערכת פיתוח תוכנה מלאה עבור nRF52, הכוללת תמיכה מלאה ב- nRF52DK.
nRF52DK מופעל באמצעות nRF52832 מיקרו-בקר Cortex-M4F ARM, המשולב 512 קילו-בתים של זיכרון פלאש ו -64 קילו-בתים של SRAM. ל- nRF52DK יש איתור באגים משולב של Segger J-Link On Board, המספק ניפוי באגים קל ומהיר יותר ללא התקני ניפוי-איתור חיצוניים / נוספים. הוא כולל גם את המחבר התואם ל- Arduino Uno Rev3, התומך בממשק כניסות אנלוגיות ודיגיטליות עם המעבד והוא כולל גם פרוטוקולי תקשורת סטנדרטיים כמו I2C (Inter-Integrated Circuit), SPI (ממשק היקפי סידורי) ו- UART (מקלט ומשדר אוניברסלי אסינכרוני). ערכת פיתוח זו מעוצבת עם אנטנת PCB מובנית משולבת המספקת תקשורת אלחוטית לטווח קצר באמצעות Bluetooth Low Energy לחיבור לטלפון חכם, מחשבים ניידים וטאבלטים.
סטודיו משובץ סגגר
כדי לתכנת את לוח הפיתוח, נשתמש בסטודיו המשובץ של Segger עם nRF52. Segger Embedded Studio הוא סביבת פיתוח משולבת C / C ++ (IDE) הממוקדת במיוחד לפיתוח מערכות משובצות. זה מספק פתרון All-in-One המלא המכיל את כל הדרוש לתכנות, פיתוח וניקוי באגים C. זה כולל זרימת עבודה מלאה לתכנות ופיתוח מערכות משובצות, הכוללת ניהול פרויקטים, עורך, ניפוי באגים התומכים בהתקני ARM Cortex. IDE עוצמתי וקל לשימוש זה הוא לגמרי בחינם ללקוחות נורדיים עם רישיון מלא ללא כל הגבלת גודל קוד. ניתן להוריד את ה- IDE מהקישור הבא,
הורד את Segger Embedded Studio
DHT11 עם nRF52DK
DHT11 הוא חיישן טמפרטורה ולחות בעל תכונות מלאות עם רכיב מדידת לחות מסוג עמיד ורכיב מדידת טמפרטורה מסוג NTC. הוא מציע איכות מעולה, תגובה מהירה יותר וחסכוניות. כברירת מחדל, כל חיישני DHT11 מכוילים במעבדה מה שמוביל לדיוק ואמינות קיצוניים. הוא מתקשר באמצעות מערכת ממשק סידורי חד-חוטית ומפרטים אחרים מובאים להלן
מפרט של DHT11:
- טווח לחות: 20 - 90% לחות יחסית
- טווח טמפרטורות: 0 - 50 מעלות צלזיוס
- דיוק לחות: ± 5 % לחות יחסית
- דיוק טמפרטורה: ± 2 ℃
תרשים תזמון של DHT11:
קריאת הנתונים מחיישן DHT11 פשוטה יחסית באמצעות תרשים התזמון המוצג לעיל. ההליך דומה לכל בקר וכבר השתמשנו בחיישן זה עם פלטפורמות פיתוח אחרות כמו
- חיישן DHT11 עם פטל פי
- חיישן DHT11 עם PIC16F877A
- חיישן DHT11 עם STM32F103C8
- חיישן DHT11 עם NodeMCU
כדי לממשק את חיישן הטמפרטורה והלחות DHT11 עם ערכת הפיתוח nRF52, עקוב אחר דיאגרמת החיבור המופיעה למטה.
אני משתמש במודול מחברים כדי לחבר את החיישן ללוח שלי, כך שההגדרה הסופית שלי נראית כך
תרשים זרימה לתקשורת עם DHT11:
תרשים הזרימה שלהלן מסביר את הזרימה הלוגית של התוכנית בה נשתמש כדי לתקשר בין nRF52DK ל- DHT11
פורמט נתונים:
כיצד לעבוד עם Bluetooth אנרגיה נמוכה (BLE)?
על מנת להבין כיצד להשתמש בתכונת BLE, עלינו להבין כמה מינוחים בסיסיים שמוסברים להלן. תוכל גם לקרוא את המאמר ESP32 BLE כדי לדעת יותר על BLE
פרופיל גישה כללי (GAP)
Generic גישה בפרופיל מחזיק באחריות המלאה של יצירת החיבור לתקשורת בין BLE פריפריה לבין מרכז ההתקנים. GAP מספקת גם נהלים שונים הכוללים סריקת / גילוי מכשירים, הקמת חיבור שכבת קישור, סיום קישור, לחיצת יד של תכונות אבטחה ותצורת מכשיר מן המניין. GAP פועל במצבי המכשיר הבאים
מדינות GAP |
תיאור |
המתנה |
מצב התחלתי של המכשיר עם האיפוס |
מפרסם |
פרסום מכשירים עם נתונים המסייעים לסריקת יוזמים |
סוֹרֵק |
מקבל את בקשת הסריקה ושולח למפרסם |
יוֹזֵם |
שולח בקשת חיבור ליצירת קישור |
עבד / אדון |
בחיבור, התקן כעבד אם מפרסם, מאסטר אם יוזם |
שכבת פרופיל תכונות כללית (GATT)
GATT עומד בקיצור של Generic Attribute Profile Layer, והוא אחראי על תקשורת נתונים בין שני מכשירי BLE (Peripheral & Central). תקשורת נתונים מאופיינת בצורת מאפיינים, המתקשרים ומאחסנים את הנתונים. מכשיר ה- BLE ממלא שני תפקידים שונים לתקשורת המכשיר המפורטים להלן,
- שרת GATT מכיל את מידע המאפיינים שישמש לקריאה וכתיבה. במדריך שלנו, חיישן DHT11 וההתפתחות. הערכה היא שרת ה- GATT שלנו.
- לקוח GATT קורא וכותב את הנתונים מ / אל שרת GATT. הסמארטפון הוא לקוח GATT שקורא וכותב את הנתונים ללוח החיישנים שלנו.
Bluetooth SIG
קבוצת העניין המיוחדת Bluetooth (SIG) היא ארגון התקנים העוקב אחר פיתוח תקני Bluetooth והרישוי של טכנולוגיות Bluetooth. קבוצת SIG אינה מייצרת או מוכרת מוצרי Bluetooth. הוא מגדיר את המפרט והתקינה של Bluetooth. הם מגדירים את המזהה הייחודי עבור פרופיל Bluetooth נמוך באנרגיה ומאפיינים בהתאמה. מפרט פרופיל GATT ניתן למצוא בקישור למטה
מפרטי פרופיל GATT
בהתבסס על מפרט GATT המופיע בקישור שלמעלה, אספנו את המזהים הייחודיים הנדרשים לפרויקט שלנו, המופיעים בטבלה הבאה.
פרופיל / מאפיינים |
UUID |
GAP (גישה כללית) |
0x1800 |
GATT (תכונה כללית) |
0x1801 |
ESS (חישה סביבתית) |
0x181A |
טֶמפֶּרָטוּרָה |
0x2A6E |
לחות |
0x2A6F |
תרשים שירות / מאפיינים של BLE
BU UUIDs
UUID |
ערך 16 סיביות |
UUID של 128 סיביות |
שירות ESS |
0x181A |
0000181A-0000-0000-0000-00000000000 |
Temp Char |
0x2A6E |
00002A6E-0000-0000-0000-00000000000 |
לחות Char |
0x2A6F |
00002A6F-0000-0000-0000-00000000000 |
מאפייני טמפרטורה
תכונה |
תיאור |
יחידה |
תואר צלזיוס ברזולוציה של 0.01 מעלות |
פוּרמָט |
sint16 |
UUID |
0x2A6E |
אקספוננט עשרוני |
2 |
לקרוא |
חובה |
מאפייני לחות
תכונה |
תיאור |
יחידה |
אחוז ברזולוציה של 0.01 אחוז |
פוּרמָט |
uint16 |
UUID |
0x2A6F |
אקספוננט עשרוני |
2 |
לקרוא |
חובה |
הסבר לתכנית nRF52 BLE
אנו נשתמש ב- SDK nRF5 על מנת לתכנת את ערכת הפיתוח nRF52 שלנו. nRF5 SDK היא ערכת פיתוח תוכנה שלמה המשולבת במספר פרופילי Bluetooth נמוכים באנרגיה, GATT Serializer ותמיכה במנהלי התקן עבור כל ציוד היקפי ב- SoCs מסדרת nRF5. SDK זה מסייע למפתחים לבנות יישומי Bluetooth מלאי אנרגיה נמוכה עם אפיון מלא, אמין ומאובטח עם סדרות מיקרו-בקרים nRF52 ו- nRF51. את התוכנית השלמה ניתן להוריד מכאן, הסבר הקוד הוא כדלקמן.
הגדר את סיכת ה- DATA של DHT11 כקלט ב- nrf52 עם הפעלת pull up. מצב הסיכה צריך להיות גבוה כדי לאשר ש- nRF52 מספק PULLUP מתאים לסיכת הנתונים DHT11
/ * הגדר קלט ובדוק אם האות נמשך * / Data_SetInput (); DelayUSec (50); אם (Data_GetVal () == 0) {החזר DHT11_NO_PULLUP; }
צור אות START ממיקרו בקר nRF52 ובדוק אם יש אות אישור.
/ * שלח אות התחלה * / Data_SetOutput (); Data_ClrVal (); DelayMSec (20); / * שמור על אות נמוך לפחות 18 אלפיות השנייה * / Data_SetInput (); DelayUSec (50); / * בדוק אם אות ההכרה * / אם יש לשלוף את האות (Data_GetVal ()! = 0) {/ * נמוך על ידי החיישן * / להחזיר DHT11_NO_ACK_0; } / * המתן מקסימום 100 לנו לאות ack מהחיישן * / cntr = 18; בעוד (Data_GetVal () == 0) {/ * המתן עד שהאות יעלה * / DelayUSec (5); אם (--cntr == 0) {return DHT11_NO_ACK_1; האות / * צריך להיות למעלה עבור ה- ACK כאן * /}} / * המתן עד שיירד שוב, סוף רצף ack * / cntr = 18; בזמן ש (Data_GetVal ()! = 0) {/ * המתן עד שהאות ירד * / DelayUSec (5); אם (--cntr == 0) {return DHT11_NO_ACK_0; כאן האות / * אמור להיות שוב לאפס * /}}
קרא עכשיו את 40 סיביות הנתונים המכילות 2 בתים של טמפרטורה, 2 בתים של לחות ובת אחד של בדיקת בדיקה.
/ * קרא עכשיו את נתוני 40 הביט * / i = 0; נתונים = 0; loopBits = 40; לעשות {cntr = 11; / * חכה מקסימום 55 us * / while (Data_GetVal () == 0) {DelayUSec (5); אם (--cntr == 0) {להחזיר DHT11_NO_DATA_0; }} cntr = 15; / * המתן מקסימום 75 us * / while (Data_GetVal ()! = 0) {DelayUSec (5); אם (--cntr == 0) {החזר DHT11_NO_DATA_1; }} נתונים << = 1; / * סיבית נתונים הבאה * / אם (cntr <10) {/ * אות נתונים גבוה> 30 us ==> סיבית נתונים 1 * / נתונים - = 1; } אם ((loopBits & 0x7) == 1) {/ * בתים הבאים * / חיץ = נתונים; i ++; נתונים = 0; }} תוך (- loopBits! = 0);
אמת את הנתונים בעזרת Checksum.
/ * לבדוק CRC * / אם ((uint8_t) (חיץ + חיץ + חיץ + חיץ)! = חיץ) {החזר DHT11_BAD_CRC; }
טפלו ואחסנו את הטמפרטורה והלחות
/ * אחסן ערכי נתונים עבור המתקשר * / לחות = ((int) מאגר) * 100 + מאגר; טמפרטורה = ((int) חיץ) * 100 + חיץ;
אתחל את שירות nRF5 SDK Logger. nRF52 SDK מוצג עם ממשק בקרת רישום הנקרא nrf_log ומשתמש ב backend ברירת המחדל לרישום המידע. ברקע האחורי המוגדר כברירת מחדל יהיה יציאה טורית. כאן אנו לאתחל הוא nrf_log ממשק מלא nrf_log Backends גם את ברירת המחדל.
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 (קוד שגיאה);
ל- nRF52 SDK יש את המודול המלא של ניהול צריכת החשמל מאחר ומכשירי BLE צריכים לעבוד מספר חודשים על סוללת תא מטבע. ניהול כוח ממלא תפקיד חיוני ביישומי BLE. מודול ניהול הכוח nRF52 מטפל בו לחלוטין. כאן אנו מאתחלים את מודול ניהול צריכת החשמל של nRF5 SDK
ret_code_t err_code; err_code = nrf_pwr_mgmt_init (); APP_ERROR_CHECK (קוד שגיאה);
ל- nRF52 SDK יש קובץ Hex מובנה של Nordic Device Soft Firmware המורכב, הכולל Bluetooth מחסנית מרכזית והיקפית עם אנרגיה נמוכה. מחסנית פרוטוקול מוסמכת זו כוללת GATT, GAP, ATT, SM, L2CAP ו- Link Layer. כאן אנו עוקבים אחר רצף האתחול, אותו מאותחל ה- nRF5 BLE Radio Stack (Nordic Soft Device)
ret_code_t err_code; err_code = nrf_sdh_enable_request (); APP_ERROR_CHECK (קוד שגיאה); // הגדר את מחסנית ה- BLE באמצעות הגדרות ברירת המחדל. // הבא את כתובת ההתחלה של זיכרון ה- RAM של היישום. 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 (קוד שגיאה);
GATT אחראית על תקשורת נתונים בין מכשירים היקפיים BLE ומרכזיים. מודול ה- GATT של nRF52 מועיל למשא ומתן ולעקוב אחר גודל 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 = 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 = 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 = false; cp_init.evt_handler = on_conn_params_evt; cp_init.error_handler = connect_params_error_handler; err_code = ble_conn_params_init (& cp_init); APP_ERROR_CHECK (קוד שגיאה);
לאחר השלמת אתחול המערכת, כאן אנו מתחילים בפרסום שם המכשיר BLE ומידע היכולת. מכאן ניתן לראות פריפריה זו דרך רשימת סריקת 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; ידית סרק_מצב_ (); אם (updtmrexp) { dhtErrCode = DHTxx_Read (& טמפרטורה ולחות); אם (dhtErrCode == DHT11_OK) { NRF_LOG_INFO ("טמפרטורה:% d לחות:% d \ n", טמפרטורה, לחות); אם (temp_notif_enabled) { ble_ess_notify_temp (m_conn_handle, & m_ess, temperature); } אחר { ble_ess_update_temp (& m_ess, temperature); } אם (humid_notif_enabled) { ble_ess_notify_humid (m_conn_handle, & m_ess, לחות); } אחר { ble_ess_update_humid (& m_ess, לחות); } } updtmrexp = false; } }
בודקים את התוכנית שלנו באמצעות nRF Connect
nRF Connect הוא כלי רב עוצמה עם אנרגיה נמוכה ב- Bluetooth המאפשר לסרוק ולחקור את ציוד היקפי המותאם ל- BLE. nRF Connect לנייד תומך במגוון רחב של פרופילים סטנדרטיים שאומצו על ידי Bluetooth SIG. אנו יכולים לאמת את התוכנית שלנו באמצעות זה, לאחר התקנת האפליקציה נוכל להתאים את לוח ה- nRF52 לטלפון שלנו על ידי סריקת התקני BLE באפליקציה. בתוך תכונת החישה הסביבתית, אנו יכולים להבחין בערכי הטמפרטורה והלחות המתעדכנים כפי שמוצג בתמונות שלמטה.
הריהרן וראפן הוא יועץ עצמאי בעל ניסיון של יותר מ -15 שנה בפיתוח מוצרים משובצים. הוא מספק שירותי ייעוץ בפיתוח קושחה / לינוקס משובץ, וכן מעניק הדרכה ארגונית ומקוונת. הריהרן הוא בעל תואר ראשון בהנדסה בתחומי הנדסת אלקטרוניקה ותקשורת, באמצעות המאמרים וההדרכות שלו הוא משתף את קוראי Circuit Digest מניסיונו ומחשבותיו.