Prototipați rapid aplicațiile Bluetooth IoT cu un kit de dezvoltare și cu plăci de completare din comerț

By Stephen Evanczuk

Contributed By Digi-Key's North American Editors

Cererea de produse inteligente conectate oferă numeroase oportunități pentru dezvoltatorii care sunt capabili să transforme rapid conceptele în aplicații funcționale bazate pe Internetul lucrurilor (IoT). Disponibilitatea procesoarelor cu consum redus de energie, a opțiunilor de conectivitate wireless și a unei game largi de periferice hardware oferă o bază solidă pentru implementarea unor proiecte adecvate cu consum redus de energie, pregătite pentru producție.

Cu toate acestea, în etapa inițială de definire a produsului, dezvoltatorii au nevoie de o platformă de dezvoltare flexibilă pentru a putea construi prototipuri rapide bazate pe aceeași clasă de procesoare, subsisteme de conectivitate și periferice. Capacitatea de a construi rapid prototipuri funcționale și de a adăuga cu ușurință funcționalități este esențială pentru a asigura demonstrarea timpurie a conceptului și pentru a sprijini dezvoltarea de software personalizat.

Acest articol arată cum pot dezvoltatorii să folosească componente hardware și software de la Silicon Labs pentru a construi rapid prototipuri de dispozitive IoT conectate specializate și eficiente din punct de vedere energetic, folosind o selecție largă de plăci de completare ușor de găsit în comerț.

Promovarea prototipării rapide

Atunci când explorează noi posibilități pentru dispozitivele IoT wireless alimentate cu baterii, dezvoltatorii se pot simți blocați de numeroasele detalii implicate în crearea unei platforme de dezvoltare funcționale. Cu subsistemele lor integrate, dispozitivele avansate de tip sistem pe un cip (SoC) pot constitui nucleul unei astfel de platforme, însă dezvoltatorii tot trebuie să construiască un sistem complet în jurul lor.

Pentru a construi o platformă de dezvoltare adecvată pentru aceste dispozitive, dezvoltatorii nu trebuie numai să satisfacă cerințele fundamentale de performanță robustă și durată de viață extinsă a bateriei, ci și să asigure flexibilitate pentru a îndeplini cerințele specifice ale fiecărei aplicații. Kitul de explorare Silicon Labs BGM220-EK4314A satisface această combinație de nevoi, permițând dezvoltatorilor să se concentreze pe prototiparea rapidă a noilor concepte de proiectare, în loc să se ocupe de detaliile implicate în construirea propriei platforme de dezvoltare.

Platformă flexibilă de dezvoltare rapidă

Oferind o platformă cu costuri reduse pentru dezvoltarea de aplicații bazate pe Bluetooth, kitul de explorare BGM220-EK4314A combină modulul BGM220P Wireless Gecko (BGM220PC22HNA) de la SiLabs, un depanator J-Link SEGGER integrat, un buton, o diodă emițătoare de lumină (led) și mai multe opțiuni de extindere (Figura 1).

Imagine a kitului de explorare SiLabs BGM220-EK4314AFigura 1: kitul de explorare SiLabs BGM220-EK4314A oferă o combinație dintre performanța de procesare, gestionarea energiei și flexibilitatea de configurare necesară pentru a construi rapid prototipuri și a evalua diferite configurații hardware periferice. (Sursă imagine: Silicon Labs)

Modulul BGM220P servește ca soluție completă pentru dispozitive IoT mici, alimentate cu baterii. SoC-ul EFR32BG22 Blue Gecko integrat are un consum de energie foarte redus, capacități de unghi de recepție (AoA) și unghi de emitere (AoD) Bluetooth și precizie de localizare sub un metru – toate acestea fiind necesare într-o gamă tot mai largă de aplicații Bluetooth populare, inclusiv etichete de urmărire a bunurilor, încuietori de ușă inteligente, produse de fitness și multe altele.

Capabil să funcționeze ca un sistem autonom, modulul BGM220P combină SoC EFR32BG22 cu 512 Kbytes de memorie flash, 32 Kbytes de memorie cu acces aleatoriu (RAM), cristale de înaltă frecvență (HF) și joasă frecvență (LF) (XTAL), precum și o rețea de concordanță de 2,4 gigahertzi (GHz) și o antenă ceramică pentru conectivitate wireless (Figura 2).

Diagrama modulului SiLabs BGM220PFigura 2: capabil să funcționeze ca un sistem independent, modulul SiLabs BGM220P combină SoC-ul EFR32BG22 Blue Gecko cu componentele suplimentare necesare pentru a implementa un dispozitiv cu Bluetooth. (Sursă imagine: Silicon Labs)

Pe lângă capacitatea sa de a funcționa ca gazdă autonomă pentru proiecte IoT cu amprentă mică, modulul poate fi și un coprocesor de rețea (NCP) pentru un procesor gazdă conectat prin interfața UART a modulului. Stiva sa Bluetooth integrată execută servicii wireless pentru aplicațiile care rulează pe modul în proiecte autonome sau care procesează comenzile primite de la gazdă atunci când rulează în proiecte NCP.

SoC wireless cu consum redus de energie

SoC-ul Bluetooth wireless EFR32BG22 al modulului BGM220P are un nucleu Arm Cortex-M33 pe 32 de biți, un radio de 2,4 GHz, securitate, subsisteme de gestionare a energiei și mai multe opțiuni de temporizatoare și interfețe. Proiectat special pentru proiecte de foarte mică putere, alimentate cu baterii, SoC-ul EFR32BG22 utilizează mai multe caracteristici de gestionare a energiei care pot permite funcționarea cu baterii de tip pastilă timp de până la zece ani.

Funcționând de la o singură sursă de tensiune externă, SoC își folosește unitatea internă de gestionare a energiei pentru a genera tensiuni de alimentare interne. În timpul funcționării, unitatea de gestionare a energiei controlează tranzițiile între cele cinci moduri energetice (EM) ale SoC. Fiecare mod reduce și mai mult consumul de energie prin menținerea unui număr din ce în ce mai mic de blocuri funcționale active, pe măsură ce SoC trece din modul activ (EM0) în modul de somn (EM1), modul de somn profund (EM2), modul de oprire (EM3) sau modul de închidere (EM4) (Figura 3).

Diagrama cu SoC Silicon Labs EFR32BG22 (faceți clic pentru a mări imaginea)Figura 3: unitatea de gestionare a energiei a SoC-ului EFR32BG22 controlează tranzițiile între modurile de energie EM0, EM1, EM2, EM3 și EM4 (codul de culori în partea de jos a imaginii). (Sursă imagine: Silicon Labs)

În modul activ (EM0) la 76,8 MHz și 3 volți, folosind convertorul c.c./c.c. intern, SoC-ul consumă 27 microamperi pe megahertz (μA/MHz). EM0 este modul de funcționare normală și este singurul în care sunt disponibile nucleul procesorului Cortex M33 și toate blocurile periferice.

În modul de somn (EM1) sunt disponibile toate perifericele, mai puține rămânând active pe măsură ce sistemul intră în modurile cu consum și mai redus de energie. În modurile sale cu consum redus de energie, reducerea numărului de tacturi active și de blocuri funcționale duce la niveluri de consum de energie semnificativ mai mici:

  • 17 μA/MHz în modul de somn (EM1)
  • 1,40 μA în modul de somn profund (EM2) cu 32 Kbytes de memorie RAM de retenție și ceas în timp real (RTC) care rulează din LFXO
  • 1,05 μA în modul de oprire (EM3) cu 8 Kbytes de memorie RAM de retenție și RTC care funcționează de la oscilatorul (ULFRCO) cu rezistență-condensator (RC) de 1 kilohertz (kHz) cu frecvență ultra-joasă integrat în SoC
  • 0,17 μA în modul de închidere (EM4)

Unele dispozitive alimentate cu baterii au nevoie de mai mult decât capacitatea de a opera procesorul în moduri de funcționare cu consum redus de energie. De obicei, multe dintre aplicațiile cu Bluetooth vor prezenta perioade lungi de activitate redusă sau inexistentă, dar necesită o reacție cu latență redusă atunci când activitatea se reia. De fapt, chiar dacă o aplicație are cerințe de latență mai permisive, un timp de trezire lent risipește energie, deoarece procesorul nu efectuează nicio activitate utilă în timp ce finalizează procesul de trezire și intră în modul activ (sau finalizează procesul de intrare într-un mod cu consum mai redus de energie de la un mod cu consum mai ridicat de energie).

Pe măsură ce timpul dintre perioadele active se reduce, utilizarea unui mod de somn cu consum redus de energie poate deveni chiar contraproductivă atunci când o trezire lentă sau un timp de intrare într-un mod energetic consumă mai multă energie decât ar fi consumat dacă procesorul ar fi rămas într-un mod cu consum mai mare de energie în timpul perioadei inactive. Prin urmare, dezvoltatorii care caută soluții pentru optimizarea duratei de viață a bateriei vor menține uneori un procesor într-un mod cu consum de energie mai mare decât cel cerut de nevoile de procesare ale aplicației.

Prin utilizarea unui procesor cu timpi de trezire și de intrare mai rapizi, dezvoltatorii pot profita mai mult de modurile cu consum redus de energie ale procesorului. În EM1, EFG32BG22 se activează în trei tacturi/1,24 microsecunde (µs) și are un timp de intrare de 1,29 µs, crescând la 8,81 milisecunde (ms) și, respectiv, 9,96 µs, în EM4 (Tabelul 1).

Modul energetic Trezire (execuție din RAM/Flash) Intrare (execuție din Flash)
EM1 3 tacturi/1,24 μs 1,29 μs
EM2 5,15/13,22 μs 5,23 μs
EM3 5,15/13,21 μs 5,23 μs
EM4 8,81 ms (numai Flash) 9,96 μs

Tabelul 1: timpii de trezire și de intrare în modurile energetice pentru SoC EFG32BG22. (Sursa tabelului: Silicon Labs)

De asemenea, metoda utilizată pentru trezirea procesorului atunci când se reia activitatea poate să afecteze semnificativ durata de viață a bateriei. Cu toate că unele aplicații – cum ar fi cele industriale – impun ca sistemele să utilizeze procesarea prin interogare pentru a asigura o sincronizare periodică strictă, multe aplicații din domeniul dispozitivelor de consum utilizează procesarea bazată pe evenimente pentru a răspunde la activități specifice. Utilizarea metodelor de interogare pentru aplicațiile bazate pe evenimente, de exemplu, poate eroda semnificativ durata de viață a bateriei atunci când procesorul se trezește în mod repetat și inutil.

În același mod în care multe proiecte bazate pe senzori folosesc funcționalitatea de trezire la întrerupere pentru a evita trezirea repetată a procesorului doar pentru a verifica activitatea, o funcție de trezire la RF încorporată în subsistemul radio al SoC EFG32BG22 permite o abordare similară bazată pe întreruperi. Acest lucru le permite dezvoltatorilor să mențină procesorul într-un mod cu consum redus de energie până când apare o activitate de radiofrecvență (RF).

În practică, dezvoltatorii plasează SoC-ul wireless EFG32BG22 într-un mod EM2, EM3 sau EM4 cu consum foarte redus de energie și se bazează pe capacitatea de trezire la RF pentru trezirea SoC-ului atunci când este detectată energia RF. La simpla detectare a energiei peste prag, capacitatea RFSENSE consumă 131 nanoamperi (nA). Un mod RFSENSE mai selectiv consumă ceva mai mult curent, la 138 nA, dar în acest mod, RFSENSE filtrează semnalele RF primite pentru a evita trezirea la zgomot RF în locul unui semnal RF valid.

În unele cazuri, este posibil să nu fie deloc necesar ca SoC EFG32BG22 să activeze nucleul procesorului pentru a răspunde la evenimentele externe: Peripheral Reflex System (PRS) de la SiLabs permite perifericelor să răspundă la evenimente și să funcționeze fără a trezi nucleul procesorului. Perifericele pot comunica direct între ele, iar funcțiile lor pot fi combinate pentru a asigura o funcționalitate complexă. Prin utilizarea capacităților PRS cu moduri cu consum redus de energie, dezvoltatorii pot reduce în mod substanțial consumul de energie fără a compromite funcționalități esențiale, precum achiziția de date de la senzori.

Depanare încorporată și extindere ușoară

Fiind integrat în placa kitului de explorare BGM220, modulul BGM220P oferă setul complet de capacități de gestionare și de procesare a energiei ale SoC-ului EFR32BG22 în proiectele Bluetooth alimentate cu baterii. Atunci când este necesară construirea rapidă a prototipurilor pentru a explora noi concepte de proiectare, alte caracteristici ale plăcii ajută la accelerarea dezvoltării.

Accesat prin intermediul conectorului USB Micro-B al plăcii, un depanator J-Link SEGGER integrat permite descărcarea și depanarea codului, și există și un port COM virtual pentru acces la consola gazdă. Depanatorul acceptă și capacitatea SiLabs pentru interfața de urmărire a pachetelor (PTI) pentru analizarea pachetelor transmise sau primite într-o rețea wireless.

Pentru prototiparea rapidă, compatibilitatea plăcii pentru mai multe opțiuni de expansiune oferă flexibilitatea de a explora noi idei de proiectare care necesită diferite combinații de senzori, mecanisme de acționare, opțiuni de conectivitate și alte periferice. Având la dispoziție o mare varietate de plăci de completare mikroBUS și hardware pentru sistemul de conectare Qwiic de la mai mulți furnizori, dezvoltatorii pot configura rapid o platformă de dezvoltare pentru fiecare aplicație.

Conectată la soclul mikroBUS a plăcii, o placă mikroBUS se conectează la modulul BGM220P prin interfețele I2C, SPI sau UART. Conectorul Qwiic oferă interfața I2C a sistemului Qwiic pentru conectarea uneia sau mai multor plăci Qwiic pe distanțe de până la aproximativ patru picioare. Pentru conexiuni pe distanțe mai mari, dezvoltatorii pot utiliza placa SparkFun QwiicBus EndPoint (COM-16988), care utilizează semnalizarea diferențială pentru a menține integritatea semnalului I2C la distanțe de până la aproximativ 100 de picioare.

Dezvoltarea rapidă a aplicațiilor

SiLabs aplică conceptul de expansiune rapidă la dezvoltarea de software pentru aplicații. Pe lângă pachetele de compatibilitate pentru plăci, drivere, biblioteci și anteturi pentru dezvoltare personalizată, compania oferă mai multe exemple de aplicații incluse în mediul său de dezvoltare Simplicity Studio, precum și proiecte suplimentare disponibile în depozitele GitHub ale SiLabs. De fapt, dezvoltatorii pot începe să exploreze dezvoltarea de aplicații de senzori cu o aplicație de temperatură de probă inclusă, care utilizează senzorul de temperatură intern al SoC EFR32BG22 ca sursă de date.

Construită în jurul serviciului standard Bluetooth Health Temperature, aplicația de temperatură oferă o demonstrație gata de utilizare a fluxului de procesare printr-o aplicație IoT Bluetooth generică construită pe arhitectura de software SiLabs. Aplicația apelează o serie de rutine de inițializare pentru serviciile de sistem și serviciile de aplicație care configurează programele de gestionare a întreruperilor și apelările inverse. După finalizarea inițializării, aplicația intră într-o buclă nesfârșită pentru a aștepta evenimente (Lista 1).

Copiați
int main(void)
{
  // Initialize Silicon Labs device, system, service(s) and protocol stack(s).
  // Note that if the kernel is present, processing task(s) will be created by
  // this call.
  sl_system_init();



  // Initialize the application. For example, create periodic timer(s) or
  // task(s) if the kernel is present.
  app_init();



#if defined(SL_CATALOG_KERNEL_PRESENT)
  // Start the kernel. Task(s) created in app_init() will start running.
  sl_system_kernel_start();
#else // SL_CATALOG_KERNEL_PRESENT
  while (1) {
    // Do not remove this call: Silicon Labs components process action routine
    // must be called from the super loop.
    sl_system_process_action();



    // Application process.
    app_process_action();



#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
    // Let the CPU go to sleep if the system allows it.
    sl_power_manager_sleep();
#endif
  }
#endif // SL_CATALOG_KERNEL_PRESENT
}
Lista 1: aplicațiile de probă Bluetooth de la SiLabs utilizează un cadru de execuție generic în care o buclă nesfârșită permite apelărilor inverse și programelor de gestionare a evenimentelor să proceseze acțiunile sistemului și ale aplicației după inițializare. (Sursa codului: Silicon Labs)

În această aplicație, atunci când un temporizator setat în timpul inițializării numără invers, o rutină de apelare inversă asociată efectuează o măsurare a temperaturii. După ce construiesc aplicația și reprogramează firmware-ul plăcii, dezvoltatorii pot utiliza aplicația SiLabs EFR Connect – o aplicație mobilă Bluetooth generică, care funcționează cu toate kiturile și dispozitivele Bluetooth de la Silicon Labs. Pe lângă faptul că oferă cadrul pentru aplicațiile personalizate, aplicația ajută la dezvoltare prin faptul că oferă o vizualizare a caracteristicilor acceptate asociate unui serviciu Bluetooth, cum ar fi serviciul Bluetooth Health Thermometer utilizat în această aplicație de probă (Figura 4).

Imagine a aplicației SiLabs EFR ConnectFigura 4: aplicația SiLabs EFR Connect afișează caracteristicile serviciilor Bluetooth utilizate într-o aplicație, nu doar accelerând dezvoltarea prototipurilor, ci și asigurând un cadru pentru dezvoltarea aplicațiilor personalizate. (Sursă imagine: Silicon Labs)

În Simplicity Studio, dezvoltatorii pot importa o serie de exemple diferite de aplicații Bluetooth care demonstrează diverse scenarii de utilizare, inclusiv proiecte construite cu plăci Qwiic sau mikroBUS, separat sau în combinație. De exemplu, o aplicație de probă care demonstrează utilizarea serviciilor standard Bluetooth Heart Rate (HR) și Bluetooth Pulse Oximeter (SpO2) în combinație cu placa MIKROE-4037 Heart Rate 2 Click mikroBUS de la MikroElektronika, care conține biosenzorul MAX86161 de la Maxim Integrated. MAX86161 oferă un subsistem complet cu consum redus de energie capabil să furnizeze măsurători precise ale HR și SpO2 unui procesor gazdă conectat prin interfața I2C. (Pentru mai multe informații despre utilizarea MAX86161, consultați Construiți un adevărat aparat auditiv de fitness wireless – Partea 1: Măsurarea ritmului cardiac și a SpO2).

Având nevoie de un driver suplimentar și de un algoritm de procesare mai solicitant decât o aplicație pentru temperatură, această aplicație oferă o demonstrație mai complexă a arhitecturii unei aplicații software pentru dispozitive IoT (Figura 5).

Diagrama aplicației HR/SpO2Figura 5: proiectele de probă, cum ar fi o aplicație HR/SpO2, ajută la accelerarea dezvoltării prototipurilor, demonstrând în același timp un flux de proces tipic pentru aplicațiile senzorilor Bluetooth de putere redusă. (Sursă imagine: Silicon Labs)

Ca și în cazul aplicației de temperatură menționate mai sus, această aplicație se bazează pe o serie de rutine de inițializare pentru configurarea sistemului și a serviciilor aplicației. În cazul în care rutina app_process_action este goală în aplicația de temperatură, această aplicație adaugă un apel la o rutină, hrm_loop, în app_process_action. Acest lucru are ca rezultat un apel la hrm_loop la fiecare trecere prin bucla nesfârșită de nivel superior prezentată anterior în Lista 1. În plus, se utilizează un temporizator software pentru a actualiza periodic datele HR și SpO2.

La rândul său, rutina hrm_loop apelează maxm86161_hrm_process, care extrage eșantioane dintr-o coadă de așteptare menținută de funcțiile de asistență și le transmite unei rutine de procesare a eșantioanelor. Aceasta, la rândul său, apelează o pereche de rutine, maxm86161_hrm_frame_process și maxm86161_hrm_spo2_frame_process, care execută algoritmi pentru a valida și genera rezultate HR și, respectiv, SpO2. Dezvoltatorii pot vizualiza rezultatele, împreună cu alte caracteristici ale serviciului, utilizând aplicația EFR Connect menționată anterior.

Un alt exemplu de aplicație software arată modul în care dezvoltatorii pot dezvolta o aplicație complexă, cum ar fi această aplicație HR/SpO2, atunci când își extind platforma hardware. Utilizând placa kitului de explorare BGM220-EK4314A și ecosistemul software SiLabs, dezvoltarea pe baza hardware-ului și software-ului existent este relativ simplă. SiLabs demonstrează această abordare cu o aplicație de probă care adaugă un afișaj OLED la platforma hardware/software utilizată pentru aplicația HR/SpO2 de mai sus. În acest exemplu, o placă de completare Qwiic SparkFun cu afișaj OLED (LCD-14532) este atașată la conectorul Qwiic al plăcii, în timp ce placa de completare MikroElektronika Heart Rate 2 Click rămâne la locul ei din aplicația de probă HR/SpO2 anterioară (Figura 6).

Imagine a plăcii kitului de explorare Silicon Labs BGM220-EK4314A cu afișaj OLEDFigura 6: dezvoltatorii pot adăuga rapid funcționalități la un proiect existent construit pe placa kitului de explorare BGM220-EK4314A – adăugând aici un afișaj OLED la un prototip HR/SpO2 existent. (Sursă imagine: Silicon Labs)

În afară de adăugarea unui driver și a serviciilor suport pentru placa OLED, aplicația software rămâne în mare parte aceeași pentru această versiune extinsă a aplicației HR/SpO2. Temporizatorul software menționat anterior pentru aplicația HR/SpO2 adaugă un apel la funcția hrm_update_display, care afișează datele HR și SpO2 (Lista 2).

Copiați
    /* Software Timer event */
    case sl_bt_evt_system_soft_timer_id:
      /* Check which software timer handle is in question */
      if (evt->data.evt_system_soft_timer.handle == HEART_RATE_TIMER) {
        heart_rate_send_new_data(connection_handle);
        break;
      }
 
      if (evt->data.evt_system_soft_timer.handle == PULSE_OXIMETER_TIMER) {
        pulse_oximeter_send_new_data(connection_handle);
        break;
      }
 
      if (evt->data.evt_system_soft_timer.handle == DISPLAY_TIMER) {
        hrm_update_display();
        break;
      }
      break;
Lista 2: utilizând kitul și ecosistemul software, dezvoltatorii pot adăuga funcționalitatea de afișare la o aplicație HR/SpO2 existentă prin conectarea unei plăci de afișaj și prin efectuarea unor modificări de software minime în afară de adăugarea unui apel funcțional, hrm_update_display, la programul de gestionare a temporizatorului software al aplicației existente. (Sursa codului: Silicon Labs)

Această abordare hardware și software extensibilă permite dezvoltatorilor să creeze rapid aplicații IoT funcționale. Deoarece atât hardware-ul, cât și software-ul pot fi adăugate sau eliminate cu ușurință, dezvoltatorii pot explora mai ușor noi soluții de proiectare și pot evalua configurații alternative.

Concluzie

Dispozitivele IoT Bluetooth alimentate cu baterii se află în centrul aplicațiilor populare și reprezintă un factor cheie pentru satisfacerea cererii continue de funcționalitate sporită și durată de viață mai lungă. Pentru dezvoltatori, satisfacerea eficientă a acestor cerințe contradictorii necesită capacitatea de a explora rapid noi modele și de a evalua concepte alternative de proiectare. Utilizând un kit de dezvoltare și software-ul asociat de la Silicon Labs, dezvoltatorii pot construi rapid prototipuri, adăugând și eliminând componente hardware după cum este necesar pentru a îndeplini cerințele specifice ale aplicațiilor.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

About this author

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

About this publisher

Digi-Key's North American Editors