Introduzione
L'uso della comunicazione Bluetooth* LE (BLE) sta vivendo un boom sia nei prodotti commerciali che in ambito hobbystico, principalmente grazie al costo ridotto e ai requisiti energetici minimi. Tutto ciò lo rende un'ottima scelta quando si desidera comunicare dal proprio telefono o tablet Android* verso i progetti Intel® Edison o Intel® Galileo.
Lo scopo che si prefigge questo documento è di mostrarvi come scrivere il codice e collegare l'hardware per stabilire una comunicazione BLE tra un Intel Edison e un dispositivo Android dotato di Bluetooth 4.0, tramite software gratuito e hardware a costi contenuti.
Che cos'è BLE?
Bluetooth Low Energy, Bluetooth LE, o semplicemente BLE (noto anche come Bluetooth Smart) è una tecnologia di rete personale wireless progettata e commercializzata da Bluetooth Special Interest Group. È destinata ad applicazioni nel settore sanitario, del fitness, della protezione, dell'automazione e dell'home entertainment.
Bluetooth LE era stato originariamente presentato con il nome di Wibree da Nokia nel 2006. È stato aggiunto allo standard Bluetooth nel 2010 con la versione Bluetooth 4.0.
BLE consente ai dispositivi di consumare sensibilmente meno energia delle normali connessioni Bluetooth, tuttavia offrendo la stessa connettività di un regolare Bluetooth, con circa la metà del raggio d'azione (circa 15 metri). I dispositivi alimentati a batterie che utilizzano Bluetooth LE sono in grado di funzionare per anni senza che si debbano ricaricare o sostituire le batterie. I dispositivi Beacon come quelli di Estimote dichiarano già una durata della batteria di tre (3) anni (www.estimote.com).
Hardware
Ci concentremo su Intel Edison, ma la maggior parte del contenuto è applicabile anche a Intel Galileo. Per il nostro progetto IoT, i sensori e controlli fisici che utilizzeremo provengono dal sistema Grove di Seeed Studio. Nello specifico, impiegheremo:
- Intel Galileo con
- Seeed Grove – Starter Kit Plus Intel® IoT Edition per Galileo GEN 2
- Seeed Grove BLE
- Un dispositivo Android dotato di Android 4.3 o superiore (Ho usato un Lenovo TAB S8-50)
- Un PC con Windows* 7 o 8 per lo sviluppo (Ho usato un Dell XPS12)
Un paio di note sull'hardware:
- Il Grove Starter Kit indica che è stato progettato per Intel Galileo, ma funziona bene con Edison. Volendo è possibile acquistare singolarmente i componenti Grove ma il kit è più economico.
- Ho usato il mio tablet Lenovo Android durante lo sviluppo ma qualsiasi dispositivo Android con almeno Android 4.3 e supporto per Bluetooth 4.0 dovrebbe andar bene.
- Ho usato il mio Dell XPS12 per scrivere il codice per Intel Edison e il progetto Android (e questo articolo). Lo sviluppo può essere eseguito anche su sistemi Mac* o Linux*.
Software
Ho impiegato diversi strumenti software gratuiti. Per procedere seguendo questo esempio, dovrete scaricarli e installarli se necessario:
- Arduino IDE per Intel® Edison: https://software.intel.com/it-it/get-started-arduino-install
- Android Studio: https://developer.android.com/sdk/installing/studio.html
- Android SDK: https://developer.android.com/sdk/index.html?hl=i
Tutto il software di cui sopra è disponibile per Windows, Mac e Linux, ma qui parlerò nello specifico solo dell'installazione su Windows.
Uno sguardo da vicino all'hardware
Intel® Edison
Intel® Edison è la prima serie proposta di piattaforme di calcolo generiche e a costi contenuti. È progettata per consentire la realizzazione rapida e semplice di prototipi di progetti IoT fornendo un percorso pronto all'uso per la commercializzazione.
Intel® Edison impiega un SoC Intel® da 22nm che include una CPU dual-core Intel® Atom™ a 500MHz. Supporta 40 GPIO e include RAM LPDDR3 da 1GB, EMMC da 4GB per l'archiviazione e Wi-Fi* e Bluetooth dual band in un minuscolo fattore di forma.
Al suo interno gira un kernel Linux e per ottenere le prestazioni migliori da Edison, dovrete scrivere il codice Linux a livello hardware.
Tuttavia Edison Linux contiene inoltre un'implementazione Arduino come programma Linux. In poche parole, significa che potete scrivere sketch per Arduino ed eseguirli sulla scheda Edison. Ed è esattamente ciò che andremo a fare.
Per maggiori informazioni su Intel Edison qui: http://www.intel.com/content/www/us/en/do-it-yourself/edison.html
Scheda di breakout Arduino
La scheda di breakout Arduino per Intel Galileo serve a due finalità. Primo, fornisce una piattaforma di prototipazione più grande per un facile accesso ai pin IO. E secondo, fornisce una piattaforma hardware compatibile con Arduino, in modo da potere utilizzare scudi Arduino con Intel Edison (proprio come Intel Galileo). La figura 1 mostra Edison montato sulla scheda di breakout Arduino.
Figura 1. Intel® Edison montato sulla scheda di breakout Arduino
Grove Starter Kit Plus
Il nome completo del kit è “Grove Starter Kit Plus – Intel® IoT Edition for Intel® Galileo Gen 2 Developer Kit” ed è stato progettato originariamente per le schede di 2a generazione Intel Galileo. Fortunatamente, è totalmente compatibile con Intel Edison tramite la scheda di breakout Arduino.
Il kit (mostrato in Figura 2) è progettato per semplificare il lavoro e la prototipazione con sensori, attuatori e scudi. Contiene uno scudo compatibile con Arduino con connettori a quattro (4) pin. Questi connettori alimentano le porte IO che collegano i cavi inclusi che si fissano facilmente ai sensori e ai controlli nel kit. Ciò significa che potete realizzare progetti senza la necessità di perdervi con piccoli fili e resistori pull up/pull down, o preoccuparvi della polarità.
Per saperne di più o acquistare il kit fare clic qui: http://www.seeedstudio.com/depot/Grove-starter-kit-plus-Intel-IoT-Edition-for-Intel-Galileo-Gen-2-p-1978.html
Il creatore del kit Grove, Seeed Studios, fornisce diverse risorse utili online.
Nello specifico, consiglio di clonare o scaricare la repository Sketchbook Starter qui: http://Github.com/Seeed-Studio/Sketchbook_Starter_Kit_V2.0
E inserire tra i preferiti la pagina Grove Wiki qui: http://www.seeedstudio.com/wiki/index.php?title=Main_Page#Grove
Figura 2. Grove Starter Kit Plus – Intel® IoT Edition per Intel® Galileo Gen 2 Developer Kit
Grove BLE V1
Useremo il modulo v1 Grove Bluetooth Low Energy, che non è incluso nello starter kit, ma è compatibile con i pin dello scudo Grove e i cavi connettori. Si tratta inoltre di un'applicazione aggiuntiva BLE relativamente poco cara, e al termine della stesura dell'articolo era l'opzione più economica che ho trovato.
Grove BLE v1 si basa sullo standard del settore CC2540 di Texas Instruments. Diversi dispositivi impiegano questo chip. Se avete un altro modulo BLE CC2540 TI, come RedBear BLE Mini, dovreste poter adattare il codice d'esempio senza grandi problemi.
Per saperne di più su Grove BLE v1 qui: http://www.seeedstudio.com/wiki/index.php?title=Grove_BLE_v1&uselang=en
Va tenuto presente che Intel® Edison non include un modulo wireless sulla scheda che supporti Wi-Fi e Bluetooth 4.0/BLE; tuttavia, il modulo Grove BLE andrà a semplificare la configurazione hardware e software. Usare Grove BLE (Figura 3) significa anche che questi progetti possono essere adattati facilmente a Intel Edison.
Figura 3. Modulo Grove BLE V1
Debug su dispositivi Android
Il supporto per BLE è stato aggiunto ad Android nella versione 4.3 (API livello 18). Occorre un dispositivo con la versione 4.3 o superiore per comunicare tramite BLE.
Per saperne di più su BLE Android qui: https://developer.android.com/guide/topics/connectivity/bluetooth-le.html
Se non siete esperti di sviluppo su Android, occorre abilitare le opzioni sviluppatore sul telefono o sul tablet prima di potere utilizzarlo per eseguire il debug del software. Aprite l'app di impostazione, scorrere in basso, selezionate “Info sul dispositivo” e fate clic sul numero della build sette (7) volte per sbloccare le opzioni sviluppatore.
Le opzioni sviluppatore saranno visualizzate sotto le impostazioni; accertatevi di selezionare “Debug USB”.
Per saperne di più sulle opzioni sviluppatore Android qui: http://developer.android.com/tools/device.html
Installazione del software e preparazione alla codifica!
Arduino IDE per Intel® Galileo
Occorre scaricare la versione appositamente preparata per IDE Arduino per implementare gli sketch in Intel Edison o Galileo. Al momento della stesura dell'articolo la versione attuale è 1.5.3 ed è disponibile qui:
https://software.intel.com/it-it/get-started-arduino-install
Driver Intel® Edison
Occorre inoltre scaricare e installare i driver Intel Edison dal link indicato qui sopra. Dovrebbe essere l'ultimo link nella pagina elencato sotto “Driver Software”. Al momento della stesura la versione è 1.0.0.
Esiste inoltre un'eccellente Guida introduttiva se servono ulteriori istruzioni:
software.intel.com/iot/getting-started
Android Studio
Android Studio è il nuovo IDE Java* per lo sviluppo su Android basato su IntelliJ IDEA* (https://www.jetbrains.com/idea/). Al momento è in beta, ma è stabile e abbastanza completo nelle sue funzionalità. Se vi trovate bene a usare Eclipse* per lo sviluppo Java Android o IntelliJ IDEA, non dovreste avere problemi a seguire la guida passo passo con entrambi.
Android Studio semplifica il processo di installazione includendo l'SDK Android. È sufficiente scaricare, estrarre il contenuto del file zip ed eseguire studio.exe nella cartella bin.
Per saperne di più su Android Studio qui: https://developer.android.com/sdk/installing/studio.html
Android SDK
Potreste dover scaricare dei pacchetti SDK aggiuntivi. In questo caso, fate clic su “SDK Manager” sulla barra degli strumenti in Android Studio. La configurazione degli SDK Android non rientra nei nostri scopi, ma potete ottenere informazioni aggiuntive qui:
https://developer.android.com/sdk/installing/adding-packages.html
Se avete precedentemente installato gli SDK Android, potete configurare Android Studio e indirizzarlo sul percorso corretto, come mostrato in Figura 4
In Android Studio, fare clic su Configure -> Project Defaults -> Project Structure e impostare il percorso.
Figure 4. Setting the SDK path in Android* Studio
Test di Intel® Edison
Prima di iniziare la spiegazione di seguito, accertatevi di poter eseguire lo sketch di esempio Blink. È incluso nel pacchetto di download di Arduino IDE nella cartella examples -> 01.Basics -> Blink.
Per maggiori informazioni fare riferimento alla guida introduttiva di Edison:
https://communities.intel.com/community/makers/edison/getting-started
Android Hello World
Una volta installato Android Studio, accertatevi di poter creare un nuovo progetto ed eseguirlo sul vostro dispositivo Android.
- Collegate il dispositivo Android al PC
- Aprite Android Studio
- Selezionate “New Project…”
- Selezionate un nome e un percorso e fate clic su “Avanti” 3 volte (API 15/Blank Activity)
- Fate clic su Fine e attendete la creazione del progetto (possono volerci più di 20 secondi)
- Premere l'icona Play verde sulla barra degli strumenti
- Selezionate il vostro dispositivo e premere “OK”
Se tutto è stato eseguito correttamente, dovreste vedere “Hello world!” sullo schermo del vostro Android (Figura 5).
Figura 5. App Android* Studio Hello World
Come funziona BLE?
BLE funziona fornendo piccoli pacchetti di dati quando necessario e spegnendosi successivamente. Questo è in parte uno dei motivi per cui Bluetooth LE usa così poca energia. Invece del tradizionale approccio di abbinamento di un normale Bluetooth, i dispositivi BLE si collegano soltanto quando occorre inviare o ricevere informazioni.
BLE è fortemente strutturato nel modo di comunicare. I dispositivi espongono i servizi per inviare e ricevere i dati, e questi servizi sono dotati di quello che viene chiamato Characteristics che definisce quali dati possono essere condivisi. Per ulteriori dettagli, Characteristics può avere descrittori che consentono di definire i dati. Ad esempio, in caso di un servizio chiamato “Heart Rate Monitor” che comprende caratteristiche quali la “misurazione del battito cardiaco”.
La maggior parte delle API Bluetooth LE consentono la ricerca di dispositivi locali e il ritrovamento di servizi, caratteristiche e descrittori su questi dispositivi.
Termini e concetti di BLE Key
Qui abbiamo un breve riassunto dei termini e dei concetti della BLE key che occorre comprendere prima di iniziare un progetto BLE:
Generic Attribute Profile (GATT)
Il profilo GATT è una specifica generale per l'invio e la ricezione di piccole parti di dati note come “attributi” su link Bluetooth a bassa consumo. Tutti i profili applicativi LE attuali si basano su GATT. Il Bluetooth Special Interest Group (SIG) (https://www.bluetooth.org) ha definito preventivamente una serie di profili per i dispositivi BLE. Questi profili sono specifiche che descrivono come può essere utilizzato un dispositivo.
Attribute Protocol (ATT)
Attribute Protocol (ATT) è dove GATT è realizzato. ATT è un protocollo ottimizzato progettato specificatamente per dispositivi BLE. La comunicazione ATT invia il minor numero di byte di dati possibile. Ciascun attributo è dotato di un identificatore unico universale (UUID), che è una stringa ID a 128 bit standardizzata impiegata per identificare univocamente un'informazione. Gli attributi trasportati da ATT sono formattati come caratteristiche e servizi (definiti qui sotto).
Charactteristiche
Una caratteristiche contiene un singolo valore e 0 o più descrittori (sotto) per descrivere il valore della caratteristica.
Descrittore
I descrittori sono attributi definiti che descrivono un valore di una caratteristica. Può trattarsi di descrizioni leggibili all'uomo, unità o misure specifiche, o definire un intervallo di valori accettabile.
Servisio
I servizi sono raccolte di caratteristiche. Potete trovare un elenco dei profili basati su GATT esistenti qui: https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
Invio di dati da Android a Intel® Edison
Prerequisiti
Il resto di questo documento presume che abbiate un sistema di sviluppo impostato e configurato sia per lo sviluppo su Intel Edison che Android. Accertatevi di aver completato i seguenti passaggi e riguardare quanto detto in precedenza se necessario.
- Installare IDE Intel Arduino
- Installare i driver Intel Edison
- Installare Android Studio
- Installare Android SDK
- Implementare ed eseguire la demo di Blink su Intel Edison
- Implementare ed eseguire il progetto Android vuoto di Hello world
BLE su Android
Potete scaricare il progetto completo da GitHub qui:
https://github.com/adrianstevens/Edison_to_Android_BLE/tree/master/Android/BLEConnect
Tuttavia consiglio di creare il vostro progetto personale e riportare il codice stringa per stringa facendo riferimento al link di cui sopra.
Creazione di un nuovo progetto
Aprite Android Studio (o il vostro IDE a scelta), create una nuova applicazione Android vuota e denominatela BLEConnect. Accertatevi di impostare il Minimum SDK almeno su API 18. In caso contrario non potrete utilizzare le API BLE.
Figura 6. Creazione di una nuova applicazione Android
Successivamente aggiungere i permessi necessari aprendo AndroidManifest.xml, e aggiungendo quanto segue sopra la tag <application>
:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
Impostare l'interfaccia grafica
Cominciamo assemblando l'hardware di base. Se non lo avete già fatto, montate Intel Edison sulla scheda di breakout Arduino.
In seguito, montate lo scudo Grove allineando i pin sulla parte inferiore dello scudo con la scheda di breakout Arduino. Successivamente connettete Grove BLE v1 alla porta seriale UART.
Figura 7. Impostare l'id risorsa per TextView
MainActivity
Per questo progetto, il resto del codice va in MainActivity. Se si aggiunge il codice stringa per stringa, vedrete che Android Studio rileva automaticamente le importazioni non realizzate e vi indica di aggiungerle.
Il codice di esempio effettua quanto segue:
- Verifica che BLE sia supportato sul dispositivo Android
- Ricerca i dispositivi BLE nelle vicinanze
- Identifica e si collega al modulo BLE Grove
- Ricerca i servizi disponibili per i servizi di comunicazione noti
- Trova la caratteristica di trasmissione sul servizio di comunicazione
- Invia un messaggio scrivendo un valore sulla caratteristica
Non starò a spiegare ogni stringa del codice qui, ma daremo uno sguardo ai concetti fondamentali.
Variabili di classe e valori statici
Archivieremo una serie di valori e ci collegheremo al modulo BLE, ricercheremo servizi e invieremo il nostro messaggio. Aggiungeremo poi alcuni valori statici noti per Grove BLE v1 (TI CC2540). Potreste dover modificarli se utilizzate un modulo diverso. Nello specifico, consiglio di definire le caratteristiche di trasmissione e ricezione, ad esempio:
CHARACTERISTIC_TX = "0000ffe1-0000-1000-8000-00805f9b34fb"
CHARACTERISTIC_RX = "0000ffe1-0000-1000-8000-00805f9b34fb"
Stato del metodo helper
Per semplicità, mostriamo il nostro svolgimento sul TextView denominato in precedenza. Il codice include un semplice metodo helper chiamato statusUpdate
che utilizziamo per scrivere messaggi di stato allo schermo e alla console. Inoltre riporta al thread dell'interfaccia grafica in modo da poter richiamarla senza problemi da qualsiasi thread.
Collegare a un dispositivo BLE
Per ottenere un riferimento a Bluetooth Manager innanzitutto verifichiamo che BLE sia disponibile sul nostro dispositivo, chiamiamo getSystemService
per ottenere un riferimento a Bluetooth Manager (BluetoothManager
), e poi chiamiamo il metodo getAdapter()
per ottenere il nostro riferimento all'oggetto BluetoothAdapter
. In alternativa, potete usare il metodo helper statico getDefaultAdapter
direttamente dalla classe Bluetooth Manager.
Cercate dispositivi BLE nelle vicinanze
Per cercare i dispositivi, usiamo un timer per cercare entro un periodo di tempo impostato. Chiamiamo startLeScan
sul nostro oggetto Bluetooth Manager e passiamo a un oggetto callback per venire notificati quando vengono trovati dei dispositivi.
L'API ricerca in continuazione i dispositivi e come risultato, dovremmo ottenere diverse notifiche in LeScanCallback
per ogni dispositivo, in modo da verificare che la voce del dispositivo sia univoca prima di salvarla. Controlliamo inoltre i nomi del dispositivo per il nostro modulo e salviamolo come riferimento. Ad esempio non ci interessa davvero salvare i dispositivi nell'elenco.
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord)
{…
}
Trovate il servizio di comunicazione
La maggior parte dei dispositivi BLE espone uno o più servizi per la comunicazione/interazione. Il chip TI CC2540 nel nostro BLE Grove è dotato di una chiave di servizio con ID “0000ffe0-0000-1000-8000-00805f9b34fb”. Successivamente troviamo e salviamo un riferimento su quel servizio.
Per prima cosa occorre collegarsi al dispositivo. Per ricevere le notifiche quando si è connessi o quando vengono trovati dei servizi, ci occorre un oggetto BluetoothGattCallback
ed eseguiamo l'override di onConnectionStateChanged
e onServicesDiscovered
.
Tenete presente che nel metodo onConnectionStateChanged
, quando viene notificata una connessione chiamiamo mBluetoothGatt.discoverServices()
per ricercare i dispositivi. Una volta che abbiamo identificato il servizio che vogliamo, possiamo procedere e inviare un messaggio.
@Override public void onConnectionStateChange (BluetoothGatt gatt, int status, int newState) { … }
@Override public void onServicesDiscovered (BluetoothGatt gatt, int status) { … }
È possibile eseguire l'override di una serie di altri metodi. Vedere la documentazione qui:
https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback.html
Invio di un messaggio
Nel codice di esempio è presente un metodo sendMessage
. Identifichiamo la caratteristica desiderata dal suo UDID e chiamiamo setValue
sulla caratteristica. Infine, chiamiamo writeCharacteristic
sul nostro riferimento BluetoothGatt, passando la caratteristica come valore per l'invio dei dati.
Sono presenti diversi overload di setValue
ed esiste a dire il vero un overload più semplice per inviare stringhe, ma dato che molte comunicazioni BLE inviano comandi come byte, si tratta di un esempio più utile.
E ora vediamo come impostare Intel Edison.
Impostazione di Intel® Edison con la scheda di breakout Grove e il modulo BLE
Start by assembling the basic hardware. If you haven’t already, mount the Intel Edison to the Arduino breakout board.
Next, mount the Grove shield by aligning the pins on the bottom of the shield to the Arduino breakout board. Then connect the Grove BLE v1 to the serial UART port.
Figura 8. Intel® Edison sullo scudo Grove e il modulo BLE collegato
Il nostro primo sketch
Andremo ad eseguire alcune semplici comunicazioni seriali tra il nostro dispositivo Android e Intel Edison. Ma vogliamo anche vedere che cosa viene inviato e ricevuto e quindi useremo il monitor serial integrato di Arduino IDE.
Potete vedere una versione completa dello sketch qui:
https://github.com/adrianstevens/Edison_to_Android_BLE/tree/master/Sketches/SimpleSerial
Aprite l'IDE di Intel Arduino e create uno sketch nuovo. Salviamolo e denominiamolo “SimpleSerial”. Diversamente da altre schede compatibili con Arduino, Intel Edison è dotato di due porte seriale che possiamo utilizzare. Ciò è particolarmente utile perché ci consente di comunicare dal nostro PC a Edison mentre Edison invia e riceve i dati tramite Grove BLE. L'UART seriale primario è accessibile tramite la microUSB connessa al vostro PC, e possiamo utilizzare il connettore UART sullo scudo Grove che è collegato al modulo BLE.
Il nostro sketch viene eseguito automaticamente una volta che è implementato su Intel Edison. Prima esegue la funzione setup()
, e quindi chiama consecutivamente la funzione loop()
indefinitivamente. Ciò consente di leggere e rispondere agli input in entrata dai collegamenti seriali.
Inizializzazione dei collegamenti seriali
La velocità di comunicazione predefinita di Grove BLE è di 9600 baud, quindi iniziamo da questo. Ci occorre configurare entrambe le porte seriali per usare questa velocità. Dobbiamo inoltre inviare un paio di comandi AT a Grove BLE per ripristinarlo alle impostazioni predefinite. Potete vedere tutto ciò nella funzione setup()
dello sketch.
Tenete presente che stiamo prima configurando “Serial”, che è la porta microUSB UART, e successivamente “Serial1”, che è l'UART connesso a Grove BLE.
Il loop
Tutto ciò che eseguiamo in questo sketch è leggere dati dalla porta seriale e inviarli all'altra. Per far ciò, chiamiamo la funzione lettura()
sulle porte seriali, che ci dà un carattere singolo e quindi stampa()
sull'altra porta seriale.
Edison esegue il loop abbastanza rapidamente da non avere problemi a stare dietro ai 9600 baud.
Implementazione dello sketch
Fate clic sul pulsante di verifica sull'IDE di Arduino (la spunta) e sistemate eventuali errori. Una volta verificato, accertatevi che Intel Edison sia collegato al PC e caricate lo sketch (freccia destra). Una volta completato il trasferimento, lo sketch avvia il loop e siamo pronti a collegarci dall'app Android. Ora apriamo il Serial Monitor sull'IDE Arduino (la lente d'ingrandimento in alto a destra) in modo da poter inviare e ricevere dati.
Una volta che lo sketch è in esecuzione su Intel Edison, eseguire l'app Android BLEConnect. Dovreste vedere il messaggio “Hello Grove BLE” comparire nel monitor seriale.
Se non funziona, potrebbe trattarsi di un problema con l'app Android. Verificare il display di stato che dovrebbe indicare dove si trova il problema.
C'è anche uno sketch nella repo GiftHub che visualizza il messaggio sul LCD Grove. Accertatevi che il vostro scudo Grove sia impostato a 5V e collegate il display LCD a uno dei collegamenti I2C.
Figura 9. BLEConnect in esecuzione su un telefono Android
Figura 10. Arduino IDE Serial Monitor riceve il messaggio BLEConnect
Continuazione
La creazione di un progetto più complesso significa impiegare dell'architettura sia nel codice Android che nello sketch. Consiglierei di spostare la maggior parte del codice BLE Android in un servizio per astrarlo dall'interfaccia grafica e renderlo semplice da usare su più attività e progetti. Quando si creano sketch più avanzati, vorrete usare Arduino Time Library, che consente di simulare l'esecuzione di più loop durante la ricezione di dati (http://playground.arduino.cc/Code/Time). Aggiungerò esempi alla repository GitHub (https://github.com/adrianstevens/Edison_to_Android_BLE), e ne discuterò in un articolo futuro.
Informazioni sull’autore
Adrian Stevens ha oltre 14 anni di esperienza nello sviluppo di applicazioni mobili, specializzato in sviuppo multipiattaforma di C# e C++. La conoscenza di Adrian comprende architettura dell'interfaccia utente, elaborazione audio e di segnale, sensori e matematica. Con base a Vancouver, in Canada, Adrian è appassionato di tecnologia e un grande spirito imprenditoriale. Collabora all'esecuzione dello sviluppo di una multipiattaforma C# su Meetup.
Adrian ha prima cominciato con lo sviluppo di applicazioni mobili nel 2001 per piattaforme come Palm Pilot e Pocket PC. È riuscito a fondare e condurre uno studio di sviluppo per dispositivi mobili. Adrian è attualmente istruttore di applicazioni mobili e multipiattaforma e insegna strategie per architettura e sviluppo.