bluetooth low energy & lumia sensor core per windows phone 8.1
TRANSCRIPT
Bluetooth Low Energy &
Lumia Sensor Core
per Windows Phone 8.1
Massimo BonanniMicrosoft MVP, Intel Software Innovator
@massimobonanni
codetailor.blogspot.com
• Bluetooth Low Energy
• Cos'è Bluetooth Low Energy
• Bluetooth vs Bluetooth LE
• Architettura
• BLE & Windows Phone 8.1 (Windows 8.1)
• BLE & Background task
• Lumia SensorCore
• Cos'è Lumia SensorCore
• Lumia SensorCore API
Agenda
• 2001 Nokia inizia lavorare su una nuova tecnologia wireless
• 2004 risultati pubblicati con il nome Bluetooth Low End Extension
• 2006 rilasciato pubblicamente come Wibree
• 2007 accordo per includere Wibree dentro Bluetooth come Ultra low power technology
• 2010 integrato come Bluetooth Smart dentro Core Specifications 4.0
• 2011 viene rilasciato iPhone 4S con supporto per BLE
• 2012 escono i primi dispositivi
• 2013 Windows 8.1 aggiunge supporto parziale per BLE
• 2014 Windows Phone 8.1 aggiunge supporto per BLE
Cos'è Bluetooth Low Energy - Storia
• Connectionless
• Dimensioni ridotte
• Low power (~30μA più di 300 giorni con una batteria)
• Low cost
• Collegamenti veloci 10 ms, latenza bassa 3-6 msec
• Raggio 10-30 metri
• Adaptive Frequency Hopping (AFH), resistente alle interferenze
• Proximity detection - Geofencing
• IoT, fitness, retail,…..
• iBeacons (no WP 8.1 )
Caratteristiche di Bluetooth LE
Classic vs Smart
Technical Specification Classic Bluetooth Bluetooth Smart
Distance/Range (theoretical max.) 100 m (330 ft) <100 m (<330 ft)
Over the air data rate 1–3 Mbit/s 1 Mbit/s
Application throughput 0.7–2.1 Mbit/s 0.27 Mbit/s
Active slaves 7Not defined; implementation
dependent
Security56/128-bit and application layer
user defined
128-bit AES with Counter Mode CBC-MAC and application layer user
defined
RobustnessAdaptive fast frequency hopping,
FEC, fast ACK
Adaptive frequency hopping, Lazy Acknowledgement, 24-bit CRC, 32-
bit Message Integrity Check
Latency (from a non-connected state) Typically 100 ms 6 ms
Total time to send data (det.battery life) 100 ms 3 ms
Attualmente BLE è supportato dalle seguentipiattaforme:
• iOS5+ (meglio iOS7 e successivi)
• Android 4.3+ (meglio 4.4 e successivi)
• Apple OS X 10.6 e successivi
• Windows 8 (XP, Vista e 7 supportano Bluetooth 2.1)
• Windows (Phone) 8.1
• GNU/Linux Vanilla BlueZ 4.93 o successivi
Supporto a BLE
• HTP - for medical temperature measurement devices.
• GLP - for blood glucose monitors.
• BLP - for blood pressure measurement.
• HRP - for devices which measure heart rate.
• CSCP - for sensors attached to a bicycle or exercise bike to measure cadence and wheel speed.
• RSCP - running speed and cadence profile.
• CPP - cycling power profile.
• LNP - location and navigation profile.
• FMP - the "find me" profile — allows one device to issue an alert on a second misplaced device
• PXP - the proximity profile — allows a proximity monitor to detect whether a proximity reporter is within a close range.
Dispositivi
Architettura
GATT Profiles
Genetic Attribute Profiles standard
https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx
• Client : Un dispositivo che invia comandi e richieste e accetta risposte. Ad esempio un PC o uno smartphone.
• Server : Un device che riceve comandi GATT e richieste e restituisce risposte. Per esempio un sensore di temperatura.
• Characteristic : Un dato trasmesso tra client e e server. Ad esempio il valore della temperature della stanza.
• Service : Una collezione di Characteristic tra loro correlate a fornire unaparticolare funzionalita’. Ad esempio un termomento potrebbe offrire la caratteristica della temperatura e quelle dell’interavllo di tempo di campionamento.
• Descriptor : Un descriptor fornisce informazioni addizionali sulla caratteristica(una sorta di matadato). Ad esempio la caratteristica temperature potrebbeavere come descrittori l’unita’ di misura ed il range di misurazione. I descriptor sono opzionali e ogni caratteristica puo’ avere un numero qualsiasi di descriptor.
GATT - Nomenclatura
GATT – Servizi e caratteristiche
Profile
Service
Characteristic
Characteristic
Characteristic
Value
Descriptor Descriptor
1. Modifica del manifest Package.appxmanifest
Bluetooth LE & WP 8.1
http://msdn.microsoft.com/it-it/library/windows/apps/br211430.aspx
2. Recupero dell’handle per il device bluetooth
LE
Bluetooth LE & WP 8.1
http://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.bluetoothledevice.aspx
3. Recupero del servizio
Bluetooth LE & WP 8.1
http://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.genericattributeprofile.gattdeviceservice.aspx
4. Recupero della/e caratteristiche
Bluetooth LE & WP 8.1
http://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.genericattributeprofile.gattcharacteristic.aspx
Possiamo sfruttare i background task di Windows Phone 8.1 per ricevere i dati notificati quando la nostra applicazione non è in foreground
1. Creare un progetto Windows Phone Runtime component e implementare IBackgroundTask
Background task
3. Verificare che la nostra applicazione abbia i
privilegi per l’accesso ai background task
Background task
SensorCore e’ un marchio registrato Qualcomm.
Si tratta di un “chip” in grado di integrare datiprovenienti da differenti sensori e processarliottimizzando il consumo di batteria.
Lumia SensorCore e’ la tecnologia sviluppata da Nokia (ora Microsoft) in collaborazione con Qualcomm per interagire con il SensorCore di Qualcomm su dispositivi Windows Phone.
Lumia SensorCore
Lumia SensorCore SDK e’ una collezione di API in grado di recuperare i dati provenientida SensorCore.
• Usato per tenere traccia delle attività fisica e movimento
• I sensori girano in background e raccolgono dati per un massimo di 10 giorni
• Sempre attivi ma in Low Power Mode
• Potrebbe fornire accesso a dati PRIVATI quindi può essere disabilitata e lo storico può essere cancellato
Lumia SensorCore SDK
• Dll disponibile da NuGet
• Architettura ARM o x86
• Microsoft Visual C++ 2013 Runtime Package for
Windows Phone
• Testing Tools opzionale
Lumia SensorCore SDK
• Quanti passi e per quanto tempo
• Caminata o corsa – usa anche l’intensità del movimento non solo la velocità
• Granularità 5 minuti – storico 10 giorni
• 5-6 secondi fino quando inizia vedere gli eventi
• Ci possono essere falsi positivi
Step Counter API
• Cambiamenti nell’attività del utente: fermo, cammina, corre…
• Delay tipico 5-10 sec per eliminare alcuni falsi positivi
• Risultati migliori dentro la borsa o in tasca
• Bisogna abilitare l’API
• API con risultati real-time e storico 10 giorni
Activity Monitor
• Lista di geo-coordinate• Usa principalmente celle del operatore e/o hotspot WiFi. GPS
solo se un’altra applicazione lo usa• Non fornisce dati in tempo reale• Prova indovinare l’indirizzi di casa e lavoro• Classificazione può durare 2-3 giorni• Area raggio almeno 200 metri, distanze minimo 500 m, tempo di
permanenza almeno 10 minuti
Place Monitor
• Simile a Place Monitor ma traccia i percorsi fatti
• API offline come Place Monitor
• Track point ogni 5 minuti e un minimo di 500 metri
• Accuratezza dipende da numero di celle o hotspot. Una corsa in un parco senza una sessione GPS attiva potrebbe registrare un solo trackpoint
TrackPoint Monitor
Bluetooth LE• http://msdn.microsoft.com/en-us/library/windows/hardware/jj159880(v=vs.85).aspx
Texas Instrument BLE Sensor Tag• http://www.ti.com/ww/en/wireless_connectivity/sensortag/index.shtml?INTC=Senso
rTag&HQS=sensortag-bt
• https://sensortag.codeplex.com/
Lumia SensorCore• http://developer.nokia.com/lumia/nokia-apis/sensorcore
• http://developer.nokia.com/resources/library/sensorcore-api-ref/index.html
Riferimenti