Hvis der er uklarheder i denne artikel, bedes du se den originale engelske version.

Hurtig prototype af Bluetooth IoT-applikationer med et udviklingskit og Off-the-Shelf Add-On kort

Af Stephen Evanczuk

Bidraget af DigiKeys nordamerikanske redaktører

Efterspørgslen efter intelligente, forbundne produkter giver store muligheder for udviklere, der hurtigt kan omsætte koncepter til velfungerende IoT-applikationer (Internet of Things). Tilgængeligheden af energieffektive processorer, trådløse tilslutningsmuligheder og et bredt udvalg af perifer hardware giver et solidt grundlag for implementering af egnede design til lav effekt, der er klar til produktion.

I den tidlige fase af produktdefinitionen har udviklerne imidlertid brug for en fleksibel udviklingsplatform til at bygge hurtige prototyper baseret på den samme klasse af processorer, tilslutning af undersystemer og perifer udstyr. Evnen til hurtigt at opbygge fungerende prototyper og nemt tilføje funktionalitet er afgørende for at levere tidlige konceptprøver og for at støtte udvikling af tilpasset software.

Denne artikel viser, hvordan udviklere kan bruge hardware og software fra Silicon Labs til hurtigt at opbygge specialiserede energieffektive prototyper af tilsluttede IoT-enheder ved hjælp af et bredt udvalg af let tilgængelige off-the-shelf add-on kort.

Muliggør hurtig prototypefremstilling

Når udviklere udforsker nye muligheder for batteridrevne trådløse IoT-enheder, kan de blive opslugt af de mange detaljer, der er involveret i at skabe en fungerende udviklingsplatform. Med deres integrerede undersystemer kan avancerede system-on-chip-enheder (SoC-enheder) udgøre kernen i en sådan platform, men udviklerne skal stadig opbygge et komplet system omkring dem.

For at opbygge en passende udviklingsplatform til disse enheder skal udviklerne ikke kun opfylde de grundlæggende krav til robust ydeevne og forlænget batterilevetid, men de skal også indbygge fleksibilitet til at understøtte de specifikke krav til hver enkelt applikation. Silicon Labs BGM220-EK4314A Explorer Kit opfylder denne kombination af behov og giver udviklerne mulighed for at fokusere på hurtigt at lave prototyper af nye designkoncepter i stedet for at skulle beskæftige sig med detaljerne i forbindelse med opbygningen af deres egen udviklingsplatform.

Fleksibel platform til hurtig udvikling

BGM220-EK4314A Explorer Kit tilbyder en billig platform til udvikling af Bluetooth-baserede applikationer og kombinerer SiLabs' BGM220P Wireless Gecko-modul (BGM220PC22HNA), en indbygget SEGGER J-Link-debugger, en trykknap, en lysemitterende diode (LED) og flere udvidelsesmuligheder (figur 1).

Billede af SiLabs BGM220-EK4314A Explorer KitFigur 1: SiLabs BGM220-EK4314A Explorer Kit giver den kombination af behandlingsydelse, energistyring og fleksibel konfiguration, der er nødvendig for hurtigt at bygge prototyper og evaluere forskellige perifere hardwarekonfigurationer. (Billedkilde: Silicon Labs)

BGM220P-modulet fungerer som en komplet løsning til små batteridrevne IoT-enheder. Dens integrerede EFR32BG22 Blue Gecko SoC har ultra-lavt strømforbrug, Bluetooth-funktioner til AoA (Angle of Arrival) og AoD (Angle of Departure) og en nøjagtighed af lokalisering på under én meter - alt sammen noget, der er nødvendigt i et voksende antal populære Bluetooth-applikationer, herunder sporing af aktiver, smarte dørlåse, fitness og meget mere.

BGM220P-modulet, der kan fungere som et selvstændigt system, kombinerer EFR32BG22 SoC'en med 512 Kbytes flash, 32 Kbytes RAM-hukommelse (Random Access Memory), højfrekvente (HF) og lavfrekvente (LF) krystaller (XTAL) samt et 2,4 gigahertz (GHz) tilpasningsnetværk og en keramisk antenne til trådløs forbindelse (figur 2).

Diagram over SiLabs BGM220P-modulFigur 2: SiLabs BGM220P-modulet, der kan fungere som et selvstændigt system, kombinerer EFR32BG22 Blue Gecko SoC'en med yderligere komponenter, der er nødvendige for at implementere en Bluetooth-aktiveret enhed. (Billedkilde: Silicon Labs)

Ud over sin evne til at fungere som en standalone-host til IoT-designs med lille fodaftryk kan modulet også fungere som en netværks-coprocessor (NCP) for en host-processor, der er tilsluttet via modulets UART-interface. Den integrerede Bluetooth-stack udfører trådløse tjenester for applikationer, der kører på modulet i standalone-designs, eller behandler kommandoer modtaget fra host'en, når de kører i NCP-designs.

Energieffektiv trådløs SoC

BGM220P-modulets EFR32BG22 Bluetooth trådløse SoC integrerer en 32-bit Arm Cortex-M33-kerne, en 2,4 GHz-radio, sikkerhed, subsystemer til energistyring og flere timere og interface-muligheder. EFR32BG22 SoC'en, der er designet specielt til ultra-lavt strømforbrug og batteridrevne designs, bruger flere funktioner tilenergistyring, der kan muliggøre drift af møntcellebatterier i op til ti år.

SoC'en fungerer fra en enkelt ekstern spændingskilde og bruger sin interne energistyringsenhed til at generere interne forsyningsspændinger. Under drift styrer energistyringsenheden overgangene mellem SoC'ens fem energitilstande (EM'er). Hver tilstand reducerer strømforbruget yderligere ved at opretholde gradvist færre aktive funktionelle blokke, når SoC'en overgår fra aktiv tilstand (EM0) til dvaletilstand (EM1), dyb dvaletilstand (EM2), stoptilstand (EM3) eller slukket tilstand (EM4) (Figur 3).

Diagram over Silicon Labs EFR32BG22 SoC (klik for at forstørre)Figur 3: EFR32BG22 SoC'ens enheder til energistyring styrer overgange mellem energitilstandene EM0, EM1, EM2, EM3 og EM4 (farvekode nederst i billedet). (Billedkilde: Silicon Labs)

I aktiv tilstand (EM0) ved 76,8 MHz og 3 volt ved hjælp af den interne DC/DC-konverter bruger SoC'en 27 mikroampere pr. megahertz (μA/MHz). EM0 er den normale driftstilstand og er den eneste, hvor Cortex M33-processorkernen og alle perifere blokke er tilgængelige.

Alle perifere enheder er tilgængelige i dvaletilstand (EM1), og færre af dem forbliver aktive, når systemet går over i endnu lavere strømtilstande. I de lavere strømtilstande resulterer reduktionen af aktive clocks og funktionelle blokke i et betydeligt lavere strømforbrug:

  • 17 μA/MHz i dvaletilstand (EM1)
  • 1,40 μA dyb dvaletilstand (EM2) med 32 KByte RAM-lagring og realtidsur (RTC), der kører fra LFXO
  • 1,05 μA-stoptilstand (EM3) med 8 KByte RAM-lagring og RTC, der kører fra SoC'ens integrerede 1 kilohertz (kHz) modstandskapacitor (RC)-oscillator (ULFRCO) med ultra-lav frekvens.
  • 0,17 μA slukket tilstand (EM4)

Nogle batteridrevne enheder har brug for mere end blot at kunne betjene processoren i driftsformer med lavt strømforbrug. Mange Bluetooth-aktiverede applikationer vil typisk have lange perioder med ringe eller ingen aktivitet, men kræver en respons med lav latenstid, når aktiviteten genoptages. Selv hvis et program har mere lempelige krav til latenstid, spilder en langsom opvågningstid faktisk strøm, fordi processoren ikke udfører noget nyttigt arbejde, når den afslutter opvågningsprocessen og går over i aktiv tilstand (eller afslutter processen med at gå over i en tilstand med lavere strømforbrug fra en tilstand med højere strømforbrug).

Efterhånden som tiden mellem de aktive perioder bliver kortere, kan brugen af en dvaletilstand med lavt strømforbrug endda blive kontraproduktiv, når en langsom opvågning eller indgang til strømtilstand bruger mere energi, end der ville blive brugt, hvis processoren forblev i en højere strømtilstand i den inaktive periode. Derfor vil udviklere, der arbejder på at optimere batterilevetiden, nogle gange holde en processor i en højere strømtilstand, end det kræves af applikationens behandlingsbehov.

Ved at bruge en processor med hurtigere opvågnings- og startstider kan udviklerne i højere grad udnytte processorens lavere energitilstande. I EM1 vågner EFG32BG22 op på tre clock-cyklusser/1,24 mikrosekunder (µs) og har en indgangstid på 1,29 µs, hvilket stiger til henholdsvis 8,81 millisekunder (ms) og 9,96 µs i EM4 (tabel 1).

Energitilstand Wakeup (eksekvering fra RAM/Flash) Indtastning (udførelse fra Flash)
EM1 3 ur / 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 (kun Flash) 9,96 μs

Tabel 1: Tidsrum for opvågning og indtastning af strømtilstand for EFG32BG22 SoC'en. (Kilde til tabellen: Silicon Labs)

Den metode, der bruges til at vække processoren, når der ikke er aktivitet, kan også påvirke batterilevetiden betydeligt. Selv om nogle applikationer,f.eks. i industrien, kræver at systemerne anvender polled processing for at sikre en nøje periodisk timing, anvender mange applikationer på forbrugerområdet event-baseret behandling for at reagere på specifik aktivitet. Hvis du f.eks. bruger polling-metoder til event-baserede programmer, kan det forringe batteriets levetid betydeligt, når processoren gentagne gange vågner unødigt.

På samme måde som mange sensorbaserede designs bruger wake-on-interrupt-funktionalitet for at undgå gentagne gange at vække processoren bare for at kontrollere aktivitet, giver en wake-on-RF-funktion indbygget i EFG32BG22 SoC's radiosubsystem mulighed for en lignende interrupt-styret tilgang. Dette giver udviklerne mulighed for at holde processoren i en energitilstand med lavere effekt, indtil der opstår radiofrekvensaktivitet (RF).

I praksis placerer udviklere EFG32BG22 trådløse SoC'er i en ultra-lav energi-tilstand EM2, EM3 eller EM4 og stoler på wake-on-RF-funktionen til at vække SoC'en, når der registreres RF-energi. Når RFSENSE-funktionen blot registrerer energi over tærskelværdien, bruger den 131 nanoampere (nA). En mere selektiv RFSENSE-tilstand bruger lidt mere strøm på 138 nA, men i denne tilstand filtrerer RFSENSE indgående RF-signaler for at undgå at vågne på RF-støj i stedet for et gyldigt RF-signal.

I nogle tilfælde behøver EFG32BG22 SoC'en måske slet ikke at vække processorkernen for at reagere på eksterne events: SiLabs' Peripheral Reflex System (PRS) gør det muligt for perifere enheder at reagere på events og fungere uden at vække processorkernen. Perifere enheder kan kommunikere direkte med hinanden, og deres funktioner kan kombineres for at give komplekse funktioner. Ved at bruge PRS-funktioner med lavere energitilstande kan udviklere reducere strømforbruget betydeligt uden at gå på kompromis med kritiske funktioner som f.eks. indsamling af sensordata.

Indbygget debug og nem udvidelse

BGM220P-modulet, der er indbygget i BGM220 Explorer Kit-kortet, bringer det fulde sæt af energistyrings- og behandlingsfunktioner fra EFR32BG22 SoC'en til batteridrevne Bluetooth-designs. Når der er behov for hurtigt at bygge prototyper for at udforske nye designkoncepter, kan andre funktioner på kortet hjælpe med at fremskynde udviklingen.

En indbygget SEGGER J-Link-debugger, der er tilgængelig via kortets USB Micro-B-stik, giver adgang til download af kode og debugging samt en virtuel COM-port til adgang til host-konsol. Debuggeren understøtter også SiLabs' pakke sporingsinterface (PTI) til analyse af pakker, der sendes eller modtages over et trådløst netværk.

Til hurtig prototyping giver kortets understøttelse af flere udvidelsesmuligheder fleksibilitet til at udforske nye designideer, der kræver forskellige kombinationer af sensorer, aktuatorer, tilslutningsmuligheder og andre perifere enheder. Ved at trække på det omfattende udvalg af tilgængelige mikroBUS add-on kort og Qwiic Connect System-hardware fra flere leverandører kan udviklere hurtigt konfigurere en udviklingsplatform til hver enkelt applikation.

Et mikroBUS-kort, der er tilsluttet til kortets mikroBUS-stik, kan forbindes til BGM220P-modulet via I2C-, SPI- eller UART-interfaces. Qwiic-stikket giver Qwiic-systemets I2C-interface til tilslutning af et eller flere Qwiic-kort over afstande på op til ca. fire fod. For forbindelser over længere afstande kan udviklere bruge SparkFun QwiicBus EndPoint-kortet (COM-16988), som bruger differentiel signalering til at opretholde I2C-signalintegriteten på afstande på op til ca. 100 fod.

Hurtig udvikling af applikationer

SiLabs anvender konceptet om hurtig ekspansion på udvikling af applikationssoftware. Sammen med understøttelsespakker til kort, drivere, biblioteker og headere til brugerdefineret udvikling, tilbyder virksomheden flere applikations-eksempler, der er samlet i Simplicity Studio udviklingsmiljøet, samt yderligere projekter, der er tilgængelige fra SiLabs' GitHub-repositories. Faktisk kan udviklere begynde at udforske udviklingen af sensorapplikationer med en medfølgende applikation-eksempel til temperaturapplikationer, der bruger EFR32BG22 SoC'ens interne temperatursensor som datakilde.

Temperaturapplikationen er bygget op omkring standard Bluetooth Health Temperature-tjenesten og giver en out-of-the-box-demonstration af behandlingsflowet gennem en generisk Bluetooth IoT-applikation, der er bygget på SiLabs' softwarearkitektur. Programmet kalder en række initialiseringsrutiner for systemtjenester og programtjenester, der opretter programmer til håndtering af interrupts og callbacks. Når initialiseringen er afsluttet, går programmet ind i en endeløs sløjfe for at vente på events (Listing 1).

Kopi
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
}
Listing 1: SiLabs' Bluetooth programmer-eksempler anvender en generisk eksekveringsramme, hvor en endeløs sløjfe gør det muligt for callbacks og eventhandlere at behandle system- og applikationshandlinger efter initialiseringen. (Kilde til kode: Silicon Labs)

I denne applikation, når en timer, der er indstillet under initialiseringen, tæller ned, udfører en tilknyttet callback-rutine en temperaturmåling. Når udviklerne har bygget applikationen og flashet kortet, kan de bruge SiLabs EFR Connect-appen - en generisk Bluetooth-mobilapp, der fungerer med alle Silicon Labs Bluetooth-sæt og -enheder. Ud over at levere rammerne for brugerdefinerede apps hjælper appen udviklingen ved at give et overblik over understøttede egenskaber, der er forbundet med en Bluetooth-tjeneste, f.eks. Bluetooth Health Thermometer-tjenesten, der anvendes i denne applikationseksempel (figur 4).

Billede af SiLabs EFR Connect-appenFigur 4: SiLabs EFR Connect-appen viser karakteristika for Bluetooth-tjenester, der anvendes i en applikation, hvilket ikke blot fremskynder udviklingen af prototyper, men også giver en ramme for udvikling af brugerdefinerede apps. (Billedkilde: Silicon Labs)

I Simplicity Studio kan udviklere importere en række forskellige eksempler på Bluetooth-applikationer, der demonstrerer forskellige brugsscenarier, herunder designs bygget med Qwiic- eller mikroBUS-kort, separat eller i kombination. For eksempel en applikation, der demonstrerer brugen af standard Bluetooth Heart Rate (HR) og Bluetooth Pulse Oximeter (SpO2) tjenesterne i kombination med MikroElektronikas MIKROE-4037 Heart Rate 2 Click mikroBUS kort, der indeholder Maxim Integrated's MAX86161 biosensor. MAX86161 er et komplet undersystem med lavt strømforbrug, der kan levere nøjagtige HR- og SpO2-målinger til en host-processor, der er tilsluttet via I2C-interface. (Du kan finde flere oplysninger om brugen af MAX86161 under Byg en ægte trådløs fitnesshøreapparat - Del 1: Måling af puls og SpO2).

Med sit behov for en ekstra driver og en mere krævende behandlingsalgoritme end i temperaturapplikationen giver denne applikation en mere kompleks demonstration af arkitekturen for en IoT-enheds softwareapplikation (figur 5).

Diagram over HR/SpO2-applikationFigur 5: Eksempel på projekter som f.eks. en HR/SpO2-applikation hjælper med at fremskynde prototypeudvikling og demonstrerer samtidig et typisk procesflow for Bluetooth-sensorapplikationer med lav effekt. (Billedkilde: Silicon Labs)

Ligesom det ovennævnte temperaturprogram er dette program afhængig af en række initialiseringsrutiner for at konfigurere systemet og programtjenesterne. Hvor rutinen app_process_action er tom i temperaturapplikationen, tilføjer denne applikation et kald til en rutine, hrm_loop, i app_process_action. Dette resulterer i et kald til hrm_loop ved hvert gennemløb af den endeløse sløjfe på øverste niveau, der er vist tidligere i Listing 1. Desuden bruges en softwaretimer til periodisk at opdatere HR- og SpO2-data.

Hrm_loop-rutinen kalder igen maxm86161_hrm_process, som henter prøver fra en kø, der vedligeholdes af hjælpefunktioner, og overdrager dem til en procesrutine-eksempel. Dette kalder igen et par rutiner, maxm86161_hrm_frame_process og maxm86161_hrm_spo2_frame_process, som udfører algoritmer til at validere og generere henholdsvis HR- og SpO2-resultater. Udviklere kan se resultaterne sammen med andre karakteristika for tjenesten ved hjælp af den tidligere nævnte EFR Connect-app.

Et andet eksempel på en softwareapplikation viser, hvordan udviklere kan bygge videre på en kompleks applikation som denne HR/SpO2-applikation, når de udvider deres hardwareplatform. Ved hjælp af BGM220-EK4314A Explorer Kit-kortet og SiLabs' softwareøkosystem er det relativt enkelt at bygge videre på eksisterende hardware og software. SiLabs demonstrerer denne fremgangsmåde med et applikations-eksempel, der tilføjer et OLED-display til den hardware/softwareplatform, der anvendes til HR/SpO2-applikationen ovenfor. I dette eksempel er et SparkFun OLED-display Qwiic add-on kort (LCD-14532) fastgjort til kortets Qwiic-stik, mens MikroElektronika Heart Rate 2 Click-tilføjelseskortet forbliver på plads fra den tidligere HR/SpO2-eksempelapplikation (Figur 6).

Billede af Silicon Labs BGM220-EK4314A Explorer Kit kort med OLED-skærmFigur 6: Udviklere kan hurtigt tilføje funktionalitet til et eksisterende design, der er bygget på BGM220-EK4314A Explorer Kit-kortet - her tilføjes et OLED-display til en eksisterende HR/SpO2-prototype. (Billedkilde: Silicon Labs)

Bortset fra tilføjelsen af en driver og supporttjenester til OLED-kortet er softwareapplikationen stort set den samme i denne udvidede version af HR/SpO2-applikationen. Den tidligere nævnte softwaretimer til HR/SpO2-applikationen tilføjer et kald til funktionen hrm_update_display, som viser HR- og SpO2-dataene (Listing 2).

Kopier
    /* 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;
Listing 2: Ved hjælp af sættet og softwareøkosystemet kan udviklere tilføje displayfunktionalitet til en eksisterende HR/SpO2-applikation ved at tilslutte et displaykort og foretage minimale softwareændringer ud over at tilføje et funktionskald, hrm_update_display, til den eksisterende applikations softwaretimerhåndtering. (Kilde til kode: Silicon Labs)

Denne udvidelige hardware- og softwaretilgang giver udviklere mulighed for hurtigt at opbygge velfungerende IoT-applikationer. Da både hardware og software nemt kan tilføjes eller fjernes, kan udviklerne lettere udforske nye designløsninger og evaluere alternative konfigurationer.

Konklusion

Batteridrevne Bluetooth-aktiverede IoT-enheder er kernen i populære applikationer og udgør den vigtigste forudsætning for at imødekomme den fortsatte efterspørgsel efter mere funktionalitet og længere levetid. For udviklere kræver det, at de kan opfylde disse modstridende krav effektivt, at de hurtigt kan udforske nye designs og evaluere alternative designkoncepter. Ved hjælp af et udviklingssæt og tilhørende software fra Silicon Labs kan udviklere hurtigt bygge prototyper og tilføje og fjerne hardware efter behov for at opfylde specifikke applikationskrav.

DigiKey logo

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 DigiKey or official policies of DigiKey.

Om denne forfatter

Image of Stephen Evanczuk

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.

Om udgiveren

DigiKeys nordamerikanske redaktører