Xamarin Robotics

38
XAM01 – Xamarin Robotics Fabio Cozzolino [email protected] @fabiocozzolino Pasquale Fersini [email protected]

Transcript of Xamarin Robotics

Page 1: Xamarin Robotics

XAM01 – Xamarin RoboticsFabio [email protected]@fabiocozzolino

Pasquale [email protected]

Page 3: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Chi siamo

• Fabio Cozzolino• Chief Software Architect presso CompuGroup Medical Italia• Microsoft MVP • Presidente di DotNetSide

• Pasquale Fersini• Developer presso CompuGroup Medical Italia

Page 4: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Agenda

• Introduzione alla Xamarin Platform• Monkey Robotics• Robotics Mobile Stack• Robotics Micro Stack

Page 5: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Xamarin Platform

Page 6: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cos’è Xamarin?

• Un framework per lo sviluppo cross-platform su iOS e Android basato su C#• Binding alle API native della piattaforma• Sempre aggiornato• Il nuovo SDK viene rilasciato entro le 24 ore successive

• Sviluppo su Mac e Windows• Xamarin Studio• Visual Studio con Xamarin Plugin

Page 7: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Xamarin Approach

Shared App Logic

Native UIC#

Native UIC#

Shared C# App Logic Shared C# App Logic

Shared App Logic

Shared UI

Code

Android UI Code

Windows

UI Codein C#

Shared App Logic

Shared App Logic

iOS

UI

AndroidUI

WindowsUI Shared UI Code

iOS UI Android UI

Windows UI

Shared App Logic

Shared App Logic

Native UIC#

Native UIC#

Native UIC#

Shared C# App Logic Shared C# App Logic

Shared App Logic

Shared UI

Code

Android UI Code

Windows

UI Codein C#

Shared App Logic

Shared App Logic

iOS

UI

AndroidUI

WindowsUI Shared UI Code

Model

View and ViewModel(UI and controller)

Traditional (80% code reuse)

MVVM con Xamarin.Forms(99,9% code reuse)

Page 8: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cos’è Xamarin.Forms?

• UI condivisa• 40+ Pages, Layouts, Controls

• Compilazione nativa• Programmazione (anche) dichiarativa con XAML (standard 2009)• Two-way Data binding• Commands• Converters

Page 9: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Xamarin, sensori e l’IoT

• Accesso ai devices• Bluetooth 4.0 LE? WiFi? NFC?

• Ogni sistema operativo gestisce in maniera differente• Es. NFC su iOS è limitato, su Windows Phone è invece accessibile• BLE 4.0 LE è supportato su tutte e tre le principali piattaforme (ma non su tutti

i dispositivi)

• Bluetooth 4.0 Low Energy come protocollo “standard” per la condivisione di informazioni tra devices

Page 10: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Bluetooth 4.0 LE (aka BLE)

• Tecnologia nata per supportare applicazioni legate alle attività quotidiane:• healthcare, fitness, beacons, security e home entertainment• Riduzione dei consumi a parità di efficienza• Stessa potenza e range di comunicazione

• Le specifiche definiscono un’implementazione hardware e software• Nessuna compatibilità con il modello classico (Bluetooth Classic)

Page 11: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

How the Bluetooth works: protocol stack

Page 12: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

How the Bluetooth works: GATT protocol

• Client un device che avvia richieste GATT e accetta risposte

• Server un device che riceve comandi e richieste GATT e ritorna risposte

• Characteristic un dato/valore trasferito tra client e server

• Service una collezione di caratteristiche correlate che operano insieme per eseguire una particolare funzionalità

• Descriptor fornisce informazioni addizionali sulle caratteristiche

Page 13: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Identifiers

• I servizi e le caratteristiche vengono identificati con degli UUID• Esiste un range riservato di UUID• https://www.bluetooth.org/en-us/specification/assigned-numbers• xxxxxxxx-0000-1000-8000-00805F9B34FB

• E’ possibile definire i propri UUID

Page 14: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Servizi e caratteristiche

"00001810-0000-1000-8000-00805f9b34fb":"Blood Pressure"

"00002a49-0000-1000-8000-00805f9b34fb":"Blood Pressure Feature", "00002a35-0000-1000-8000-00805f9b34fb":"Blood Pressure Measurement",

serv

izio

cara

tter

istich

e

Page 15: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Monkey.Roboticsa.k.a. Xamarin Robotics

Page 16: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Cos’è Monkey.Robotics

• Una libreria open source per la comunicazione con i dispositivi basati sul .NET Micro Framework• Progetto di Xamarin Labs

• Formato da due stack: • Mobile Stack: Supporto per iOS e Android• Microcontroller Stack: .NET Microframework on Netduino (o schede compatibili)• Plug-in per Xamarin Studio

• Utilizzabile anche per la comunicazione con piattaforme non-.NET MF come Arduino• Astrazione del protocollo GATT

Page 17: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Monkey.Robotics Overview

Page 18: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Mobile Stack

• Low-level Bluetooth LE (BLE) API• Cross-platform API (iOS e Android al momento) per la comunicazione con device

BLE

• Low-level WiFI API (in progress)• Cross-platform API (iOS e Android al momento) che supporta la connessione a

dispositivi WiFi

• Messaging Framework• High-level cross-platform protocol per l’invio dei messaggi via BLE o WiFi

• Peripheral Libraries• Strongly typed libraries per la comunicazione con le periferiche specifiche dei

vendors come health monitoring devices, smart watchers, etc…

Page 19: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Mobile Stack: GATT protocol

IAdapter

IDevice IService

ICharacteristic

Scan and Connect to devices

Discover Services

Enumerate Characteristic

Read and Write data

Page 20: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Messaging Framework

HEADERMagic = 1byte ‘M’Operation = 1byteData Size =1byte

BODYData = max 255byteChecksum = 1byte

Page 21: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

DEMOTemperatura e umidità

Page 22: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Micro Stack

Page 23: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Microcontroller Stack

• Low-level Hardware abstraction• Modular/compositable basata sul concetto di Blocks and Scopes che

rappresenta devices e listeners

• Sensor and Peripheral Library• Librerie strongly-typed che semplificano e astraggono l’integrazione con

centinaia di sensori come Alcohol Sensors o 3-axis Accelerometers

Page 24: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Page 25: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Scopes & Blocks

BLOCKS Rappresentano l'astrazione

di oggetti attivi (devices, convertitori, etc.)

ed espongono OutputPort ed InputPort

SCOPESRappresentano gestori di

output

Page 26: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

DEMORobotroller

Page 27: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

What drivers ?

5 gruppi:• Base Devices• Generators• Motors• Sensors

Gruppo speciale:• Specialized Blocks

Page 28: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Protocol Matrix• Tabella protocolli di comunicazione per piattaforme embedded

Page 29: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Base Devices

Costituiscono il "cuore" della board e sono:

• DigitalInputPin

• DigitalOutputPin

• AnalogInputPin

• PwmOutputPin

Page 30: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Generators

Sono i generatori di onda e l'implementazione attuale ne prevede due tipi: • Sine Wave• PWM (Pulse Width Modulation)

MotorsAstraggono il funzionamento dei motori elettrici per due modelli di hardware:• AdafruitMotorShield• HBridgeMotors

Page 31: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Sensors

• Button -> Pulsanti, Switch, ...• LightSensor -> Fotoresistenze, ...• Location -> Bussole digitali, barometri, ...• Motion -> Accelerometri, ...• Proximity -> Sensori ad infrarossi, ...• Temperature -> Termometri digitali, sonde ntc, ...

Page 32: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Specialized Blocks

Ereditano dalla classe Block

• PollingBlock• Scambio di dati tra periferiche ad intervalli di tempo regolari.

• I2CPollingBlock• Scambio di dati tra periferiche I2C ad intervalli di tempo regolari.• Wrapper delle "consuete" chiamate ai dispositivi i2C.

• Prossimo futuro -> SPIPollingBlock ???

Page 33: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Netduino

● STMicro 32-bit CPU - STM32F405RG● Speed: 168MHz● Code Storage: 384 KB● SRAM: 192 KB ● digital pins 0-1: UART 1 RX, TX● digital pins 2-3: UART 2 RX, TX/PWM● digital pins 5-6: PWM, PWM● digital pins 7-8: UART 3 RX, TX● digital pins 9-10: PWM, PWM● digital pins 11-13: PWM/MOSI, MISO, SPCK● digital pin SD/SC: SDA/SCL

Page 34: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Adafruit Motor Shield

● 2 servomotori da 5V;● 2 Ponti-H: Toshiba TB6612 per motori da 1.2A;● Protezione termica dall'overload;● 4 motori DC bidirezionali;● 2 motori passo passo;● protezione termica della polarità.

Page 35: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

BLE 4 Mini - RedbearLab

● Semplice interfaccia RS232 per piattaforme embedded;● Texas Intruments's CC2540 (CPU indipendente);● Firmware upgradabile via USB;● Predisposizione per collegare un'antenna esterna;● Alimentabile da 3.4V a 11V o con batteria esterna da 3.7V.

Page 36: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

DHT22

● Tensione di lavoro: 3-5V;● Umidità rilevabile: 0%-100%, accuratezza 2-5%; ● Temperatura rilevabile: -40° to 125°C, ±0.5°C accuracy;● Comunicazione a lunga distanza (oltre 50 m);● Protocollo OneWire proprietario.

Page 37: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Recap

• Monkey.Robotics per astrarre la comunicazione tra mobile e micro• Monkey.Robotics per lo sviluppo embedded multipiattaforma• Monkey.Robotics per lo sviluppo embedded rapido

• Su GitHub• https://github.com/xamarin/Monkey.Robotics

• @xamarinrobotics

Page 38: Xamarin Robotics

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Q&A

Tutto il materiale di questa sessione suhttp://www.communitydays.it/

Lascia subito il feedback su questa sessione,potrai essere estratto per i nostri premi!

Seguici suTwitter @CommunityDaysITFacebook http://facebook.com/cdaysit#CDays15