C-All è un’idea di startup nata durante il contest StatupBus 2014

StartupBus 2014: C-All
C-All è un progetto di estrema semplicità che porta un piccolo hardware per la sicurezza personale all’interno di un accessorio di lusso e design

artcolo su WebNews: http://www.webnews.it/2014/10/28/startupbus-2014-c-all

Mi sono occupato dell’analisi di fattibilità tecnica e della realizzazione del sistema prototipo, per dare la possibilità al team di effettuare delle demo a potenziali investitori.

Il sistema in breve (punto di vista tecnico, non mi sono occupato di desing, bussiness development ecc…):

  • Wearable device (Smart Button) che consente all’utente l’invio di un allarme al verificarsi di eventi di pericolo
  • App per smartphone connessa al device, riceve l’allarme e lo comunica ad alcuni contatti prestabiliti ed inizia la comunicazione con un server remoto per l’aggiornamento della posizione (visibile ai contatti)
  • WebApp per la visualizzazione in tempo reale della posizione dell’utente, dal momento dell’allarme.

Per ovvie ragioni mi sono concentrato sulla prototipazione del dispositivo da indossare, core-business della startup. Ad ogni modo, per completezza ho realizzato:

Screenshot_2015-04-09-10-39-51Un’app Android che permetta di inserire il numero di telefono da allertare e simulare l’invio di un allarme senza device (per testare il sistema). L’app memorizza in automatico l’inserimento/modifica del campo relativo al numero di telefono.
Alla ricezione di un allarme dal device(maggiori info in seguito) o alla pressione del tasto Richiedi Aiuto l’app invia una richiesta ad una Web API inviando l’ultima posizione nota e ricevendo un id univoco. Tale id viene poi inserito in un URL ed inviato via SMS al numero di telefono memorizzato.

c-allPer la parte web ho utilizzato Slim Framework che mi ha permesso di creare velocemente una mini-API per la comunicazione con l’app. L’URL generato dall’app, ed inviato via SMS, sarà della forma <dominio breve>/<id allarme>
A tale URL sarà visualizzata una pagina HTML+CSS+JS (Boostrap come CSS framework e Google Maps API per la mappa) che visualizzerà la posizione inviata dall’app.
Tutti gli allarmi, con relativa posizione, sono salvati in un database MySQL.

SMS di Esempio

Richiesta di aiuto http://mikinacucchi.it/call/c858b92

 
Wearable Device

Per la scelta di quali componenti hardware utilizzare ho considerato prioritari i seguenti aspetti:
Trovare un modulo già pronto all’uso(compresa la parte di power managment). Prediligere soluzioni facilmente reingegnerizzabili in una eventuale evoluzione del prototipo in prodotto. Chiaramente Low Power. Compatibilità differenti smartphone ecc..

Il risultato di questa ricerca è stato utilizzare dispositivi BLE(Bluetooth Low Energy) per consumi e compatibilità, non a caso è il trend predominante in questo settore.
Come piattaforma da utilizzare nel prototipo, la scelta è ricaduta su un kit di sviluppo della Nordic Semiconductor per creare iBeaconnRF51822 Bluetooth Smart Beacon Kit

nordic_beacon_promo_image

Il dispositivo viene venduto con a bordo già preinstallato il software necessario per farlo funzionare nella modalità iBeacon. Quindi, una volta alimentato con una comune pila a bottone, il dispositivo entra nella modalità advertising del BLE e trasmette ad intervalli periodici il proprio UUID di default. E’ possibile rilevare questo iBeacon tramite l’app nRF Beacon messa a disposizione dalla stessa Nordic per le Android e iOS.

Il dispositivo presenta anche due pulsanti e pertanto si presta bene per questo progetto. Ho quindi realizzato il software che, a differenza di quanto descritto, avvia la modalità iBeacon solo dopo la pressione del tasto e non all’avvio.

Ho sviluppato e testato il software tramite il Dongle USB per sviluppare soluzioni BLE della Nordic: nRF51 Dongle
Come IDE per lo sviluppo e il debug: Microcontroller Development Kit Version 5 (Keil) della ARM
Il Dongle non ha alcun software caricato di default, essendo una piattaforma di sviluppo di prodotti BLE full stack(non solo iBeacon)

Nota: sia il Dongle che il beacon montano lo stesso chip BLE della Nordic (nRF8122), la differenza è solo nel software a bordo. Ho utilizzato il Dongle per lo sviluppo e il debug, perchè integra anche il chip SEGGER (programmatore/debugger) che per il beacon bisognerebbe connettere esternamente.

Firmware
Ho caricato sul Dongle il bootloader e il BLE peripheral stack (S110) che è il sub-strato software messo a disposizione da Nordic che permette di creare applicazioni, che saranno installate in una determinata area di memoria del micro, senza doversi preoccupare di gestire le funzionalità a basso livello già implementate.
Partendo dai sorgenti dell’applicazione presente sul beacon, ho effettuato le modifiche per farlo funzionare come descritto in seguito.
Sorgente trovato nella direcory Nordic Semiconductor\nRF51822 Beacon v1.0.1\Source Code\Nordic\nrf51822\Board\nrf51_beacon\pca20006\ble_app_beacon_bcs\arm tra le risorse per lo sviluppo installate

L’iBeacon Kit prevede una modalità di caricamento software(parte applicazione) mediante app da smartphone(OTA-DFU over Bluetooth)

To put the device in DFU mode, press the SW1 button on the beacon module. The beacon module will now start to advertise and be connectable. The module indicates it’s in DFU mode when the LED is green. When in DFU mode the firmware in the application space of the device can be updated.

 
Per ridurre i tempi di sviluppo ho dunque pensato di utilizzare l’altro tasto(SW2) come on/off della modalità advertising e impostare l’app Android per la ricerca di iBeacon con UUID da me scelto.
 
Pertanto quando l’app rileva l’iBeacon kit, vorra dire che sarà stato premuto il tasto di allerta, quindi effettuerà una HTTP GET con l’ultima posizione rilevata e invierà l’SMS con l’URL per visionarla
 
Infine ho caricato sull’iBeacon kit l’applicazione creata e testata sul Dongle via bluetooth(tramite l’app Android di Nordic come descritto precedentemente).

P.s. in bocca al lupo a Saverio Olivieri e al suo team per l’evolversi del progetto.  😉