Skapa prototyper för IoT-tillämpningar med Bluetooth, med en utvecklingssats och ett tilläggskort direkt från lagerhyllan

Av Stephen Evanczuk

Bidraget med av Digi-Keys nordamerikanska redaktörer

Efterfrågan på smarta uppkopplade produkter ger stora möjligheter för utvecklare som snabbt kan omvandla koncept till fungerande IoT-tillämpningar. Tillgången på energieffektiva processorer, trådlösa anslutningsmöjligheter och ett brett utbud av hårdvarutillbehör utgör en stabil grund för att implementera lämpliga, strömsnåla konstruktioner som är klara för tillverkning.

I det tidiga skedet av produktdefinitionen behöver utvecklarna dock en flexibel utvecklingsplattform för att bygga snabba prototyper baserade på samma klass av processorer, delsystem för anslutning och kringutrustning. Förmågan att snabbt bygga fungerande prototyper och att enkelt kunna lägga till funktionalitet är avgörande för att tillhandahålla tidiga bevis på konceptet och för att stödja utvecklingen av anpassad programvara.

Artikeln visar hur utvecklare kan använda hård- och mjukvara från Silicon Labs för att snabbt bygga specialiserade energieffektiva prototyper av uppkopplade IoT-enheter med hjälp av ett brett urval av tilläggskort direkt från lagerhyllan.

Möjliggör snabb framställning av prototyper

När utvecklare utforskar nya möjligheter för batteridrivna trådlösa IoT-enheter, kan de fastna i de många detaljer som krävs för att skapa en fungerande utvecklingsplattform. Med sina integrerade delsystem kan avancerade SoC-enheter (system på en krets) utgöra kärnan i en sådan plattform, men utvecklarna måste fortfarande bygga ett komplett system runt dessa.

För att bygga en lämplig utvecklingsplattform för dessa enheter måste utvecklarna inte bara uppfylla grundläggande krav på robust prestanda och utökad batteritid, utan även bygga in flexibilitet för att stödja de specifika kraven för varje tillämpning. BGM220-EK4314A Explorer Kit från Silicon Labs klarar denna kombination av behov, och gör det möjligt för utvecklare att fokusera på snabb framtagning av prototyper för nya designkoncept istället för att hantera de detaljer som krävs för att bygga en egen utvecklingsplattform.

Flexibel plattform för snabb utveckling

BGM220-EK4314A Explorer Kit är en billig plattform för utveckling av Bluetooth-baserade tillämpningar och kombinerar Wireless Gecko-modulen BGM220P Wireless Gecko (BGM220PC22HNA) från SiLabs, ett inbyggt SEGGER J-Link-felsökningsprogram, en tryckknapp, en lysdiod och flera utökningsmöjligheter (figur 1).

Bild på BGM220-EK4314A Explorer Kit från SiLabsFigur 1: BGM220-EK4314A Explorer Kit från SiLabs tillhandahåller den kombination av bearbetningskapacitet, energihantering och konfigurationsflexibilitet som krävs för att snabbt bygga prototyper och utvärdera olika konfigurationer av kringutrustningshårdvara. (Bildkälla: Silicon Labs)

Modulen BGM220P fungerar som en komplett lösning för små batteridrivna IoT-enheter. Dess integrerade Blue Gecko-systemkrets EFR32BG22 har en extremt låg strömförbrukning, Bluetooth-funktioner för ankomst- och avgångsvinkel (AoA och AoD) och en noggrannhet på mindre än en meter - allt som behövs i ett växande antal populära Bluetooth-tillämpningar, t.ex. spårning av tillgångar, smarta dörrlås, fitness och mycket mer.

Modulen BGM220P, som kan agera som ett fristående system, kombinerar systemkretsen EFR32BG22 med 512 KByte flash-minne, 32 KByte RAM-minne, kristaller (XTAL) för höga (HF) och låga frekvenser samt ett 2,4 gigahertz (GHz) matchande nätverk och en keramisk antenn för trådlös anslutning (figur 2).

Diagram över modulen BGM220P från SiLabsFigur 2: Modulen BGM220P från SiLabs kan agera som ett fristående system och kombinerar Blue Gecko-systemkretsen EFR32BG22 med övriga komponenter som krävs för att implementera en enhet med Bluetooth. (Bildkälla: Silicon Labs)

Förutom att modulen kan agera som en fristående värd för IoT-konstruktioner med litet format, kan den även agera som en hjälpprocessor för nätverket, för en värdprocessor som är ansluten via modulens UART-gränssnitt. Den inbyggda Bluetooth-stacken utför trådlösa tjänster för program som körs på modulen i fristående konstruktioner, eller behandlar kommandon som tas emot från värddatorn när den körs som hjälpprocessor i konstruktioner.

Energieffektivt trådlöst system på en krets (SoC)

Systemkretsen EFR32BG22 med trådlös Bluetooth i modulen BGM220P integrerar en 32-bitars Arm Cortex-M33 kärna, en 2,4 GHz-radio, delsystem för säkerhet och energihantering samt flera timers och gränssnittsalternativ. Systemkretsen EFR32BG22 är särskilt utformad för batteridrivna konstruktioner med extremt låg strömförbrukning och använder flera funktioner för energihantering som kan göra batteridrift med knappceller möjlig i upp till tio år.

Systemkretsen drivs av en enda extern spänningskälla, och använder sin inbyggda energihanteringsenhet för att generera interna spänningar. Vid drift styr energihanteringsenheten övergångarna mellan systemkretsens fem energilägen (EMs). Varje läge minskar energiförbrukningen ytterligare genom att gradvis behålla färre aktiva funktionsblock när systemkretsen övergår från aktivt läge (EM0) till viloläge (EM1), djupt viloläge (EM2), stoppläge (EM3) eller avstängt läge (EM4) (figur 3).

Diagram över arkitekturen för systemkretsen EFR32BG22 från Silicon Labs (klicka för att förstora)Figur 3: Energihanteringsenheten i systemkretsen EFR32BG22 styr övergångarna mellan energilägena EM0, EM1, EM2, EM3 och EM4 (färgkod längst ner i bilden). (Bildkälla: Silicon Labs)

I aktivt läge (EM0) vid 76,8 MHz och 3 V, drar systemkretsen 27 μA/MHz via den interna DC/DC-omvandlaren. EM0 är det normala driftläget och är det enda läge där processorkärnan i Cortex M33 och alla kringutrustningsblock är tillgängliga.

All kringutrustning är tillgänglig i viloläge (EM1), där färre förblir aktiva när systemet går in i lägen med ännu lägre energiförbrukning. I de lägre effektlägena medför minskningen av aktiva klockor och funktionsblock en betydligt lägre energiförbrukning:

  • 17 μA/MHz i viloläge (EM1)
  • 1,4 μA djupt sömnläge (EM2) med 32 KByte RAM-lagring och realtidsklocka (RTC) som körs från LFXO
  • 1,05 μA stoppläge (EM3) med 8 KByte RAM-lagring och realtidsklocka som körs från systemkretsens inbyggda resistor-kondensator oscillator (ULFRCO) med extremt låga 1 kHz.
  • 0,17 μA avstängningsläge (EM4)

Vissa batteridrivna enheter behöver mer än bara förmågan att driva processorn i energisnåla driftlägen. Många tillämpningar med Bluetooth uppvisar normalt längre perioder med liten eller ingen aktivitet, men kräver låg latenstid när aktiviteten återupptas. Faktum är att, även om ett program har snällare krav på latenstid, så slösar en långsam uppvakningstid med ström eftersom processorn inte utför något användbart arbete medan den avslutar väckningen och går in i ett aktivt läge (eller avslutar processen med att gå in i ett läge med lägre strömförbrukning från ett läge med högre strömförbrukning).

När tiden mellan de aktiva perioderna minskar kan användningen av ett energisnålt viloläge till och med bli kontraproduktivt när ett långsamt uppvaknande eller en långsam starttid för strömläget använder mer energi än vad som skulle ha gått åt om processorn hade varit i ett energisnålt läge under hela den inaktiva perioden. Därför kommer utvecklare som arbetar med att optimera batteriets livslängd ibland att bibehålla en processor i ett högre effektläge än vad som krävs för att bearbeta programmet.

Genom att använda en processor med snabbare väcknings- och starttider kan utvecklare bättre utnyttja processorns lägen för lägre energiförbrukning. I EM1 vaknar EFG32BG22 på tre klockpulser/1,24 mikrosekunder (µs) och har en starttid på 1,29 µs, vilket stiger till 8,81 millisekunder (ms) respektive 9,96 µs i EM4 (tabell 1).

Energiläge Väckning (körs från RAM-/Flash-minne) Inmatning (körs från Flash-minne)
EM1 3 klockpulser/1,24 μs 1,29
EM2 5,15/13,22 μs 5,23
EM3 5,15/13,21 μs 5,23
EM4 8.81 ms (endast Flash) 9,96

Tabell 1: Tider för att väcka och starta i energisparläge för systemkretsen EFG32BG22. (Tabellens källa: Silicon Labs)

Den metod som används för att väcka processorn när aktiviteten återupptas kan även påverka batteritiden avsevärt. Även om vissa tillämpningar - som t.ex. industriella tillämpningar, kräver att systemen använder sig av avsökt behandling för att säkerställa en strikt periodisk tidtagning, använder många tillämpningar inom konsumentområdet en händelsebaserad bearbetning för att reagera på specifika aktiviteter. Om du använder avsökningsmetoder för händelsebaserade program kan batteritiden exempelvis försämras avsevärt när processorn vaknar upprepade gånger utan anledning.

På samma sätt som många givarbaserade konstruktioner använder sig av funktionen ”Väckning vid avbrott” för att undvika att processorn väcks upprepade gånger bara för att kontrollera aktiviteten, möjliggör en funktion för väckning-vid-RF som är inbyggd i delsystemet för radio i systemkretsen EFG32BG22 ett enklare avbrottsstyrt tillvägagångssätt. Det gör det möjligt för utvecklare att bibehålla processorn i ett energisparläge med lägre effekt tills någon radiofrekvensaktivitet (RF) inträffar.

I praktiken placerar utvecklarna den trådlösa systemkretsen EFG32BG22 i ett EM2-, EM3- eller EM4-läge med extremt låg strömförbrukning och förlitar sig på funktionen väckning-vid-RF för att väcka systemkretsen när RF-energi upptäcks. När funktionen RFSENSE bara upptäcker energi över gränsvärdet förbrukar den 131 nA. Ett mer selektivt läge för RFSENSE förbrukar något mer ström, 138 nA, men i detta läge filtrerar RFSENSE de inkommande RF-signalerna för att undvika väckning på grund av RF-störningar i stället för en giltig RF-signal.

I vissa fall behöver systemkretsen EFG32BG22 inte väcka processorkärnan alls för att reagera på externa händelser: Peripheral Reflex System (PRS) från SiLabs gör det möjligt för kringutrustning att reagera på händelser och fungera utan att väcka processorkärnan. Kringutrustning kan kommunicera direkt sinsemellan och deras funktioner kan kombineras för att tillhandahålla komplicerade funktioner. Genom att använda funktionerna för PRS med lägen för lägre energi, kan utvecklare minska strömförbrukningen avsevärt utan att kompromissa med kritiska funktioner, som t.ex. insamling av givardata.

Inbyggd felsökning och enkel utökning

Modulen BGM220P, som är inbyggd i kortet BGM220 Explorer Kit, ger systemkretsen EFR32BG22 en fullständig uppsättning funktioner för energihantering och bearbetning i batteridrivna Bluetooth-konstruktioner. När det finns ett behov av att snabbt bygga prototyper för att utforska nya designkoncept hjälper andra funktioner på kortet till att skynda på utvecklingen.

Ett inbyggt SEGGER J-Link-felsökningsprogram som nås via kortets Micro-B USB-kontakt möjliggör nedladdning och felsökning av kod samt en virtuell COM-port för åtkomst till värdkonsolen. Felsökningsprogrammet har även stöd för SiLabs PTI-funktion (Packet Trace Interface) för att analysera paket som sänds eller tas emot via ett trådlöst nätverk.

För snabb prototypframställning, har kortet stöd för flera utökningsmöjligheter som ger flexibilitet att utforska nya konstruktionsidéer som kräver olika kombinationer av givare, ställdon, anslutningsalternatiav och annan kringutrustning. Med hjälp av det stora utbudet av tillgängliga tilläggskort för mikroBUS och hårdvara för Qwiic Connect System från flera leverantörer kan utvecklare snabbt konfigurera en utvecklingsplattform för varje tillämpning.

Ett mikroBUS-kort ansluts till kortets uttag för mikroBUS och ansluts till modulen BGM220P via gränssnitten I2C, SPI eller UART. Qwiic-anslutningen tillhandahåller Qwiic-systemets I2C-gränssnitt för anslutning av ett eller flera Qwiic-kort över avstånd på upp till cirka 1,2 m. För anslutningar över längre avstånd kan utvecklare använda kortet SparkFun QwiicBus EndPoint(COM-16988), som använder differentiell signalering för att bibehålla I2C-signalens integritet på avstånd upp till cirka 30 m.

Snabb utveckling av tillämpningar

SiLabs tillämpar konceptet snabb utökning för utveckling av programvara. Tillsammans med stödpaket för kretskorten, drivrutiner, bibliotek och kontakter för anpassad utveckling erbjuder företaget flera exempel på program som ingår i utvecklingsmiljön Simplicity Studio, samt ytterligare projekt som finns tillgängliga från SiLabs arkiv på GitHub. Faktum är att utvecklare kan börja utforska utvecklingen av givarprogram med ett medföljande exempel på ett temperaturprogram som använder den inbyggda temperaturgivaren i systemkretsen EFR32BG22 som datakälla.

Temperaturprogrammet är uppbyggt kring tjänsten Bluetooth Health Temperature och är en färdig demonstration av bearbetningsflödet via en generell IoT-tillämpning för Bluetooth som är byggd på SiLabs programarkitektur. Programmet anropar en rad initialiseringsrutiner för systemtjänster och programtjänster som ställer in avbrottshanterare och funktioner för återanrop. När initialiseringen är klar startar programmet en ändlös slinga som väntar på händelser (lista 1).

Kopiera
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: Demonstrationsprogrammet för Bluetooth från SiLabs använder ett generellt ramverk för programkörning där en ändlös slinga gör det möjligt för återanrop och händelsehanterare att bearbeta system- och programåtgärder efter initialisering. (Kodkälla: Silicon Labs)

I det här programmet, utför en tillhörande rutin för återanrop, en temperaturmätning, när en timer som angivits i initialiseringen har räknats ner. När utvecklarna har byggt programmerat och programmerat kortets flash-minne kan de använda appen EFR Connect från SiLabs - en generell mobilapp för Bluetooth som fungerar med alla satser och enheter med Bluetooth från Silicon Labs. Förutom att tillhandahålla ramverket för anpassade appar underlättar appen utvecklingen genom att tillhandahålla en vy med de egenskaper som är associerade med en Bluetooth-tjänst såsom tjänsten Bluetooth Health Thermometer som används i demonstrationsprogrammet (figur 4).

Bild på appen EFR Connect från SiLabsFigur 4: Appen EFR Connect från SiLabs visar egenskaperna för Bluetooth-tjänster som används i ett program, vilket inte bara påskyndar utvecklingen av prototyper utan även skapar ett ramverk för utveckling av anpassade program. (Bildkälla: Silicon Labs)

I Simplicity Studio kan utvecklare importera ett antal olika programexempel för Bluetooth som visar olika användningsscenarior, inklusive konstruktioner som byggts med Qwiic- eller mikroBUS-kort, separat eller i kombination. Till exempel ett demonstrationsprogram som visar användningen av standardtjänsterna Bluetooth Heart Rate (HR) och Bluetooth Pulse Oximeter (SpO2) i kombination med mikroBUS-kortet MIKROE-4037 Heart Rate 2 Click, från MikroElektronika som innehåller biosensorn MAX86161 från Maxim Integrateds. MAX86161 är ett komplett delsystem med låg strömförbrukning som kan skicka exakta mätningar av puls och syresättning i blodet till en värdprocessor som är ansluten via gränssnittet I2C. (se Bygga en trådlös träningshörlur - Del 1: Mätning av puls och syresättning, för mer information om hur du använder MAX86161).

Med sitt behov av en extra drivrutin och en mer krävande bearbetningsalgoritm än i temperaturprogrammet är det här programmet en mer komplicerad demonstration av en programvaruarkitektur för en IoT-enhet (figur 5).

Diagram över programmet för puls/syresättningFigur 5: Demonstrationsprojekt som t.ex. ett program för mätning av puls/syresättning gör prototyputvecklingen snabbare och visar samtidigt ett typiskt processflöde för tillämpningar med Bluetooth-givare med låg strömförbrukning. (Bildkälla: Silicon Labs)

På samma sätt som med temperaturprogrammet ovan är det här programmet beroende av en rad initialiseringsrutiner för att ställa in systemet och programmets tjänster. När rutinen app_process_action är tom i temperaturprogammet lägger programmet till ett anrop till en rutin, hrm_loop, i app_process_action. Detta medför ett anrop till hrm_loop vid varje genomgång av den ändlösa slingan på högsta nivå som visas tidigare i lista 1. Dessutom används en mjukvarutimer för att regelbundet uppdatera informationen för puls och syresättning.

Rutinen hrm_loop anropar i sin tur maxm86161_hrm_process, som hämtar samplingar från en kö som upprätthålls av hjälpfunktioner och överlämnar dessa till en bearbetningsrutin för samplingarna. Denna anropar i sin tur ett par rutiner, maxm86161_hrm_frame_process och maxm86161_hrm_spo2_frame_process, som använder algoritmer för att validera och generera resultatet för puls och syresättning. Utvecklare kan se resultaten tillsammans med andra tjänsteegenskaper med hjälp av appen EFR Connect som nämndes tidigare.

Ett annat demonstrationsprogram visar hur utvecklare kan bygga vidare på ett komplicerat program som detta program för mätning av puls-/syremätning när de utökar sin hårdvaruplattform. Med hjälp av kortet BGM220-EK4314A Explorer Kit och SiLabs ekosystem för programvara är det relativt enkelt att bygga vidare på befintlig hård- och mjukvara. SiLabs demonstrerar detta tillvägagångssätt med ett demonstrationsprogram som lägger till en OLED-skärm i den hård- och mjukvaruplattform som används för programmet för mätning av puls/syresättning ovan. I det här exemplet är ett Qwiic-tilläggskort med OLED-skärm från SparkFun (LCD-14532) anslutet till kortets Qwiic-kontakt, medan tilläggskortet Heart Rate 2 Click från MikroElektronika sitter på sin plats från det tidigare demonstrationsprogrammet för mätning av puls/syresättning (figur 6).

Bild på kortet BGM220-EK4314A Explorer Kit från Silicon Labs med OLED-skärmFigur 6: Utvecklare kan snabbt lägga till funktioner i en befintlig konstruktion baserad på kortet BGM220-EK4314A Explorer Ki - här lägger man till en OLED-skärm till en befintlig prototyp för mätning av puls/syresättning. (Bildkälla: Silicon Labs)

Förutom tillägget av en drivrutin och stödtjänster för OLED-kortet är programvaran i stort sett densamma för denna utökade version av programmet för mätning av puls/syresättning. Den mjukvarutimer som nämndes tidigare för programmet för mätning av puls/syresättning lägger till ett anrop till funktionen hrm_update_display, som visar information om puls och syresättning (lista 2).

Kopiera
    /* 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: Med hjälp av satsen och ekosystemet för programvara kan utvecklare lägga till displayfunktioner i ett befintligt program för mätning av puls/syresättning genom att ansluta ett displaykort och göra minimala ändringar i programmet förutom att lägga till ett funktionsanrop, hrm_update_display, till det befintliga programmets hanterare för mjukvarutimern. (Kodkälla: Silicon Labs)

Med denna utbyggbara hård- och mjukvara kan utvecklare snabbt bygga fungerande IoT-tillämpningar. Eftersom både hård- och mjukvara enkelt kan läggas till eller tas bort kan utvecklarna lättare utforska nya konstruktionslösningar och utvärdera olika konfigurationer.

Slutsats

Batteridrivna IoT-enheter med Bluetooth är hjärtat i populära tillämpningar och utgör en viktig förutsättning för att möta den fortsatta efterfrågan på mer funktioner och längre drifttid. För att kunna uppfylla dessa motstridiga krav på ett effektivt sätt krävs det att utvecklarna snabbt kan utforska nya konstruktioner och utvärdera olika konstruktionskoncept. Med hjälp av en utvecklingssats och tillhörande programvara från Silicon Labs kan utvecklare snabbt bygga prototyper och lägga till och ta bort hårdvara efter behov för att uppfylla specifika tillämpningskrav.

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.

Om skribenten

Stephen Evanczuk

Stephen Evanczuk har arbetat i mer än 20 år med att skriva för och om elektronikbranschen inom många olika områden som maskinvara, programvara, system och applikationer – inklusive sakernas internet. Han har en kandidatexameni neurovetenskap om artificiella neuronnät och har arbetat inom rymdfartsindustrin med mycket distribuerade säkra system och metoder för acceleration av algoritmer. När han inte skriver artiklar om teknik och konstruktion arbetar han med applikationer för djupinlärning för igenkänningssystem och rekommendationssystem.

Om utgivaren

Digi-Keys nordamerikanska redaktörer