SlideShare a Scribd company logo
1 of 11
Download to read offline
Semantic ArDroid - Relazione_finale - # 25

Il progetto Semantic Android
Il progetto Semantic ArDroid è stato sviluppato con l'obiettivo di rendere possibile l'utilizzo di un'applicazione per l'accesso sicuro ai
dati provenienti da endpoint SPARQL, in uno scenario distribuito e con l'utilizzo dispositivi mobile (large screen/tablet). Il design
architetturale ha previsto il connubio di un dispositivo hardware che fungesse da "Android Accessory" per l'autenticazione basato su
Arduino UNO o Arduino MEGA Android ADK e di un tablet Android (con SDK minimo pari a 11 - Honey Comb).

Il funzionamento di base
Lo scenario applicativo ipotizzato in ambito progettuale è stato definito partendo dall'assunto che l'utilizzatore di tale applicazione
dovesse avere la disponibilità di un tablet Android con accesso a Internet e dotato di Bluetooth e che dovesse trovarsi nelle vicinanze
del dispositivo di autenticazione basato su RFID tags. Presupponendo uno scenario di questo tipo un'ipotesi potrebbe essere quella
di un operatore che si sposti su un autoveicolo aziendale dotato di una presa di corrente a 12 V che possa alimentare il dispositivo
d'autenticazione, oppure un veicolo che abbia già incorporato tale dispositivo. L'azienda o l'ente che fornisca tale applicazione ai
propri operatori incaricati sul territorio non farebbe altro che dare ad ognuno di essi un tag di autenticazione univoco e un tablet con
l'applicativo preinstallato. In tal modo, durante il corso dei normali spostamenti, l'incaricato potrà accedere al sistema aprendo l'app
Semantic ArDroid sul proprio Android device e richiedendo l'autenticazione tramite comunicazione Bluetooth RFCOMM al dispositivo
hardware d'autenticazione. Una volta associato tale dispositivo al tablet verrà richiesto, tramite Alert su Android e tramite segnalazione
LED sull'hardware, l'autenticazione per mezzo della lettura di un tag RFID.
Android provvederà poi a confrontare il valore dei 10 digit del tag con il proprio database e a permettere la successiva interrogazione
degli endpoint remoti per mezzo di visualizzazioni grafiche basate su mappe o grafici di vario tipo, permettendo così all'operatore un
monitoraggio costante del territorio su cui si trova ad operare tramite l'utilizzo di applicazioni semantiche.

Lo Use Case Android + Arduino

24/09/2012

1/11
1. Accensione Arduino
2. Boot app Android
3. Intent per attivazione antenna Bluetooth
1. Searching del dispositivo
2. Associazione con FireFly-B223 (passkey 1234 - baudrate 9600)
3. Android invia 's' INIZIO COMUNICAZIONE
4. Arduino invia ACK COMUNICAZIONE "INIT"
5. Accensione LED rosso fisso
6. Boolean activeCOM = TRUE
7. Messaggio a video di avvenuta associazione
4. Richiesta di autenticazione da parte dell'activity Android
1. Android invia 'a' ACTIVE MODE - Richiesta lettura tag
2. Blinking LED giallo per segnalazione inizio lettura RFID
3. ENABLE di RFID Reader
- LED giallo acceso
- LED RFID reader rosso
4. Attesa attiva per ricezione TAG RFID
5. Lettura per RFIDReads volte dei tag RFID
6. Invio tags code via BT
7. Attesa 'k' ACK su lettura avvenuta
8. Spegnimento LED giallo - Fine lettura RFID
9. LED verde acceso su ACK Android - 1s
5. Fine comunicazione
1. Android invia 'b' BYE "Over and Out" - passo e chiudo :)
2. Spegnimento LED ROSSO
3. Boolean activeCOM = FALSE
6. Loop

Activity Diagram

Stati BluetoothHandler (Android Service)

24/09/2012

2/11
State Machine Diagram
1. NONE

2. CONNECTING
3. COMMAND
4. READ

5. ERROR
Messaggi (verso SemanticArDroidActivity)
1. MESSAGE_STATE_CHANGE
2. MESSAGE_READ
3. MESSAGE_WRITE
4. MESSAGE_DEVICE_NAME
5. MESSAGE_TOAST
Codici di segnalazione Arduino
1. 's' INIZIO COMUNICAZIONE
2. 'a' ACTIVE MODE - Richiesta lettura tag
3. 'k' ACK ACK su lettura avvenuta
4. 'b' BYE "Over and Out" - passo e chiudo :)

Il design dell'applicazione Android

24/09/2012

3/11
Sequence Diagram
I risultati dello STATE DATA VISUALIZATION
- Map

1<script type="text/javascript">
2
sgvizler.option.query.endpoint_output = 'jsonp';
3
24/09/2012

4/11
4
sgvizler.option.namespace.npdv = 'http://sws.ifi.uio.no/vocab/npd#';
5
sgvizler.option.namespace.geo = 'http://www.w3.org/2003/01/geo/wgs84_pos#' ;
6
sgvizler.option.namespace.dbp = 'http://dbpedia.org/resource/';
7
sgvizler.option.namespace.prod = 'http://prod.cetis.ac.uk/vocab/';
8
sgvizler.option.namespace.jisc = 'http://www.rkbexplorer.com/ontologies/jisc#';
9
10
//// Leave this as is. Ready, steady, go!
11
$(document).ready(sgvizler.go());
12 </script>
13
14<div id="sgvzl_example21"
15 data-sgvizler-endpoint="http://irm.dnv.com/ep/saio/sparql"
16 data-sgvizler-query="SELECT xsd:float(?lat) xsd:float(?long) ?label ?comment ?subject
17
WHERE{
18
?subject geo:location [
19
geo:lat ?lat ;
20
geo:long ?long ] ;
21
rdfs:label ?label ;
22
rdfs:comment ?comment .
23
}
24
LIMIT 50
25
"
26 data-sgvizler-chart="sMap"
27 data-sgvizler-loglevel="2"
28 style="width:1200px; height:500px;"
29 ></div>
La mappa che viene generata riguarda i primi 50 incidenti aerei selezionati indistintamente. L'endpoint SPARQL interrogato è
accessibile all'indirizzo http://irm.dnv.com/ep/saio/
- Area

1
sgvizler.option.query.endpoint = "http://sws.ifi.uio.no/sparql/npd";
2
3
sgvizler.option.namespace.npdv = 'http://sws.ifi.uio.no/vocab/npd#';
4
5 <div id="sgvzl_example3"
6 data-sgvizler-query="SELECT ?year ?Oil_millSm3 ?Gas_billSm3 ?NGL_millSm3 ?Condensate_millSm3 ?Water_millSm3
7
WHERE{ ?period a npdv:FieldProductionPeriod ;
8
npdv:hasField <http://sws.ifi.uio.no/npd/field/Ekofisk> ;
9
npdv:year ?year ;
10
npdv:producedNetOilMillSm3 ?Oil_millSm3 ;
11
npdv:producedNetGasBillSm3 ?Gas_billSm3 ;
24/09/2012

5/11
12
13
14
15
16
17
18
19
20
21
22

npdv:producedNetNGLMillSm3 ?NGL_millSm3 ;
npdv:producedNetCondensateMillSm3 ?Condensate_millSm3 ;
npdv:producedWaterMillSm3 ?Water_millSm3 ;
OPTIONAL{?period npdv:month ?month} .
FILTER (!bound(?month))
FILTER (xsd:int(?year) < 2011)
} ORDER BY ?year"
data-sgvizler-chart="gAreaChart"
data-sgvizler-log="2"
style="width:800px; height:500px;"
></div>

I dati di diagramma sono prodotti interrogando l'endpoint SPARQL del Logic and Intelligent Data research group del Department of
Informatics (University of Oslo). I dati vengono prodotti prendendo spunto da quanto prodotto per il progetto Linked Open NPD
FactPages (Linked Open Data version of the Norwegian Petroleum Directorate's Fact Pages).

L'ontologia NPD è accessibile all'indirizzo: http://sws.ifi.uio.no/vocab/npd
- Pie

1
2
3
4
5
6
7
8
9

<div id="sgvzl_example1"
data-sgvizler-query="SELECT ?class (count(?instance) AS ?noOfInstances)
WHERE{ ?instance a ?class }
GROUP BY ?class
ORDER BY ?class"
data-sgvizler-chart="gPieChart"
data-sgvizler-log="0"
style="width:800px; height:500px;"
>

24/09/2012

6/11
10

</div>

Anche in questo caso viene utilizzata l'ontologia NPD e vengono visualizzate le classi RDFS e le loro istanze. Viene effettuato il
conteggio, l'aggregazione e l'ordinamento.

L'hardware necessario
Il design dell'accessorio Android per l'autenticazione hardware per mezzo di tag RFID ha richiesto l'utilizzo dei seguenti componenti:
-

Arduino UNO
Tre LED di segnalazione, corredati di relative resistenze
Modulo di connessione Bluetooth BlueSMiRF Silver della Sparkfun Electronics
Modulo per RFID Card reader PARALLAX

24/09/2012

7/11
Specifiche modulo Bluetooth BlueSMiRF

-

FCC Approved Class 2 Bluetooth Radio Modem
Extremely small radio - 0.15x0.6x1.9"
Very robust link both in integrity and transmission distance (18m)
Hardy frequency hopping scheme - operates in harsh RF environments like WiFi, 802.11g, and Zigbee
Encrypted connection -- Abilitabile tramite AT Commands
Frequency: 2.4~2.524 GHz
Operating Voltage: 3.3V-6V
Serial communications: 2400-115200bps
Operating Temperature: -40 ~ +70C
Built-in antenna

Specifiche modulo RFID reader PARALLAX

Features:
- Low-cost method for reading passive RFID EM4100 family transponder tags
- 2400 baud serial interface
24/09/2012

8/11
- Enable input allows module to be enabled/disabled by software
- Bi-color LED for visual indication of status (GREEN not enabled, RED enabled)
Compatible tags:
-

54x85mm Rectangle Tag ISO Card: 6.3cm (2.5") +/- 10%
50mm Round Tag World Tag 50mm: 6.8cm (2.7") +/- 10%
Blue Eye Key Fob
25mm Disk Tag

Key Specifications:
-

Reads 125 kHz Tags, EM41000 Family
Power requirements: 4.5 to 5.5 VDC
Communication: Serial at 2400 baud (8N1)
Dimensions: 2.45 x 6.25 x 0.22 in (62.2 x 82.5 x 5.57 mm)
Operating temp range: -40 to +185 °F (-40 to +85 °C)

Arduino Sketch

1#include <SoftwareSerial.h>
2#define rxPinRFID 6
3#define txPinRFID 12 // NOT REALLY USED!
4#define RFIDENABLE 7
5#define greenLED 8
6#define yellowLED 9
7#define redLED 10
8
9int val = 0;
10char btval = ' ';
11char code[10];
12const char endString = '%'; // 37
13const String endCommand = "###";
14int bytesread = 0;
15const int RFIDReads = 4;
16boolean activeCOM = false;
17boolean waitingACK = false;
18SoftwareSerial RFID = SoftwareSerial(rxPinRFID,txPinRFID);
19
20void setup()
21{
22 Serial.begin(9600); // Hardware serial for Monitor 2400bps
23
24 pinMode(RFIDENABLE,OUTPUT);
// Set digital pin 2 as OUTPUT to connect it to the RFID /ENABLE pin
25 digitalWrite(RFIDENABLE, HIGH);
26 RFID.begin(2400);
27
28 //LEDS
29 pinMode(greenLED, OUTPUT);
30 pinMode(yellowLED, OUTPUT);
31 pinMode(redLED, OUTPUT);
32}
33
34void loop()
35{
36 if(Serial.available() > 0) {
37 btval = Serial.read();
38 if(btval == 's' && activeCOM == false) { // START COMMUNICATION
39
digitalWrite(redLED, HIGH);
40
Serial.print("INIT");
41
Serial.print(endCommand);
42
activeCOM = true;
43 }
44
45 if(btval == 'a' && activeCOM==true && waitingACK==false) { // ACTIVE MODE
46
digitalWrite(RFIDENABLE,LOW);
47

24/09/2012

9/11
48
for(int j=0; j<3; j++) {
49
digitalWrite(yellowLED, HIGH);
50
delay(500);
51
digitalWrite(yellowLED, LOW);
52
delay(500);
53
}
54
digitalWrite(yellowLED, HIGH);
55
56
int readingCount = 0;
57
while (readingCount < RFIDReads){
58
/* Start RFID READING*/
59
if(RFID.available() > 0) {
60
delay(100);
61
if((val = RFID.read()) == 10)
62
{ // check for header
63
bytesread = 0;
64
while(bytesread<10)
65
{ // read 10 digit code
66
val = RFID.read();
67
if((val == 10)||(val == 13))
68
{ // if header or stop bytes before the 10 digit reading
69
break;
// stop reading
70
}
71
code[bytesread] = val;
// add the digit
72
bytesread++;
// ready to read next digit
73
}
74
75
if(bytesread == 10)
76
{ // if 10 digit read is complete
77
readingCount++;
// Increase Reading Counter
78//
Serial.print("TAG code " + (String)readingCount + " is : "); // possibly a good TAG
79
Serial.print(code);
// print the TAG code
80
Serial.print(endString);
81
}
82
bytesread = 0;
83
delay(250);
// wait for a second
84
}
85
}
86
/* END RFID READING */
87
} // RFIDReads DONE!
88
Serial.print(endCommand);
89
RFID.flush(); //Flushing the SoftwareSerial Buffer!
90
digitalWrite(RFIDENABLE, HIGH); // disable RFID reader
91
waitingACK = true;
92 } // END ActiveMode
93
94 if(btval == 'k' && activeCOM==true && waitingACK==true) { //ACK
95
waitingACK = false;
96
digitalWrite(yellowLED, LOW);
97
digitalWrite(greenLED,HIGH);
98
delay(3000);
99
digitalWrite(greenLED,LOW);
100 }
101
102 if(btval == 'b' && activeCOM == true) {
103
activeCOM = false;
104
digitalWrite(redLED, LOW);
105 }
106 } // END Serial.available > 0
107}

Configurazione iniziale del modulo Bluetooth per la comunicazione con Arduino
TODO TUTORIAL PER IL COMMAND MODE e invio AT COMMANDS

24/09/2012

10/11
File
ArDroid_OneHWSerial_bb.jpg
StateMachineDiagram.png
SequenceDiagram.png
Activity-Diagram.png
FotoArDroid.jpg

103,1 KB

23/07/2012

Alfredo Torre

22,9 KB

23/07/2012

Alfredo Torre

33 KB

23/07/2012

Alfredo Torre

16,9 KB

23/07/2012

Alfredo Torre

176,5 KB

23/07/2012

Alfredo Torre

area.png

33,7 KB

23/07/2012

Alfredo Torre

map.png

303,7 KB

23/07/2012

Alfredo Torre

pie.png

57,9 KB

23/07/2012

Alfredo Torre

UseCase-utilizzo.jpeg

40,9 KB

23/07/2012

Alfredo Torre

UseCase-utilizzo.png

17,3 KB

23/07/2012

Alfredo Torre

bluesmirf.jpg

35,6 KB

23/07/2012

Alfredo Torre

parallax.jpg

13,6 KB

23/07/2012

Alfredo Torre

16 KB

24/07/2012

Alfredo Torre

npd.jpg

24/09/2012

11/11

More Related Content

Similar to Semantic ArDroid

Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Riccardo Mancinelli
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Mirco Piccin
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniStefano Sanna
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteMirco Sbrollini
 
EuComm
EuCommEuComm
EuCommiBLio
 
Summary of 50 ways to leak your data an exploration of apps circumvention of ...
Summary of 50 ways to leak your data an exploration of apps circumvention of ...Summary of 50 ways to leak your data an exploration of apps circumvention of ...
Summary of 50 ways to leak your data an exploration of apps circumvention of ...TommasoBaldo
 
J2Me Il Micro Mondo Java
J2Me Il Micro Mondo JavaJ2Me Il Micro Mondo Java
J2Me Il Micro Mondo JavaAntonio Terreno
 
Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi...
 Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi... Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi...
Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi...paolabassi2
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi
 
Studio e sviluppo di una libreria java per la lettura di smart card su decode...
Studio e sviluppo di una libreria java per la lettura di smart card su decode...Studio e sviluppo di una libreria java per la lettura di smart card su decode...
Studio e sviluppo di una libreria java per la lettura di smart card su decode...ICL - Image Communication Laboratory
 
Energy consumption on mobile devices
Energy consumption on mobile devicesEnergy consumption on mobile devices
Energy consumption on mobile devicesAntonio Notarangelo
 
Lezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreLezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreMirko Mancin
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSDan Ardelean
 
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalDay
 

Similar to Semantic ArDroid (20)

Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
 
Android
AndroidAndroid
Android
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioni
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincente
 
EuComm
EuCommEuComm
EuComm
 
Summary of 50 ways to leak your data an exploration of apps circumvention of ...
Summary of 50 ways to leak your data an exploration of apps circumvention of ...Summary of 50 ways to leak your data an exploration of apps circumvention of ...
Summary of 50 ways to leak your data an exploration of apps circumvention of ...
 
Tesi Triennale
Tesi TriennaleTesi Triennale
Tesi Triennale
 
J2Me Il Micro Mondo Java
J2Me Il Micro Mondo JavaJ2Me Il Micro Mondo Java
J2Me Il Micro Mondo Java
 
Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi...
 Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi... Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi...
Studio di opendata acquisiti tramite tecnologie MODE S e ADS-B per l'analisi...
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile Cordova
 
Oai Data Adapter
Oai Data AdapterOai Data Adapter
Oai Data Adapter
 
Studio e sviluppo di una libreria java per la lettura di smart card su decode...
Studio e sviluppo di una libreria java per la lettura di smart card su decode...Studio e sviluppo di una libreria java per la lettura di smart card su decode...
Studio e sviluppo di una libreria java per la lettura di smart card su decode...
 
Energy consumption on mobile devices
Energy consumption on mobile devicesEnergy consumption on mobile devices
Energy consumption on mobile devices
 
Lezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 oreLezione 3 arduino - corso 20 ore
Lezione 3 arduino - corso 20 ore
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
 
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache CordovaDrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
 
Io, Android
Io, AndroidIo, Android
Io, Android
 

Semantic ArDroid

  • 1. Semantic ArDroid - Relazione_finale - # 25 Il progetto Semantic Android Il progetto Semantic ArDroid è stato sviluppato con l'obiettivo di rendere possibile l'utilizzo di un'applicazione per l'accesso sicuro ai dati provenienti da endpoint SPARQL, in uno scenario distribuito e con l'utilizzo dispositivi mobile (large screen/tablet). Il design architetturale ha previsto il connubio di un dispositivo hardware che fungesse da "Android Accessory" per l'autenticazione basato su Arduino UNO o Arduino MEGA Android ADK e di un tablet Android (con SDK minimo pari a 11 - Honey Comb). Il funzionamento di base Lo scenario applicativo ipotizzato in ambito progettuale è stato definito partendo dall'assunto che l'utilizzatore di tale applicazione dovesse avere la disponibilità di un tablet Android con accesso a Internet e dotato di Bluetooth e che dovesse trovarsi nelle vicinanze del dispositivo di autenticazione basato su RFID tags. Presupponendo uno scenario di questo tipo un'ipotesi potrebbe essere quella di un operatore che si sposti su un autoveicolo aziendale dotato di una presa di corrente a 12 V che possa alimentare il dispositivo d'autenticazione, oppure un veicolo che abbia già incorporato tale dispositivo. L'azienda o l'ente che fornisca tale applicazione ai propri operatori incaricati sul territorio non farebbe altro che dare ad ognuno di essi un tag di autenticazione univoco e un tablet con l'applicativo preinstallato. In tal modo, durante il corso dei normali spostamenti, l'incaricato potrà accedere al sistema aprendo l'app Semantic ArDroid sul proprio Android device e richiedendo l'autenticazione tramite comunicazione Bluetooth RFCOMM al dispositivo hardware d'autenticazione. Una volta associato tale dispositivo al tablet verrà richiesto, tramite Alert su Android e tramite segnalazione LED sull'hardware, l'autenticazione per mezzo della lettura di un tag RFID. Android provvederà poi a confrontare il valore dei 10 digit del tag con il proprio database e a permettere la successiva interrogazione degli endpoint remoti per mezzo di visualizzazioni grafiche basate su mappe o grafici di vario tipo, permettendo così all'operatore un monitoraggio costante del territorio su cui si trova ad operare tramite l'utilizzo di applicazioni semantiche. Lo Use Case Android + Arduino 24/09/2012 1/11
  • 2. 1. Accensione Arduino 2. Boot app Android 3. Intent per attivazione antenna Bluetooth 1. Searching del dispositivo 2. Associazione con FireFly-B223 (passkey 1234 - baudrate 9600) 3. Android invia 's' INIZIO COMUNICAZIONE 4. Arduino invia ACK COMUNICAZIONE "INIT" 5. Accensione LED rosso fisso 6. Boolean activeCOM = TRUE 7. Messaggio a video di avvenuta associazione 4. Richiesta di autenticazione da parte dell'activity Android 1. Android invia 'a' ACTIVE MODE - Richiesta lettura tag 2. Blinking LED giallo per segnalazione inizio lettura RFID 3. ENABLE di RFID Reader - LED giallo acceso - LED RFID reader rosso 4. Attesa attiva per ricezione TAG RFID 5. Lettura per RFIDReads volte dei tag RFID 6. Invio tags code via BT 7. Attesa 'k' ACK su lettura avvenuta 8. Spegnimento LED giallo - Fine lettura RFID 9. LED verde acceso su ACK Android - 1s 5. Fine comunicazione 1. Android invia 'b' BYE "Over and Out" - passo e chiudo :) 2. Spegnimento LED ROSSO 3. Boolean activeCOM = FALSE 6. Loop Activity Diagram Stati BluetoothHandler (Android Service) 24/09/2012 2/11
  • 3. State Machine Diagram 1. NONE 2. CONNECTING 3. COMMAND 4. READ 5. ERROR Messaggi (verso SemanticArDroidActivity) 1. MESSAGE_STATE_CHANGE 2. MESSAGE_READ 3. MESSAGE_WRITE 4. MESSAGE_DEVICE_NAME 5. MESSAGE_TOAST Codici di segnalazione Arduino 1. 's' INIZIO COMUNICAZIONE 2. 'a' ACTIVE MODE - Richiesta lettura tag 3. 'k' ACK ACK su lettura avvenuta 4. 'b' BYE "Over and Out" - passo e chiudo :) Il design dell'applicazione Android 24/09/2012 3/11
  • 4. Sequence Diagram I risultati dello STATE DATA VISUALIZATION - Map 1<script type="text/javascript"> 2 sgvizler.option.query.endpoint_output = 'jsonp'; 3 24/09/2012 4/11
  • 5. 4 sgvizler.option.namespace.npdv = 'http://sws.ifi.uio.no/vocab/npd#'; 5 sgvizler.option.namespace.geo = 'http://www.w3.org/2003/01/geo/wgs84_pos#' ; 6 sgvizler.option.namespace.dbp = 'http://dbpedia.org/resource/'; 7 sgvizler.option.namespace.prod = 'http://prod.cetis.ac.uk/vocab/'; 8 sgvizler.option.namespace.jisc = 'http://www.rkbexplorer.com/ontologies/jisc#'; 9 10 //// Leave this as is. Ready, steady, go! 11 $(document).ready(sgvizler.go()); 12 </script> 13 14<div id="sgvzl_example21" 15 data-sgvizler-endpoint="http://irm.dnv.com/ep/saio/sparql" 16 data-sgvizler-query="SELECT xsd:float(?lat) xsd:float(?long) ?label ?comment ?subject 17 WHERE{ 18 ?subject geo:location [ 19 geo:lat ?lat ; 20 geo:long ?long ] ; 21 rdfs:label ?label ; 22 rdfs:comment ?comment . 23 } 24 LIMIT 50 25 " 26 data-sgvizler-chart="sMap" 27 data-sgvizler-loglevel="2" 28 style="width:1200px; height:500px;" 29 ></div> La mappa che viene generata riguarda i primi 50 incidenti aerei selezionati indistintamente. L'endpoint SPARQL interrogato è accessibile all'indirizzo http://irm.dnv.com/ep/saio/ - Area 1 sgvizler.option.query.endpoint = "http://sws.ifi.uio.no/sparql/npd"; 2 3 sgvizler.option.namespace.npdv = 'http://sws.ifi.uio.no/vocab/npd#'; 4 5 <div id="sgvzl_example3" 6 data-sgvizler-query="SELECT ?year ?Oil_millSm3 ?Gas_billSm3 ?NGL_millSm3 ?Condensate_millSm3 ?Water_millSm3 7 WHERE{ ?period a npdv:FieldProductionPeriod ; 8 npdv:hasField <http://sws.ifi.uio.no/npd/field/Ekofisk> ; 9 npdv:year ?year ; 10 npdv:producedNetOilMillSm3 ?Oil_millSm3 ; 11 npdv:producedNetGasBillSm3 ?Gas_billSm3 ; 24/09/2012 5/11
  • 6. 12 13 14 15 16 17 18 19 20 21 22 npdv:producedNetNGLMillSm3 ?NGL_millSm3 ; npdv:producedNetCondensateMillSm3 ?Condensate_millSm3 ; npdv:producedWaterMillSm3 ?Water_millSm3 ; OPTIONAL{?period npdv:month ?month} . FILTER (!bound(?month)) FILTER (xsd:int(?year) < 2011) } ORDER BY ?year" data-sgvizler-chart="gAreaChart" data-sgvizler-log="2" style="width:800px; height:500px;" ></div> I dati di diagramma sono prodotti interrogando l'endpoint SPARQL del Logic and Intelligent Data research group del Department of Informatics (University of Oslo). I dati vengono prodotti prendendo spunto da quanto prodotto per il progetto Linked Open NPD FactPages (Linked Open Data version of the Norwegian Petroleum Directorate's Fact Pages). L'ontologia NPD è accessibile all'indirizzo: http://sws.ifi.uio.no/vocab/npd - Pie 1 2 3 4 5 6 7 8 9 <div id="sgvzl_example1" data-sgvizler-query="SELECT ?class (count(?instance) AS ?noOfInstances) WHERE{ ?instance a ?class } GROUP BY ?class ORDER BY ?class" data-sgvizler-chart="gPieChart" data-sgvizler-log="0" style="width:800px; height:500px;" > 24/09/2012 6/11
  • 7. 10 </div> Anche in questo caso viene utilizzata l'ontologia NPD e vengono visualizzate le classi RDFS e le loro istanze. Viene effettuato il conteggio, l'aggregazione e l'ordinamento. L'hardware necessario Il design dell'accessorio Android per l'autenticazione hardware per mezzo di tag RFID ha richiesto l'utilizzo dei seguenti componenti: - Arduino UNO Tre LED di segnalazione, corredati di relative resistenze Modulo di connessione Bluetooth BlueSMiRF Silver della Sparkfun Electronics Modulo per RFID Card reader PARALLAX 24/09/2012 7/11
  • 8. Specifiche modulo Bluetooth BlueSMiRF - FCC Approved Class 2 Bluetooth Radio Modem Extremely small radio - 0.15x0.6x1.9" Very robust link both in integrity and transmission distance (18m) Hardy frequency hopping scheme - operates in harsh RF environments like WiFi, 802.11g, and Zigbee Encrypted connection -- Abilitabile tramite AT Commands Frequency: 2.4~2.524 GHz Operating Voltage: 3.3V-6V Serial communications: 2400-115200bps Operating Temperature: -40 ~ +70C Built-in antenna Specifiche modulo RFID reader PARALLAX Features: - Low-cost method for reading passive RFID EM4100 family transponder tags - 2400 baud serial interface 24/09/2012 8/11
  • 9. - Enable input allows module to be enabled/disabled by software - Bi-color LED for visual indication of status (GREEN not enabled, RED enabled) Compatible tags: - 54x85mm Rectangle Tag ISO Card: 6.3cm (2.5") +/- 10% 50mm Round Tag World Tag 50mm: 6.8cm (2.7") +/- 10% Blue Eye Key Fob 25mm Disk Tag Key Specifications: - Reads 125 kHz Tags, EM41000 Family Power requirements: 4.5 to 5.5 VDC Communication: Serial at 2400 baud (8N1) Dimensions: 2.45 x 6.25 x 0.22 in (62.2 x 82.5 x 5.57 mm) Operating temp range: -40 to +185 °F (-40 to +85 °C) Arduino Sketch 1#include <SoftwareSerial.h> 2#define rxPinRFID 6 3#define txPinRFID 12 // NOT REALLY USED! 4#define RFIDENABLE 7 5#define greenLED 8 6#define yellowLED 9 7#define redLED 10 8 9int val = 0; 10char btval = ' '; 11char code[10]; 12const char endString = '%'; // 37 13const String endCommand = "###"; 14int bytesread = 0; 15const int RFIDReads = 4; 16boolean activeCOM = false; 17boolean waitingACK = false; 18SoftwareSerial RFID = SoftwareSerial(rxPinRFID,txPinRFID); 19 20void setup() 21{ 22 Serial.begin(9600); // Hardware serial for Monitor 2400bps 23 24 pinMode(RFIDENABLE,OUTPUT); // Set digital pin 2 as OUTPUT to connect it to the RFID /ENABLE pin 25 digitalWrite(RFIDENABLE, HIGH); 26 RFID.begin(2400); 27 28 //LEDS 29 pinMode(greenLED, OUTPUT); 30 pinMode(yellowLED, OUTPUT); 31 pinMode(redLED, OUTPUT); 32} 33 34void loop() 35{ 36 if(Serial.available() > 0) { 37 btval = Serial.read(); 38 if(btval == 's' && activeCOM == false) { // START COMMUNICATION 39 digitalWrite(redLED, HIGH); 40 Serial.print("INIT"); 41 Serial.print(endCommand); 42 activeCOM = true; 43 } 44 45 if(btval == 'a' && activeCOM==true && waitingACK==false) { // ACTIVE MODE 46 digitalWrite(RFIDENABLE,LOW); 47 24/09/2012 9/11
  • 10. 48 for(int j=0; j<3; j++) { 49 digitalWrite(yellowLED, HIGH); 50 delay(500); 51 digitalWrite(yellowLED, LOW); 52 delay(500); 53 } 54 digitalWrite(yellowLED, HIGH); 55 56 int readingCount = 0; 57 while (readingCount < RFIDReads){ 58 /* Start RFID READING*/ 59 if(RFID.available() > 0) { 60 delay(100); 61 if((val = RFID.read()) == 10) 62 { // check for header 63 bytesread = 0; 64 while(bytesread<10) 65 { // read 10 digit code 66 val = RFID.read(); 67 if((val == 10)||(val == 13)) 68 { // if header or stop bytes before the 10 digit reading 69 break; // stop reading 70 } 71 code[bytesread] = val; // add the digit 72 bytesread++; // ready to read next digit 73 } 74 75 if(bytesread == 10) 76 { // if 10 digit read is complete 77 readingCount++; // Increase Reading Counter 78// Serial.print("TAG code " + (String)readingCount + " is : "); // possibly a good TAG 79 Serial.print(code); // print the TAG code 80 Serial.print(endString); 81 } 82 bytesread = 0; 83 delay(250); // wait for a second 84 } 85 } 86 /* END RFID READING */ 87 } // RFIDReads DONE! 88 Serial.print(endCommand); 89 RFID.flush(); //Flushing the SoftwareSerial Buffer! 90 digitalWrite(RFIDENABLE, HIGH); // disable RFID reader 91 waitingACK = true; 92 } // END ActiveMode 93 94 if(btval == 'k' && activeCOM==true && waitingACK==true) { //ACK 95 waitingACK = false; 96 digitalWrite(yellowLED, LOW); 97 digitalWrite(greenLED,HIGH); 98 delay(3000); 99 digitalWrite(greenLED,LOW); 100 } 101 102 if(btval == 'b' && activeCOM == true) { 103 activeCOM = false; 104 digitalWrite(redLED, LOW); 105 } 106 } // END Serial.available > 0 107} Configurazione iniziale del modulo Bluetooth per la comunicazione con Arduino TODO TUTORIAL PER IL COMMAND MODE e invio AT COMMANDS 24/09/2012 10/11
  • 11. File ArDroid_OneHWSerial_bb.jpg StateMachineDiagram.png SequenceDiagram.png Activity-Diagram.png FotoArDroid.jpg 103,1 KB 23/07/2012 Alfredo Torre 22,9 KB 23/07/2012 Alfredo Torre 33 KB 23/07/2012 Alfredo Torre 16,9 KB 23/07/2012 Alfredo Torre 176,5 KB 23/07/2012 Alfredo Torre area.png 33,7 KB 23/07/2012 Alfredo Torre map.png 303,7 KB 23/07/2012 Alfredo Torre pie.png 57,9 KB 23/07/2012 Alfredo Torre UseCase-utilizzo.jpeg 40,9 KB 23/07/2012 Alfredo Torre UseCase-utilizzo.png 17,3 KB 23/07/2012 Alfredo Torre bluesmirf.jpg 35,6 KB 23/07/2012 Alfredo Torre parallax.jpg 13,6 KB 23/07/2012 Alfredo Torre 16 KB 24/07/2012 Alfredo Torre npd.jpg 24/09/2012 11/11