Implementare rapidamente un dispositivo IoT multi-sensore certificato Bluetooth 5 alimentato a batteria

Di Stephen Evanczuk

Contributo di Editori nordamericani di DigiKey

Agli sviluppatori viene chiesto sempre più spesso di realizzare progetti portatili multi-sensore abilitati Bluetooth per diversi settori, ma trovare soluzioni efficaci non è facile. Oltre al requisito fondamentale di prestazioni a bassissimo consumo energetico, per sfruttare le opportunità in rapida evoluzione è diventato essenziale riuscire a prototipare, valutare e personalizzare rapidamente questi progetti in applicazioni Internet delle cose (IoT) dal dispositivo al cloud.

Questo articolo descrive un System-on-Chip (SoC) per un processore Bluetooth a bassissimo consumo di ON Semiconductor e mostra come il SoC, o la corrispondente versione System-in-Package (SiP), risponde ai requisiti fondamentali di progetti alimentati a batteria. Una scheda di valutazione associata e l'ambiente di sviluppo IoT semplificano drasticamente il processo di creazione di applicazioni multi-sensore dal dispositivo al cloud.

Applicazioni Bluetooth a basso consumo

I dispositivi alimentati a batteria abilitati Bluetooth forniscono la connettività e la capacità di elaborazione in applicazioni di prodotti intelligenti che vanno da dispositivi indossabili per il fitness, a monitor medicali, illuminazione, serrature, elettrodomestici, automobili e molti altri. Le aspettative degli utenti e le pressioni della concorrenza continuano a spingere verso applicazioni più complete, alimentate da dati più precisi provenienti da un maggior numero di sensori. In alcune aree, come le applicazioni industriali, le capacità multi-sensore sono essenziali per rilevare movimenti, vibrazioni o urti, temperatura, livello di umidità o altri dati necessari per garantire la sicurezza dei lavoratori, lo stato delle apparecchiature o la gestione delle risorse di base.

Nelle attività quotidiane degli utenti, questi dispositivi non solo devono fornire dati affidabili provenienti da più sensori, ma devono anche ridurre la necessità di sostituire o ricaricare spesso le batterie. Si tratta di requisiti fondamentali per garantire all'utente un'esperienza soddisfacente. Allo stesso tempo, le soluzioni sottostanti devono contribuire a ridurre il costo e la complessità solitamente associati alla progettazione di prodotti Bluetooth alimentati a batteria.

Una di queste soluzioni, il SoC RSL10 NCH-RSL10-101WC51-ABG di ON Semiconductor, risponde ai requisiti di un funzionamento a bassissimo consumo energetico e, allo stesso tempo, fornisce la base hardware per SiP e schede di valutazione che aiutano ad accelerare lo sviluppo dei prodotti finali. Utilizzate con il software di ON Semiconductor per uno sviluppo personalizzato, o con DK IoT Studio di DigiKey per accelerare lo sviluppo, le soluzioni integrate basate su RSL10 consentono agli sviluppatori di implementare e valutare rapidamente applicazioni multi-sensore a bassissimo consumo energetico.

Uno sguardo dentro il SoC wireless Bluetooth RSL10

RSL10 è un SoC wireless certificato Bluetooth 5 progettato appositamente per rispondere alla crescente domanda di progetti a bassissimo consumo energetico per dispositivi indossabili, apparecchiature mobili e altri prodotti connessi. Con un set completo di sottosistemi integrati e blocchi funzionali, RSL10 offre una soluzione a chip singolo in grado di soddisfare i requisiti dei tipici dispositivi indossabili e IoT abilitati Bluetooth (Figura 1).

Schema del SoC RSL10 di ON Semiconductor (fare clic per ingrandire)Figura 1: Il SoC RSL10 di ON Semiconductor integra sottosistemi radio e processore per fornire una soluzione completa e a bassissimo consumo energetico per dispositivi certificati Bluetooth 5. (Immagine per gentile concessione di ON Semiconductor)

I principali blocchi di elaborazione del dispositivo includono un core Arm® Cortex®-M3, un core di elaborazione dei segnali digitali (DSP) con doppia architettura Harvard a 32 bit LPDSP32 proprietario e un sottosistema radio completo certificato Bluetooth 5, il tutto supportato da aree di memoria dedicata e condivisa. A protezione di codice e dati, un blocco IP fornisce meccanismi che impediscono l'accesso esterno alla memoria flash su chip, alla memoria ad accesso casuale (RAM) o al core del dispositivo. Oltre a un set completo di periferiche seriali standard, il dispositivo offre un convertitore analogico/digitale (ADC) a quattro canali, I/O per uso generale (GPIO) e interfacce audio. Una serie di regolatori di tensione alimentano individualmente i domini della potenza interna, consentendo al dispositivo di alimentare un'unica sorgente di tensione tra 1,1 V e 3,3 V.

Anche se è in grado di supportare numerosi protocolli WPAN (Wireless Personal Area Network) wireless 802.15.4 a bassa velocità di trasmissione dati, RSL10 fornisce un supporto completo per Bluetooth grazie a una combinazione di hardware e software incorporati. Il supporto hardware si basa sul front-end integrato a radiofrequenza (RF) che implementa lo strato fisico (PHY) Bluetooth. Lavorando con il front-end RF, il controller in banda base fornisce supporto hardware per gli strati di elaborazione dei pacchetti e dei frame dello stack di protocollo Bluetooth. Qui, un piccolo kernel software incorporato fornisce servizi di gestione di eventi e messaggi utilizzati per la gestione del traffico RF, lo scambio di messaggi e la funzionalità di temporizzazione. Infine, per completare l'intero stack Bluetooth per il software applicativo, sul processore Arm Cortex-M3 vengono eseguite una libreria Bluetooth e le relative librerie di profili (Figura 2).

Schema dello stack Bluetooth completo del SoC RSL10 di ON SemiconductorFigura 2: Il SoC RSL10 di ON Semiconductor offre uno stack Bluetooth completo grazie a una combinazione di software in esecuzione nel core Arm Cortex-M3 e ad hardware dedicato comprendente un processore in banda base e un front-end RF sottostante. (Immagine per gentile concessione di ON Semiconductor)

Lo stack software è basato sul supporto hardware nel front-end RF e sul processore in banda base. Combina livelli di servizio del protocollo Bluetooth Low Energy (BLE) di livello inferiore, tra cui il protocollo logico di controllo dei collegamenti e di adattamento (L2CAP), Attribute Protocol (ATT) e Security Manager Protocol (SMP), il Generic Access Profile (GAP) utilizzato per definire le connessioni e il Generic ATTribute Profile (GATT) utilizzato per definire gli scambi di dati in base ai servizi e alle caratteristiche.

Oltre a questo stack di protocollo Bluetooth, le librerie di profili RSL10 supportano diversi profili Bluetooth standard spesso utilizzati in applicazioni indossabili, tra cui cardiofrequenzimetro, glucosimetro, sfigmomanometro, il profilo di ricarica wireless Rezence e il dispositivo di interfaccia umana (HID), nonché profili per la localizzazione, la corsa e il ciclismo, tra gli altri.

Prestazioni efficienti

Gli aspetti forse più importanti, per i progettisti, sono i consumi relativamente bassi di RSL10 e la connettività Bluetooth a velocità di trasmissione dati che vanno da 62,5 a 2000 kbps. La corrente di ricezione di picco (Rx) con un'alimentazione di 1,25 V (VBAT) è di 5,6 mA e di soli 3,0 mA con una VBAT di 3 V. La corrente di trasmissione di picco (Tx) con una VBAT di 1,25 V è di 8,9 mA a una potenza di trasmissione di 0 dBm (decibel riferiti a un milliwatt) e di soli 4,6 mA con una VBAT di 3 V a una potenza di trasmissione di 0 dBm.

L'efficienza energetica di RSL10 si estende attraverso l'architettura, come dimostrato dal profilo del suo core ULPMark certificato EEMBC leader del settore, di 1090 (3 V) e 1260 a 2,1 V.

Per migliorare ulteriormente l'efficienza, gli sviluppatori possono disabilitare selettivamente i blocchi hardware mentre RSL10 è in modalità di esecuzione completa, o mettere il dispositivo in standby a basso consumo o in modalità di sospensione profonda durante i periodi di inattività. Va notato che RSL10 utilizza automaticamente questi meccanismi di modalità di alimentazione per mantenere una connessione BLE tra gli eventi del transceiver. Di conseguenza, il dispositivo può eseguire operazioni di advertising Bluetooth su tutti e tre i canali di advertising Bluetooth a intervalli di 5 secondi, consumando solo 1,1 mA.

La modalità standby offre agli sviluppatori la possibilità di risparmiare energia durante i periodi di bassa attività che vanno da centinaia di millisecondi a pochi millisecondi.

Durante la modalità standby, RSL10 riduce la frequenza del clock di logica e memoria e la loro tensione di alimentazione per abbassare la corrente di dispersione, con un conseguente consumo energetico tipico di soli 30 mA. Dato che i circuiti di alimentazione su chip rimangono attivi, il dispositivo può tornare in funzionamento attivo in tempi relativamente brevi.

La modalità di sospensione profonda offre numerose opzioni per ottenere livelli di consumo energetico molto più bassi, pur mantenendo la capacità di rispondere agli eventi esterni. Operando in questa modalità con 8 kbyte di mantenimento dei dati in RAM, il dispositivo consuma solo 300 nA con una VBAT di 1,25 V, o solo 100 nA con una VBAT di 3 V. In modalità di sospensione più profonda, il dispositivo consuma solo 50 nA a 1,25 V (25 nA con VBAT a 3 V) mantenendo la capacità di riattivarsi in risposta ai segnali ricevuti sul suo pin WAKEUP dedicato.

Design integrato

Le estese capacità funzionali di RSL10 aiutano gli sviluppatori a creare progetti ottimizzati dal punto di vista energetico senza compromettere le prestazioni o la connettività Bluetooth. Il suo alto livello di integrazione aiuta a semplificare la progettazione dell'hardware. Componenti come i condensatori integrati eliminano la consueta necessità di condensatori esterni con cristallo a 32 kHz per il clock in tempo reale (RTC) o con gli oscillatori a cristallo a 48 MHz per il front-end RF e il clock di sistema principale. Di conseguenza, RSL10 richiede pochissimi componenti esterni per ottenere un progetto completo (Figura 3).

Schema della configurazione di RSL10 di ON Semiconductor per il funzionamento in modalità buckFigura 3: Grazie al suo elevato livello di integrazione, il SoC RSL10 di ON Semiconductor fornisce un progetto completo con un numero relativamente basso di componenti esterni, come mostrato in questa configurazione per il funzionamento in modalità buck. (Immagine per gentile concessione di ON Semiconductor)

Il dispositivo integra diversi regolatori di tensione programmabili per alimentare blocchi front-end digitali, di memoria e RF. Una pompa di carica fornisce i livelli di tensione più elevati richiesti per i blocchi analogici e la memoria flash. Grazie a questi sistemi di alimentazione integrati, il dispositivo può funzionare con un'unica sorgente di alimentazione compresa tra 1,1 V e 3,3 V.

A livelli di tensione inferiori a 1,4 V, i progettisti possono alimentare il dispositivo utilizzando il suo regolatore interno a bassa caduta di tensione (LDO). Al di sopra di questo livello, il convertitore buck integrato del dispositivo contribuisce ad aumentare l'efficienza al costo di un induttore in più. La progettazione del circuito per queste due configurazioni della sorgente di alimentazione differisce solo in quanto, come mostrato nella Figura 3, il funzionamento in modalità LDO consente di eliminare l'induttore aggiuntivo tra i pin VCC e VDC. ON Semiconductor fornisce linee guida per il posizionamento dei componenti e la progettazione fisica delle schede a circuiti stampati con RSL10.

Progettazione del sistema con RSL10

Per gli sviluppatori che non dispongono del tempo e delle risorse per costruire queste interfacce hardware, il SiP RSL10 NCH-RSL10-101S51-ACG di ON Semiconductor rappresenta un'alternativa efficace alle implementazioni hardware personalizzate per progetti di sistema. Il SiP RSL10, di 6x8x1,5 mm, integra in un unico contenitore il SoC RSL10, un'antenna radio e tutti i componenti richiesti. Con il SiP RSL10, i progettisti possono inserire nei loro progetti una soluzione hardware completa certificata Bluetooth a bassissimo consumo energetico e concentrare i loro sforzi sui requisiti hardware personalizzati.

In modo analogo, i pacchetti software RSL10 di ON Semiconductor contribuiscono a indirizzare gli sforzi di sviluppo software sui requisiti personalizzati. Partendo dal livello di astrazione hardware (HAL) di Arm Cortex Microcontroller Software Interface Standard (CMSIS), il kit di sviluppo software RSL10 (SDK) di ON Semiconductor fornisce driver, utilità e codice di esempio distribuiti nel pacchetto CMSIS di RSL10 (Figura 4).

Schema dell'ambiente software RSL10 di ON SemiconductorFigura 4: Nel suo pacchetto base, l'ambiente di sviluppo software RSL10 di ON Semiconductor offre una vasta gamma di servizi e utilità. Pacchetti aggiuntivi supportano la connettività di rete Bluetooth Mesh e lo sviluppo di IoT Bluetooth. (Immagine per gentile concessione di ON Semiconductor)

Tra i suoi servizi più specializzati, questo pacchetto include il supporto Bluetooth, il sistema operativo in tempo reale FreeRTOS (RTOS) e un'utilità di aggiornamento firmware via etere (FOTA). Inoltre, ON Semiconductor fornisce supporto per funzionalità più specializzate con pacchetti separati per la connettività di rete Bluetooth Mesh e per lo sviluppo di IoT Bluetooth (B-IDK). Ad esempio, il pacchetto Bluetooth IoT Development Kit (B-IDK) CMSIS fornisce servizi legati a IoT, compresi i driver dei sensori, il supporto per la connettività cloud e i relativi esempi di software a livello applicativo.

Per lo sviluppo personalizzato, gli ingegneri software caricano semplicemente i pacchetti base e quelli opzionali nel loro ambiente di sviluppo integrato (IDE). La distribuzione del software RSL10 supporta l'IDE di ON Semiconductor, oltre agli ambienti Arm Keil µVision e IAR Embedded Workbench. Dopo aver caricato i pacchetti, gli sviluppatori possono esplorare le applicazioni campione e studiare le implementazioni delle caratteristiche chiave.

Scheda multi-sensore BLE, pronta all'uso

Utilizzati congiuntamente, il SiP RSL10 e l'SDK RSL10 possono accelerare lo sviluppo di dispositivi personalizzati abilitati Bluetooth in grado di soddisfare i severi requisiti di un funzionamento a bassissimo consumo energetico. Per alcune applicazioni, tuttavia, si potrebbe non disporre del tempo e delle risorse necessarie per realizzare soluzioni personalizzate, oppure potrebbero non essere necessarie.

Ad esempio, ai dispositivi di monitoraggio industriali multi-sensore o alle serrature intelligenti e agli interruttori della luce potrebbe servire un piccolo dispositivo abilitato Bluetooth in grado di estendere la durata della batteria e di fornire dati provenienti da più tipi di sensori. Per queste applicazioni, il kit di valutazione multi-sensore RSL10-SENSE-GEVK di ON Semiconductor può offrire una soluzione hardware immediata. La scheda del kit di valutazione è certificata a livello internazionale e pronta per l'installazione in applicazioni a bassissimo consumo energetico.

La scheda RSL10-SENSE-GEVK include un SiP RSL10, diversi sensori, una EEPROM di comunicazioni near-field (NFC) a 64 kbyte N24RF64DWPT3G di ON Semiconductor, un LED RGB e pulsanti programmabili. La scheda occupa un ingombro circolare con un diametro di meno di 30 mm, superiore solo di poco a quello della batteria a bottone CR2032 e dell'antenna NFC flessibile inclusa nel kit (Figura 5).

Immagine della scheda di valutazione RSL10-SENSE-GEVK di ON SemiconductorFigura 5: La scheda di valutazione RSL10-SENSE-GEVK di ON Semiconductor combina un SiP RSL10 con un ampio array di sensori richiesti normalmente nei dispositivi indossabili e IoT. (Immagine per gentile concessione di ON Semiconductor)

La scheda viene fornita con precaricato il firmware progettato per dimostrare il funzionamento dei diversi sensori della scheda, inclusi:

  • Sensore di luce ambiente (NOA1305 di ON Semiconductor)
  • Unità di misurazione inerziale (BHI160 di Bosch Sensortec), con accelerometro a 3 assi e giroscopio a 3 assi
  • Sensore geomagnetico digitale a 3 assi (BMM150 di Bosch Sensortec)
  • Sensori ambientali (BME680 di Bosch Sensortec) inclusi i sensori di gas, pressione, umidità e temperatura
  • Microfono digitale

Per aiutare gli sviluppatori a valutare rapidamente il set di sensori e le prestazioni di RSL10 con la scheda RSL10-SENSE-GEVK, ON Semiconductor fornisce un'app mobile, RSL10 Sense and Control, disponibile negli app store Android e iOS.

In esecuzione su un dispositivo mobile con funzionalità Bluetooth, questa applicazione consente agli sviluppatori di monitorare il consumo energetico con diverse configurazioni di sensori, intervalli e cicli di campionamento e modalità di alimentazione RSL10 e altri parametri. Una volta impostata nell'app la configurazione dei sensori desiderata, l'app visualizza i risultati in una serie di riquadri (Figura 6).

Immagine dell'app mobile RSL10 Sense and Control di ON SemiconductorFigura 6: L'app mobile RSL10 Sense and Control di ON Semiconductor offre una soluzione pronta per valutare le prestazioni dei vari sensori della scheda di valutazione RSL10-SENSE-GEVK. (Immagine per gentile concessione di ON Semiconductor)

Gli sviluppatori possono vedere e modificare il codice dimostrativo utilizzando la distribuzione del pacchetto CMSIS e le opzioni IDE ricordate in precedenza. Dopo aver generato un nuovo firmware, gli sviluppatori devono caricare l'immagine usando un connettore adattatore a 10 pin ad ago, ad esempio TC2050-IDC-NL di Tag-Connect. Anche se questo adattatore non è incluso nel kit di valutazione multi-sensore RSL10-SENSE-GEVK, una versione di debug del kit - RSL10-SENSE-DB-GEVK - offre una spina di debug a 10 pin saldata e un debugger J-Link LITE Cortex di Segger Microcontroller Systems da collegare a questa spina.

Sviluppo rapido con DK IoT Studio

La scheda di valutazione multi-sensore RSL10-SENSE-GEVK può evitare lo sviluppo hardware per numerosi tipi di applicazioni multi-sensore che richiedono una durata estesa della batteria. Per molte di queste applicazioni, uno strumento di sviluppo online separato di DigiKey può eliminare la necessità di codificare il software per lo sviluppo rapido di prototipi o anche di sistemi di produzione. Utilizzato con la scheda di valutazione RSL10-SENSE-GEVK, DK IoT Studio fornisce un approccio di sviluppo senza codice che consente agli sviluppatori di implementare rapidamente applicazioni complete dal sensore al cloud.

Gli sviluppatori che si servono dell'interfaccia grafica DK IoT Studio trascinano e rilasciano elementi rappresentativi di un'ampia gamma di elementi hardware e software utilizzati nelle applicazioni IoT. Gli elementi hardware vanno da singoli pin di GPIO a dispositivi completi basati su sensori, compresi quelli inclusi nella scheda di valutazione RSL10-SENSE-GEVK. Gli elementi software vanno dalle tipiche caratteristiche di basso livello, come i loop e le istruzioni condizionali utilizzate in qualsiasi programma, fino alle interfacce di servizio cloud.

Utilizzando combinazioni di questi elementi, gli sviluppatori lavorano in pagine separate nell'interfaccia grafica di DK IoT Studio per definire le operazioni da eseguire in RSL10, nell'app DK IoT Studio e nel cloud, il tutto senza scrivere alcun codice software.

Questo approccio si basa su una serie di "abilità" ed "eventi" associati a ogni elemento. Ad esempio, il sensore ambientale integrato BME680 è dotato di una serie di capacità per leggere temperatura, pressione e umidità. Altri elementi funzionali, come un elemento di intervallo, sono in grado di innescare periodicamente eventi che causano l'esecuzione della funzione propria dell'elemento. Altri ancora rappresentano le comunicazioni Bluetooth con un dispositivo mobile abilitato Bluetooth, come uno smartphone.

Realizzare un'applicazione seguendo questo approccio è semplice. DigiKey fornisce una serie di progetti dimostrativi per la scheda di valutazione RSL10-SENSE-GEVK. Ad esempio, in un progetto dimostrativo per BME680, un elemento di intervallo attiva le capacità del sensore BME680 per leggere temperatura, pressione e umidità ogni 1000 ms. A loro volta, gli elementi Bluetooth associati a ogni uscita del sensore fanno sì che quelle letture vengano trasmesse a un dispositivo Bluetooth (Figura 7).

Immagine della pagina relativa al dispositivo in DK IoT Studio di DigiKey (fare clic per ingrandire)Figura 7: Nella pagina relativa al dispositivo in DK IoT Studio di DigiKey, gli sviluppatori combinano gli elementi per leggere periodicamente i dati del sensore ambientale sulla scheda di valutazione RSL10-SENSE-GEVK e, tramite una connessione Bluetooth, trasmettono tali dati a un'app mobile abbinata. (Immagine per gentile concessione di DigiKey)

La pagina dell'applicazione consente agli sviluppatori di creare un'interfaccia utente all'interno dell'app mobile di DigiKey per visualizzare i dati ricevuti tramite Bluetooth. Nella demo del progetto per BME680, questa applicazione non solo visualizza temperatura, pressione e umidità, ma invia anche la lettura di ogni sensore a un elemento cloud (Figura 8).

Immagine della pagina dell'applicazione DK IoT Studio di DigiKey (fare clic per ingrandire)Figura 8: La pagina dell'applicazione DK IoT Studio di DigiKey fornisce un pannello per visualizzare i dati dei sensori nella relativa app mobile, nonché un riquadro per generare i dati visualizzati ed eseguire altre operazioni nell'app mobile, come l'invio di dati al cloud. (Immagine per gentile concessione di DigiKey)

Questo uso di un'app intermedia per trasmettere i dati dei sensori a un'app basata su cloud serve comunemente a evitare connessioni dirette dal dispositivo IoT al cloud. Per i dispositivi con capacità di comunicazione Wi-Fi incorporata, i dati dei sensori possono ovviamente essere inviati direttamente al cloud e DK IoT Studio fornisce elementi Wi-Fi e altri che supportano questo approccio. In entrambi i casi, le operazioni su cloud sono specificate nella pagina relativa al cloud. In questo caso, i risultati di temperatura, pressione e umidità sono memorizzati nei servizi di archiviazione dei dati sul cloud forniti con DK IoT Studio (Figura 9).

Immagine della pagina relativa al cloud di DK IoT Studio (fare clic per ingrandire)Figura 9: Nella pagina relativa al cloud di DK IoT Studio, gli sviluppatori definiscono le operazioni basate sul cloud, come l'archiviazione dei dati dei sensori nella memoria sul cloud. (Immagine per gentile concessione di DigiKey)

Dopo aver completato la definizione del dispositivo, dell'applicazione e dei ruoli del cloud, l'utente può compilare il progetto in DK IoT Studio facendo clic sull'icona di compilazione. Una volta generato il codice, l'utente può caricare il firmware risultante in RSL10-SENSE-GEVK. Qui, una piccola utility in esecuzione sul sistema dell'utente completa il trasferimento da DK IoT Studio alla scheda di valutazione collegata a quel sistema. I set di codici dell'applicazione e del cloud vengono salvati automaticamente nell'ambiente cloud di DK IoT Studio.

Anche se in questo modo non è più necessario sviluppare codice applicativo, le capacità e gli eventi associati a ogni elemento sono definiti in un insieme di routine software, chiamato Embedded Element Library (EEL), che vengono eseguite nell'ambiente di sviluppo di DK IoT Studio.

Ad esempio, la capacità "Leggi temperatura" di BME680 richiama un'astrazione bme680_get_sensor_() definita in un modulo del linguaggio C di BME680 (Listato 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;
}

Listato 1: Il codice sottostante l'interfaccia grafica di DK IoT Studio associato a ogni elemento implementa funzionalità specifiche, come questa che viene richiamata ogni volta che viene attivata la capacità "Leggi temperatura". (Codice per gentile concessione di DigiKey)

Le routine di basso livello nello stesso modulo implementano le operazioni di manipolazione dei bit necessarie per estrarre i dati desiderati dai registri dei sensori letti da una routine di livello inferiore, bme680_get_regs() (Listato 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;
}

Listato 2: Il codice associato a ogni elemento di DK IoT Studio traduce le chiamate di funzioni più astratte da servizi di livello superiore in operazioni specifiche come l'estrazione di dati dai registri dei sensori ambientali. (Codice per gentile concessione di DigiKey)

Come suggerito sopra, gli elementi forniscono metodi come le istruzioni condizionali usate comunemente dagli sviluppatori di software e metodi come il controllo GPIO usato abitualmente dagli sviluppatori di hardware. Nell'ambiente DK IoT Studio, gli elementi corrispondenti forniscono un approccio drag-and-drop semplice per testare le condizioni ed eseguire le azioni appropriate. Ad esempio, un altro progetto dimostrativo mostra come il LED sulla scheda RSL10-SENSE-GEVK può essere acceso se l'uscita del sensore di luce ambiente della scheda supera il valore specificato (Figura 10).

Immagine di DK IoT Studio di DigiKeyFigura 10: DK IoT Studio fornisce gli elementi richiesti per eseguire una logica più astratta, come il controllo dei valori e operazioni di basso livello come l'impostazione di un GPIO legato al LED sulla scheda di valutazione RSL10-SENSE-GEVK di ON Semiconductor. (Immagine per gentile concessione di DigiKey)

Sul lato cloud, si può utilizzare un test simile per generare metadati per l'app mobile. In questo caso, i metadati potrebbero essere utilizzati nell'applicazione per impostare un'icona di avviso che segnala un problema rilevato dal sensore (Figura 11).

Immagine del controllo delle condizioni di DK IoT Studio per impostare i metadati dello statoFigura 11: DK IoT Studio supporta operazioni più sofisticate nel cloud e sull'app mobile, come questa verifica delle condizioni per impostare i metadati dello stato dell'app e conservare i dati nella memoria sul cloud. (Immagine per gentile concessione di DigiKey)

L'esecuzione del codice sottostante responsabile dell'attivazione del LED segue una catena di chiamate a partire dal richiamo di una funzione di livello superiore associata a quell'evento nell'ambiente sottostante. Questa funzione, SetPinState, è un puntatore di funzione impostato durante l'inizializzazione per puntare a una funzione di livello inferiore, ATMO_ONSEMI_GPIO_GPIO_SetPinState(), che implementa la funzionalità richiesta, chiamando infine una funzione libreria di RSL10 SDK di ON Semiconductor, Sys_DIO_Config(), che imposta il pin specificato (Listato 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 );
}

Listato 3: DK IoT Studio fornisce un insieme di astrazioni comuni realizzate nei livelli di servizio di livello inferiore, che implementano operazioni specifiche dell'hardware come l'impostazione di bit GPIO. (Codice per gentile concessione di DigiKey)

In virtù della sua grande semplicità, DK IoT Studio offre un ambiente di sviluppo altamente flessibile. Gli sviluppatori possono fare affidamento sul codice EEL di un elemento così com'è oppure modificarlo come richiesto dalla loro applicazione. Durante lo sviluppo, la pagina relativa al dispositivo DK IoT Studio fornisce un pannello che contiene il codice sottostante di alto livello associato agli elementi posti sul pannello della pagina (come si può vedere nella Figura 7). Per le applicazioni che richiedono una gestione speciale, gli sviluppatori possono modificare immediatamente il codice in quel pannello. Altre funzionalità, come l'elemento "funzione", aggiungono al codice una definizione di funzione vuota, consentendo agli sviluppatori di integrare l'esecuzione con caratteristiche e funzioni disponibili nell'ambiente.

In pratica, l'approccio di DK IoT Studio combina la semplicità dello sviluppo drag-and-drop senza codice con una flessibilità e prestazioni limitate solo dalla quantità di memoria e dalle capacità del processore dei dispositivi hardware sottostanti. Utilizzando questo approccio con la scheda RSL10-SENSE-GEVK, gli sviluppatori possono implementare rapidamente prototipi pienamente funzionali con connettività dal dispositivo al cloud e supporto per app mobili.

Conclusione

Su vari mercati, inclusi quelli consumer, automotive e industriale, continuano a nascere nuove applicazioni di dispositivi multi-sensore. Per molte di queste applicazioni, la connettività Bluetooth e la durata estesa della batteria rivestono un'importanza fondamentale, ma ai progettisti serve anche l'ecosistema di supporto per poter rispondere con approcci di progettazione flessibili alla costante pressione del time-to-market. Per affrontare queste sfide, il SoC RSL10, il SiP RSL10 e la scheda di valutazione RSL10-SENSE-GEVK di ON Semiconductor offrono una serie di soluzioni che rispondono rispettivamente ai requisiti di progettazione personalizzata, moduli integrati e soluzioni multi-sensore complete. Utilizzando queste piattaforme hardware, gli sviluppatori possono implementare applicazioni personalizzate facendo uso del kit di sviluppo software RSL10 e dei relativi pacchetti di distribuzione software.

Per accelerare lo sviluppo di applicazioni multi-sensore dal dispositivo al cloud, la combinazione della scheda di valutazione RSL10-SENSE-GEVK di ON Semiconductor e dell'IDE DK IoT Studio offre una potente piattaforma di sviluppo rapido per implementare soluzioni multi-sensore a bassissimo consumo energetico in applicazioni complete dal dispositivo al cloud. Usati congiuntamente, l'hardware RSL10 e le opzioni software disponibili rappresentano una piattaforma estremamente flessibile per lo sviluppo e l'implementazione di dispositivi certificati Bluetooth in grado di soddisfare la richiesta di una durata estesa della batteria.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk ha più di 20 anni di esperienza come autore sull'industria elettronica e ha scritto su una vasta gamma di argomenti tra cui hardware, software, sistemi e applicazioni, incluso l'IoT. Ha ricevuto un Ph.D. in neuroscienze sulle reti neuronali e ha lavorato nel settore aerospaziale su sistemi di sicurezza ampiamente distribuiti e sui metodi di accelerazione algoritmica. Attualmente, quando non scrive articoli su tecnologia e ingegneria, lavora su applicazioni di deep learning per i sistemi di riconoscimento e di raccomandazione.

Informazioni su questo editore

Editori nordamericani di DigiKey