Een Bluetooth 5 gecertificeerd multi-sensor IoT-apparaat met batterijvoeding snel implementeren.
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2019-11-13
Ontwerpers zien in allerlei markten een snel groeiende behoefte aan draagbare multi-sensor ontwerpen met Bluetooth op zich afkomen, maar het vinden van een effectieve oplossing is lastig gebleken. Naast de principiële eis van een uiterst laag energieverbruik is de mogelijkheid om voor deze apparaten in toepassingen voor Internet of Things (IoT) met integratie met de cloud snel een prototype te bouwen, dit te evalueren en aan te passen essentieel geworden om gebruik te kunnen maken van de kansen die snel komen en gaan.
In dit artikel wordt een Bluetooth processor system-on-chip (SoC) met uiterst laag energieverbruik van ON Semiconductor besproken en wordt getoond hoe de SoC, of de bijbehorende system-in-package (SiP) versie, aan de principiële eisen voor systemen met batterijvoeding voldoen. Een bijbehorende evaluatieboard en IoT-ontwikkelomgeving maken het proces van het creëren van applicaties met integratie in de cloud voor apparaten op batterijvoeding nog eenvoudiger.
Bluetooth toepassingen met laag energieverbruik
Apparaten met Bluetooth en batterijvoeding bieden connectiviteit en verwerkingsmogelijkheden in toepassingen in kleine apparaten als fitnesshorloges, medische monitoren, verlichting, sloten, huishoudelijke apparaten, auto's en nog veel meer. De verwachtingen van gebruikers en de druk van de concurrentie zorgen voor de behoefte aan steeds uitgebreidere toepassingen die uit een steeds groter aantal sensoren nauwkeurigere gegevens krijgen. In enkele gebieden, bijvoorbeeld industriële toepassingen, is het essentieel om meerdere sensoren aan te kunnen sluiten om bewegingen, trillingen, schokken, luchtvochtigheid of andere gegevens te detecteren die nodig zijn om een veilige werkomgeving te behouden, de status van apparatuur te monitoren of om hulpmiddelen te beheren.
In de dagelijkse activiteiten van gebruikers moeten dergelijke apparaten niet alleen gegevens betrouwbaar vanuit meerdere sensoren verkrijgen, maar de batterijen mogen niet te vaak hoeven te worden vervangen of opgeladen. Dit is van essentieel belang voor een goede klantentevredenheid. Tegelijkertijd moeten de onderliggende oplossingen helpen de kosten en complexiteit te verlagen die meestal gepaard gaan met het ontwerpen van Bluetooth producten met batterijvoeding.
Eén zo'n oplossing, de NCH-RSL10-101WC51-ABG RSL10 SoC van ON Semiconductor voldoet aan de eisen voor een uiterst laag energieverbruik en bevat tevens de basis hardware voor SIP en evaluatieboards waarmee de ontwikkeling van de eindproducten kan worden versneld. In combinatie met de ON Semiconductor software voor maatwerkontwikkeling of de DK IoT Studio van DigiKey voor snel ontwikkelen, zijn ontwerpers in staat multi-sensor oplossingen op basis van RSL10 met uiterst laag energieverbruik snel te implementeren en te evalueren.
De draadloze RSL10 Bluetooth SoC van binnen bekeken
De RSL10 is een draadloze, volgens Bluetooth 5 gecertificeerde SoC, die speciaal ontwikkeld is om aan de groeiende vraag naar ontwerpen met uiterst laag energieverbruik te voldoen, in bijvoorbeeld wearables, mobiele producten en andere connected producten. De RLS 10 heeft een uitgebreide set geïntegreerde subsystemen en functieblokken. Hij vormt een oplossing op één chip die aan de eisen van de typische IoT-apparaten met Bluetooth en wearables kan voldoen (Afbeelding 1).
Afbeelding 1: De ON Semiconductor RSL10 SoC heeft een geïntegreerde processor en radiofrequente subsystemen en biedt daarmee een complete oplossing voor Bluetooth 5 gecertificeerde apparaten met uiterst laag energieverbruik. (Afbeelding: ON Semiconductor)
De belangrijkste verwerkingseenheden hiervan zijn een Arm® Cortex®-M3 core, een eigen LPDSP32 32-bit digitale signaalverwerker (DSP) met dubbele Harvard architectuur en een volledig draadloos Bluetooth 5 gecertificeerd subsysteem. Dit alles wordt door specifieke en algemene geheugens ondersteund. Er is een IP-blok dat mechanismen heeft om externe toegang tot het flashgeheugen op de chip, het RAM-geheugen of de core te voorkomen en zo de code en de gegevens te beveiligen. Naast een volledige set standaard randapparaten beschikt het apparaat over een vierkanaals analoog-digitaalconverter (ADC), algemeen bruikbare IO-poorten (GPIO's) en audio-interfaces. Er is een aantal spanningsregelaars die de interne voeding verzorgen en ervoor zorgen dat het apparaat maar één voeding nodig heeft van 1,1 tot 3,3 volt.
Hoewel de RSL10 verschillende persoonlijke draadloze netwerkprotocollen (WPAN) ondersteunt, biedt hij door middel van een combinatie van interne hardware en software volledige ondersteuning voor Bluetooth. De hardware-ondersteuning is gebaseerd op de geïntegreerde radiografische (RF) front-end waarin de Bluetooth fysieke laag (PHY) is geïmplementeerd. De basisband controller gebruikt de RF front-end voor hardwarematige ondersteuning van de packet- en frame-lagen van de Bluetooth protocolstack. Een kleine, ingebouwde softwarekernel zorgt hierbij voor event en message handling services voor het beheren van het RF-verkeer, het uitwisselen van berichten en een timer. Een Bluetooth bibliotheek en bijbehorende profielbibliotheken draaien tenslotte op de Arm Cortex-M3 processor en verzorgen hiermee de volledige Bluetooth-stack voor toepassingssoftware (Afbeelding 2).
Afbeelding 2: De RSL10 SoC van ON Semiconductor bevat een volledige Bluetooth-stack door middel van een combinatie van software die op de Arm Cortex-M3 core draait en speciale hardware zoals een basisband-verwerkingseenheid en de onderliggende RF front-end. (Afbeelding: ON Semiconductor)
De software-stack maakt gebruik van de hardware-ondersteuning in de RF front-end en de basisband-verwerkingseenheid, en combineert de lagere Bluetooth Low Energy (BLE) protocollagen, zoals de logical link control en de adaptation control (L2CAP), het Attribute Protocol (ATT), het Security Manager Protocol (SMP) en het Generic Acces Profile (GAP) om de verbindingen te definiëren en het Generic Attribute Profile (GATT) om de gegevensuitwisseling op basis van services en karakteristieken te definiëren.
Naast deze Bluetooth-protocolstack ondersteunen de RSL10 profielbibliotheken verschillende, vaak in wearables toepassingen gebruikte standaard Bluetooth-profielen, zoals meting van hartslag, glucosegehalte en bloeddruk, het Rezence draadlos-oplaadprofiel en de menselijke interface (HID), plus profielen voor plaatsbepaling, hardlopen, fietsen en dergelijke.
Efficiënte prestaties
Wat voor ontwerpers misschien wel het belangrijkste is, is dat de RSL10 relatief weinig energie verbruikt maar wel Bluetooth-connectiviteit biedt met datasnelheden van 62,5 tot 2000 kilobit per seconde (kbps). De maximale stroomsterkte tijdens ontvangen (Rx) bij een voedingsspanning van 1,25 volt (VBAT) is 5,6 milliampère (mA) en slechts 3,0 mA bij een VBAT van 3 volt. De maximale stroomsterkte bij zenden (Tx) bij een VBAT van 1,25 volt is 8,9 mA bij een zendvermogen van 0 dBm (decibel, ten opzichte van één milliwatt) en slechts 4,6 mA bij een VBAT van 3 volt en een zendvermogen van 0 dBm.
De RSL10 verbruikt in zijn geheel erg weinig energie, zoals blijkt uit het gecertificeerde EENMBC ULPMatk Core profiel van 1090 bij 3 volt en 1260 bij 2,1 volt, de beste cijfers in de markt.
Ontwerpers kunnen hem nog efficiënter maken door hardware-blokken selectief uit te schakelen als hij op volle toeren draait, of door het apparaat in stand-by of in diepe slaap te zetten als het niets te doen heeft. Opgemerkt zij dat de RSL10 deze vermogensmodi automatisch gebruikt om een BLE-verbinding tussen zend-/ontvanggebeurtenissen te behouden. Dit resulteert erin, dat het apparaat Bluetooth advertentie-verwerkingen op alle drie de Bluetooth advertentiekanalen met intervallen van 5 seconden (s) kan uitvoeren en daarbij slechts 1,1 microampère (μA) verbruikt.
Ontwerpers kunnen de stand-by-modus gebruiken met een optie om energie te besparen tijdens periodes van weinig activiteit van honderden milliseconden (ms) tot slechts enkele ms.
De RSL10 schakelt in de stand-by-modus de logica en het geheugen uit en verlaagt de voedingsspanning om lekstromen te beperken, wat in een verbruik van typisch slechts 30 mA resulteert. Omdat de voedingsschakelingen op de chip actief blijven, kan het apparaat relatief snel naar de actieve modus terugkeren.
Diepe slaap kent veel opties om het energieverbruik aanzienlijk te verlagen, maar toch op externe gebeurtenissen te kunnen blijven reageren. Als in deze modus 8 kilobyte (kB) RAM-geheugen wordt aangehouden, verbruikt het apparaat slechts 300 nanoampère (nA) bij een VBAT van 1,25 volt of slechts 100 nA bij een VBAT van 3 volt. In de diepste slaapmodus verbruikt het apparaat slechts 50 nA bij 1,25 volt (25 nA bij een VBAT van 3 volt) en kan nog steeds actief worden als het signalen op de speciale WAKEUP-pin ontvangt.
Geïntegreerd ontwerp
De uitgebreide functionaliteit van de RSL10 helpt ontwikkelaars bij het maken van ontwerpen met geoptimaliseerd energieverbruik zonder afbreuk aan de prestaties of de Bluetooth-connectiviteit te doen. Zijn bijzonder hoge mate van integratie vereenvoudigt het hardware-ontwerp. Dankzij features als ingebouwde condensatoren hoeven er geen externe condensatoren te worden gebruikt voor het 32 kilohertz (kHz) kristal voor de realtime klok of de 48 megahertz (MHz) kristaloscillatoren voor de RF-front-end en de systeemklok. Hierdoor kan de RSL10 met een minimaal aantal externe componenten in een ontwerp worden toegepast (Afbeelding 3).
Afbeelding 3: De RSL10 SoC van ON Semiconductor heeft een bijzonder hoge mate van integratie en kan daardoor met een minimaal aantal externe componenten in een ontwerp worden toegepast, zoals in de afgebeelde configuratie om in buck-modus te werken. (Afbeelding: ON Semiconductor)
Het apparaat bevat meerdere programmeerbare spanningsregelaars om de digitale schakelingen, het geheugen en het RF-front-end te voeden. Een laadpomp levert hogere spanningen voor de analoge blokken en het flash-geheugen. Dankzij deze geïntegreerde voedingen heeft het apparaat voldoende aan één voeding van 1,1 tot 3,3 volt.
Bij voedingsspanningen onder 1,4 volt kunnen ontwerpers het apparaat via de interne low-dropout (LDO)-regelaar voeden. Bij hogere voedingsspanningen helpt de geïntegreerde buck-omzetter het apparaat efficiënter te laten werken ten koste van een extra inductor. De ontwerpen voor deze twee voedingsconfiguraties verschillen er alleen in dat bij bedrijf in LDO-modus de extra inductor tussen de pinnen voor VCC en VDC kan vervallen, zie Afbeelding 3. ON Semiconductor geeft richtlijnen voor het plaatsen van componenten en het fysieke ontwerp van de printplaten met de RSL10.
Systeemontwerp met de RSL10
Voor ontwerpers die geen tijd of hulpmiddelen hebben om deze hardware interfaces te bouwen, biedt de NCH-RSL10-101S51-ACG RSL10 SiP van ON Semiconductor een effectief alternatief voor maatwerk hardware-implementaties voor systeemontwerpen. De RSL10 SiP meet 6 x 8 x 1,5 mm en bevat de RSL10 SoC, een radioantenne en alle benodigde componenten. Ontwerpers kunnen met de RSL10 SiP een complete Bluetooth gecertificeerde hardware-oplossing in hun ontwerpen opnemen en zich volledig op hun eigen hardware-eisen richten.
De softwarepakketten voor de RSL10 van ON Semiconductor laten softwareontwikkelaars zich evenzeer op hun eigen eisen concentreren. De RSL10 software-ontwikkelset (SDK) van ON Semiconductor is op de Arm Cortex Microcontroller Software Interface Standard (CMSIS) hardware abstraction layer (HAL) gebaseerd en bevat in het RSL10 CMSIS-Pack (Afbeelding 4) drivers, hulpprogramma's en voorbeeldcode.
Afbeelding 4: De software-omgeving voor de RSL10 van ON Semiconductor bevat in het basispakket een uitgebreid pakket aan services en hulpprogramma's, terwijl extra pakketten ondersteuning voor Bluetooth mesh-netwerken en Bluetooth IoT-ontwikkeling bevatten. (Afbeelding: ON Semiconductor)
Dit pakket bevat bijvoorbeeld meer gespecialiseerde services als ondersteuning voor Bluetooth, het FreeRTOS real-time operating system (RTOS) en een hulpprogramma om firmware over-the-air (FOTA) (draadloos) te updaten. Bovendien biedt ON Semiconductor ondersteuning voor meer gespecialiseerde functionaliteit door middel van aparte pakketten voor Bluetooth mesh-netwerken en voor Bluetooth IoT-ontwikkeling (B-IDK). Zo biedt het B-IDK CMSIS-Pack services voor IoT zoals sensordrivers, ondersteuning voor cloud-verbindingen en voorbeelden van aanverwante toepassingssoftware.
Ingenieurs kunnen voor de ontwikkeling van hun eigen software de basispakketten en optionele pakketten in hun eigen geïntegreerde ontwikkelomgeving (IDE) laden. De RSL10 software ondersteunt de eigen IDE van ON Semiconductor naast de Arm Keil µVision en IAR Embedded Workbench omgevingen. Na de pakketten te hebben geladen kunnen ontwerpers voorbeeldtoepassingen bekijken en de implementatie van de belangrijkste features bestuderen.
BLE multi-sensor board, klaar voor implementatie
De RSL10 SiP en de RSL10 SDK kunnen samen de ontwikkeling versnellen van eigen apparaten met Bluetooth-interfaces die aan strenge eisen voor uiterst laag energieverbruik kunnen voldoen. Voor bepaalde toepassingen kunnen de tijd en hulpmiddelen om maatwerk oplossingen te bouwen niet beschikbaar zijn of zijn maatwerk oplossingen zelfs niet vereist.
Industriële monitoren of slimme sloten met meerdere sensoren moeten bijvoorbeeld een klein apparaat met Bluetooth hebben om gegevens van meerdere typen sensoren te verzenden en waarmee de levensduur van de batterij kan worden verlengd. Voor zulke toepassingen kan de RSL10-SENSE-GEVK multi-sensor evaluatiekit van ON Semiconductor een direct toepasbare hardware-oplossing zijn. De board van deze evaluatiekit is internationaal gecertificeerd en kan kant-en-klaar in toepassingen voor laag energieverbruik worden opgenomen.
De RSL10-SENSE-GEVK board bevat een RSL10 SiP, meerdere sensoren, een ON Semiconductor N24RF64DWPT3G 64 kB near-field communications (NFC) EEPROM, een RGB-led en programmeerbare toetsen. De ronde printplaat heeft een doorsnede van minder dan 30 mm. Dit is maar iets groter dan de CR2032 knoopcel en de flexibele NFC-antenne in de kit (Afbeelding 5).
Afbeelding 5: De ON Semiconductor RSL10-SENSE-GEVK evaluatieboard bevat een RSL10 SiP met een verscheidenheid aan sensoren die veel in wearables en IoT-apparaten worden gebruikt. (Afbeelding: ON Semiconductor)
De board wordt geleverd met firmware waarmee de werking van de verschillende sensoren op de board kunnen worden gedemonstreerd:
- Omgevingslichtsensor (ON Semiconductor NOA1305)
- Inertiemeter (Bosch Sensortec BHI160) met drie-assen versnellingsmeter en dito gyroscoop
- Drie-assen digitale geomagnetische sensor (Bosch Sensortec BMM150)
- Omgevingssensoren (Bosch Sensortec BME680) voor bijvoorbeeld gas, druk, luchtvochtigheid en temperatuur.
- Digitale microfoon
ON Semiconductors levert een mobiele app, RSL10 Sense and Control, die via de Android en iOS appstores kan worden gedownload. Hiermee kunnen ontwikkelaars snel het verzamelen van gegevens door de sensoren evalueren en met de RSL10-SENSE-GEVK board de prestaties van de RSL10 analyseren.
Deze app draait op apparaten met Bluetooth en hiermee kunnen ontwerpers het energieverbruik bekijken in verschillende sensorconfiguraties, bemonsteringsintervallen en -cycli, de vermogensmodi van de RSL10 en andere parameters. Als de gewenste sensorconfiguratie eenmaal in de app is ingesteld, dan worden de resultaten in een aantal deelvensters op het display weergegeven (Afbeelding 6).
Afbeelding 6: De mobiele app RSL10 Sense and Control van ON Semiconductor biedt een kant-en-klare oplossing om de prestaties van meerdere sensoren van de RSL10-SENSE-GEVK evaluatieboard te evalueren. (Afbeelding: ON Semiconductor)
Ontwikkelaars kunnen via de CMSIS-Pack distributie en de eerder genoemde IDE-opties de demonstratiecode bekijken en aanpassen. Ontwikkelaars moeten, na de nieuwe firmware te hebben gegenereerd, de image laden via het 10-pins contact en een adapter als de TC2050-IDC-NL van Tag-Connect. Hoewel deze adapter niet met de RSL10-SENSE-GEVK multi-sensor evaluatiekit wordt meegeleverd, bestaat er een versie van de kit voor debuggen, de RSL10-SENSE-DB-GEVK, die een gesoldeerde 10-pens debug-connector bevat evenals een J-Link LITE Cortex debugger van Segger Microcontroller Systems die op deze connector kan worden aangesloten.
Snel ontwikkelen met DK IoT Studio
De RSL10-SENSE-GEVK multi-sensor evaluatieboard kan het ontwikkelen van hardware overbodig maken voor allerlei multi-sensor toepassingen die weinig vermogen gebruiken. Voor veel van dergelijke toepassingen kan een apart online ontwikkelingshulpmiddel van DigiKey de noodzaak van het schrijven van software voor het snel ontwikkelen van prototypes of zelfs van productiesystemen overbodig maken. DK IoT Studio biedt samen met de RSL10-SENSE-GEVK evaluatieboard een ontwikkelingsaanpak zonder coderen waarmee ontwikkelaars snel complete sensor-to-cloud toepassingen kunnen bouwen.
Ontwikkelaars kunnen met de grafische interface van DK IoT Studio elementen verslepen voor allerlei hardware- en softwarecomponenten die in IoT-toepassingen worden gebruikt. Hardware-elementen variëren van individuele GPIO pins tot complete sensorapparaten, waaronder die van de RSL10-SENSE-GEVK evaluatieboard. Software-elementen variëren van typische laag-niveau loops en conditionele code die elk programma gebruikt, tot aan interfaces met cloud services.
Ontwikkelaars kunnen in aparte tabbladen in de grafische interface van DK IoT Studio deze elementen combineren om bewerkingen te definiëren die op de RSL10, in de bijbehorende DK IoT Studio app en in de cloud draaien, zonder één regel code te schrijven.
Met deze aanpak kan voor elk element een set 'vaardigheden' en 'gebeurtenissen' worden geconstrueerd. Zo wordt de BME680 geïntegreerde omgevingssensor geleverd met een set vaardigheden voor het uitlezen van temperatuur, druk en vochtigheidsgraad. Andere functionele elementen, zoals een interval-element, hebben de vaardigheid om periodiek gebeurtenissen aan te sturen om de vaardigheid van een element uit te voeren. Weer andere representeren Bluetooth-communicatie met een mobiel apparaat met Bluetooth zoals een smartphone.
Met deze aanpak is het bouwen van een toepassing ongecompliceerd, terwijl DigiKey een aantal demonstratieprojecten voor de RSL10-SENSE-GEVK evaluatieboard levert. In het BME680 demonstratieproject worden bijvoorbeeld om de 100 ms de vaardigheden van de BME680 sensor voor het uitlezen van temperatuur, druk en luchtvochtigheid aangestuurd. Op hun beurt kunnen de bijbehorende Bluetooth-elementen voor elke sensoruitgang deze sensoruitvoer naar een Bluetooth-apparaat sturen (Afbeelding 7).
Afbeelding 7: In het tabblad Device (Apparaat) van DigiKey DK IoT Studio kunnen ontwikkelaars elementen combineren om periodiek gegevens van de omgevingssensoren op de RSL10-SENSE-GEVK evaluatieboard uit te lezen en via een Bluetooth-verbinding naar de bijbehorende mobiele app te sturen. (Afbeelding: DigiKey)
Ontwikkelaars kunnen met het tabblad Application (Toepassing) in de DigiKey mobiele app een gebruikersinterface bouwen om de via Bluetooth ontvangen gegevens weer te geven. In het BME680 demonstratieproject geeft de toepassing niet alleen temperatuur, druk en luchtvochtigheid weer, maar stuurt het de sensorgegevens tevens naar een cloud-element (Afbeelding 8).
Afbeelding 8: Het tabblad Application (Toepassing) van DigiKey DK IoT Studio vormt een canvas om sensorgegevens in de bijbehorende mobiele app weer te geven plus een deelvenster voor het genereren van de weergegeven gegevens en andere verwerkingen in de mobiele app zoals het sturen van gegevens naar de cloud. (Afbeelding: DigiKey)
Dit gebruik van een tussenliggende app om sensorgegevens naar de cloud over te dragen wordt algemeen gebruikt om te voorkomen dat het IoT-apparaat een rechtstreekse verbinding met de cloud moet onderhouden. De DK IoT Studio bevat Wi-Fi- en andere elementen ter ondersteuning van apparaten met ingebouwde Wi-Fi die de sensorgegevens rechtstreeks naar de cloud kunnen sturen. In beide gevallen worden de cloud-bewerkingen in het tabblad Cloud gespecificeerd. In dit geval worden de gegevens over temperatuur, druk en luchtvochtigheid in cloud-gegevensopslagservices van DK IoT Studio opgeslagen (Afbeelding 9).
Afbeelding 9: In het tabblad Cloud van DK IoT Studio definiëren ontwikkelaars cloud-bewerkingen zoals het opslaan van sensorgegevens in cloud-opslag. (Afbeelding: DigiKey)
De gebruiker kan door op het pictogram Compile (Compileren) te klikken het project in DK IoT Studio compileren nadat hij of zij het apparaat, de toepassing en de cloud-rollen heeft gedefinieerd. De gebruiker kan, na de code te hebben gegenereerd, de resulterende firmware in de RSL10-SENSE-GEVK laden. Daarbij voert een klein hulpprogramma op het systeem van de gebruiker de overdracht van de DK IoT Studio naar de op dat systeem aangesloten evaluatieboard uit. De code voor de toepassing en de cloud-verwerking wordt automatisch in de cloud-omgeving van DK IoT Studio opgeslagen.
Hoewel bij deze aanpak geen toepassingscode hoeft te worden ontwikkeld, worden de bij elk element behorende gebeurtenissen en vaardigheden in een set softwareroutines gedefinieerd, de Embedded Element Library (EEL) genaamd, die in de DK IoT Studio ontwikkelingsomgeving draait.
Zo roept de BME680-vaardigheid 'Read Temperature' (Temperatuur uitlezen) een in een BME680 C-module gedefinieerde abstractie bme680_get_sensor_() aan (Listing 1).
BME680_Status_t BME680_GetTempData( float *tempC )
Copy
{
_BME680_StartMeasurement();
struct bme680_field_data data;
int8_t retval = bme680_get_sensor_data( &data, &_BME680_DriverConfig );
if ( retval != 0 )
{
ATMO_PLATFORM_DebugPrint( "Error getting sensor data! %d\r\n", retval );
*tempC = 0;
}
else
{
*tempC = data.temperature / 100.0;
}
_BME680_Sleep();
return BME680_Status_Success;
}
Listing 1: Achter de grafische interface van DK IoT Studio wordt de bij elk element behorende functionaliteit geïmplementeerd, zoals deze functie die aangeroepen wordt wanneer de vaardigheid 'Read Temperature' (Temperatuur uitlezen) wordt aangestuurd. (Code: DigiKey)
Laag-niveau routines in dezelfde module worden gebruikt voor de bit-manipulaties die nodig zijn om de gewenste gegevens uit de sensorregisters te halen die door een lager-niveau routine bme680_get_regs() worden uitgelezen (Listing 2).
Copy
static int8_t read_field_data( struct bme680_field_data *data, struct bme680_dev *dev )
{
int8_t rslt;
uint8_t buff[BME680_FIELD_LENGTH] = { 0 };
uint8_t gas_range;
uint32_t adc_temp;
uint32_t adc_pres;
uint16_t adc_hum;
uint16_t adc_gas_res;
uint8_t tries = 10;
rslt = null_ptr_check( dev );
do
{
if ( rslt == BME680_OK )
{
rslt = bme680_get_regs( ( ( uint8_t ) ( BME680_FIELD0_ADDR ) ), buff, ( uint16_t ) BME680_FIELD_LENGTH,
dev );
data->status = buff[0] & BME680_NEW_DATA_MSK;
data->gas_index = buff[0] & BME680_GAS_INDEX_MSK;
data->meas_index = buff[1];
adc_pres = ( uint32_t ) ( ( ( uint32_t ) buff[2] * 4096 ) | ( ( uint32_t ) buff[3] * 16 )
| ( ( uint32_t ) buff[4] / 16 ) );
adc_temp = ( uint32_t ) ( ( ( uint32_t ) buff[5] * 4096 ) | ( ( uint32_t ) buff[6] * 16 )
| ( ( uint32_t ) buff[7] / 16 ) );
adc_hum = ( uint16_t ) ( ( ( uint32_t ) buff[8] * 256 ) | ( uint32_t ) buff[9] );
adc_gas_res = ( uint16_t ) ( ( uint32_t ) buff[13] * 4 | ( ( ( uint32_t ) buff[14] ) / 64 ) );
gas_range = buff[14] & BME680_GAS_RANGE_MSK;
data->status |= buff[14] & BME680_GASM_VALID_MSK;
data->status |= buff[14] & BME680_HEAT_STAB_MSK;
if ( data->status & BME680_NEW_DATA_MSK )
{
data->temperature = calc_temperature( adc_temp, dev );
data->pressure = calc_pressure( adc_pres, dev );
data->humidity = calc_humidity( adc_hum, dev );
data->gas_resistance = calc_gas_resistance( adc_gas_res, gas_range, dev );
break;
}
dev->delay_ms( BME680_POLL_PERIOD_MS );
}
tries--;
}
while ( tries );
if ( !tries )
{
rslt = BME680_W_NO_NEW_DATA;
}
return rslt;
}
Listing 2: De bij elk element in DK IoT Studio behorende code vertaalt abstractere functie-aanroepen van hoger-niveau services naar bepaalde bewerkingen zoals het extraheren van gegevens uit registers voor omgevingssensoren. (Code: DigiKey)
Zoals eerder gesuggereerd leveren elementen methodes als conditionele code die algemeen door softwareontwikkelaars worden gebruikt en methodes als GPIO-controle die algemeen door hardwareontwikkelaars worden gebruikt. In de DK IoT Studio-omgeving bieden bijbehorende elementen een eenvoudige drag-and-drop-aanpak voor het testen van condities en het uitvoeren van de juiste acties. Zo laat een ander demonstratieproject zien hoe de led op de RSL10-SENSE-GEVK board aan kan worden gezet als de uitgang van de omgevingslichtsensor op de board een bepaalde waarde overschrijdt (Afbeelding 10).
Afbeelding 10: DK IoT Studio biedt elementen die nodig zijn om abstractere logica uit te voeren zoals het controleren van waardes en laag-niveau bewerkingen als het instellen van GPIO voor de led op de RSL10-SENSE-GEVK evaluatieboard van ON Semiconductor. (Afbeelding: DigiKey)
Voor de cloud kan een soortgelijke test worden gebruikt om metadata voor de mobiele app te genereren. In dit geval kan de metadata in de app worden gebruikt om een waarschuwingspictogram weer te geven om een door de sensor gedetecteerd probleem aan te duiden (Afbeelding 11).
Afbeelding 11: DK IoT Studio ondersteunt geavanceerdere bewerkingen in de cloud en in de mobiele app zoals deze conditiecontrole om metadata over de status in te stellen voor de app en de gegevens in cloud-opslag op te slaan. (Afbeelding: DigiKey)
De onderliggende code voor het schakelen van de led volgt op een serie aanroepen, als eerste het aanroepen van een bij die gebeurtenis behorende hoger-niveau functie in de onderliggende omgeving. Die functie, SetPinState, is een function pointer die tijdens initialisatie wordt ingesteld en naar een lager-niveau functie wijst, ATMO_ONSEMI_GPIO_SetPinState(), waarin de vereiste functionaliteit wordt geïmplementeerd, en uiteindelijk een aanroep van de RSL10 SDK bibliotheekfunctie Sys_DIO_Config() die de gespecificeerde pin instelt (Listing 3).
Copy
ATMO_GPIO_Status_t ATMO_GPIO_SetPinState( ATMO_DriverInstanceHandle_t instance, ATMO_GPIO_Device_Pin_t pin,
ATMO_GPIO_PinState_t state )
{
if ( !( instance < numberOfGPIODriverInstance ) )
{
return ATMO_GPIO_Status_Invalid;
}
return gpioInstances[instance]->SetPinState( gpioInstancesData[instance], pin, state );
}
Listing 3: DK IoT Studio bevat algemene abstracties op servicelagen op lagere niveaus voor hardware-afhankelijke bewerkingen als het zetten van GPIO-bits. (Code: DigiKey)
DK IoT Studio is eenvoudig, maar biedt toch een bijzonder flexibele ontwikkelomgeving. Ontwikkelaars kunnen de EEL-code van een element ongewijzigd gebruiken of deze voor hun eigen toepassing aanpassen. Tijdens ontwikkeling biedt het tabblad Device (Apparaat) van DK IoT Studio een deelvenster met de onderliggende hoger-niveau code die bij de op het tabblad geplaatste elementen hoort (zoals in Afbeelding 7). Ontwikkelaars kunnen in dat deelvenster de code onmiddellijk aanpassen voor toepassingen die speciale bewerkingen vereisen. Andere vaardigheden, zoals een 'functie'-element, voegen een lege functiedefinitie aan de code toe, waarmee ontwikkelaars de bewerking met in de omgeving aanwezige features en functies kunnen aanvullen.
In de praktijk combineert de DK IoT Studio aanpak de eenvoud van drag-and-drop-ontwikkeling zonder coderen met flexibiliteit en prestaties die slechts wordt beperkt door de hoeveelheid geheugen en de mogelijkheden van de processoren van de onderliggende hardware. Ontwikkelaars kunnen met deze aanpak en de RSL10-SENSE-GEVK board snel volledig functionele prototypes implementeren met integratie met de cloud en ondersteuning voor mobiele apps.
Conclusie
Nieuwe toepassingen van apparaten met meerdere sensoren worden in de consumenten-, automobiel-, industriële en andere markten steeds populairder. Voor veel van deze toepassingen zijn Bluetooth-communicatie en een lange batterijlevensduur van essentieel belang. Maar tegelijkertijd hebben ontwikkelaars een ecosysteem nodig dat hen ondersteunt om de voortdurende druk om producten snel op de markt te zetten met een flexibele aanpak het hoofd te kunnen bieden. De RSL10 SoC, RSL10 SiP en de RSL10-SENSE-GEVK evaluatieboard van ON Semiconductor bieden een aantal oplossingen om deze uitdagingen aan te gaan die aan de eisen voor respectievelijk een aangepast ontwerp, geïntegreerde modules en complete oplossingen voor multi-sensortoepassingen voldoen. Ontwikkelaars kunnen deze hardwareplatforms gebruiken om aangepaste toepassingen te implementeren met behulp van de RSL10 softwareontwikkelingsset en de bijbehorende softwaredistributiepakketten.
De combinatie van de RSL10-SENSE-GEVK evaluatieboard van ON Semiconductor en de DK IoT Studio IDE biedt een platform voor snelle ontwikkeling van multi-sensor systemen met een uiterst laag energieverbruik in complete toepassingen met integratie met de cloud. De RSL10 hardware levert samen met de beschikbare software-opties een uiterst flexibel platform op voor het ontwikkelen en implementeren van gecertificeerde Bluetooth-apparaten met een lange batterijlevensduur.
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.




