1. Sun SPOT
Small Programmable Object Technology
L
o
Stefano Sanna
Senior Engineer & Java ME Tech Lead @ beeweeb technologies
http://www.gerdavax.it
Stefano Sanna, Sun SPOT
1
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
2. Agenda
Presentazioni! :-)
●
Program the world, the Internet of things!
●
Introduzione ai Sun SPOT
●
Code & Demo
●
Concorso
●
Stefano Sanna, Sun SPOT
2
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
3. Speaker
Senior Engineer & Java ME Tech Lead
●
beeweeb technologies – http://www.beeweeb.com
–
Autore del libro “Java Micro Edition”
●
Hoepli Informatica, novembre 2007
–
Supporter @ JUG Sardegna, JMDF, JIA
●
Stefano Sanna, Sun SPOT
3
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
4. Programmare il mondo reale
Le reti wireless di sensori offrono scenari
●
applicativi avvincenti:
controllo pervasivo dell'ambiente
–
intelligenza distribuita massiva
–
urban smart objects
–
Oggetti programmabili per il mondo reale
●
connessi: the Internet of Things
–
autonomi: CPU, memoria e codice locali
–
sensibili all'ambiente: sicuri, robusti, con sensori
–
Stefano Sanna, Sun SPOT
4
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
5. Sensori: nuova frontiera
Essere connessi e programmabili non basta!
●
La possibilità di “percepire” l'ambiente circostante
●
rappresenta la nuova frontiera dell'interazione
Console di gioco, telefoni cellulari, apparati
●
veicolari, sistemi embedded: ogni oggetto
programmabile deve “sentire” e agire di
conseguenza in base alla grandezza fisica
percepita...
Stefano Sanna, Sun SPOT
5
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
6. I sensori nel mondo Java ME
Java ME è la tecnologia leader per lo sviluppo di
●
applicazioni per dispositivi mobili
Un ricco insieme di API standard fornisce accesso
●
alle funzioni multimediali, grafica 2D e 3D,
connettività locale e remota, localizzazione, RFID
(NFC)...
Il Java Community Process ha pubblicato la Mobile
●
Sensor API (JSR 256) per l'accesso a periferiche
quali accelerometri, termometri...
Stefano Sanna, Sun SPOT
6
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
7. Introduzione ai Sun SPOT
Small Programmable Object Technology
●
Progetto sviluppato dai
●
Laboratori di Ricerca Sun
Piattaforma per reti wireless
●
di sensori intelligenti
Laboratorio “live” per realizzare
●
nuovi scenari applicativi:
The (Inter)net of Things
–
“Program the world”
–
Stefano Sanna, Sun SPOT
7
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
8. Hardware
Processor Board
●
180 MHz 32 bit ARM920T core
–
512K RAM/4M Flash
–
2.4 GHz IEEE 802.15.4 radio
–
Interfaccia USB
–
Batteria ricaricabile agli
–
ioni di litio 3.7V, 720 mAh
32 uA deep sleep mode
–
Stefano Sanna, Sun SPOT
8
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
9. Hardware
Demo Sensor Board
●
Accelerometro 2G/6G 3-axis
–
Sensore di temperatura
–
Sensore di luminosità
–
8 LED tricolori
–
6 input analogici, 2 switch
–
5 general purpose I/O pin
–
4 uscite da 100mA
–
Stefano Sanna, Sun SPOT
9
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
10. SPOTs Software
Squawk Virtual Machine
●
Compatibile J2ME CLDC 1.1
–
Java VM con funzionalità
–
di sistema operativo
VM esegue il bytecode
–
direttamente dalla
memoria flash
Device driver scritti in Java
–
Gestione automatica
–
consumo energetico
Stefano Sanna, Sun SPOT
10
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
11. Sun SPOT goes open source!
Il codice sorgente sella Squawk Virtual Machine e
●
delle librerie dei Sun SPOT è stato recentemente
rilasciato sotto licenza open source:
https://spots.dev.java.net/
Non solo software! Anche l'hardware è disponibile
●
con licenza open. Schemi, PCB, diagrammi di
assemblaggio... do it yourself:
https://spots-hardware.dev.java.net/
Stefano Sanna, Sun SPOT
11
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
12. Free-range e Base Station
Il Sun SPOT Development Kit fornisce:
●
Due SPOT free-range equipaggiati con processor
–
board, interfaccia radio, demo sensor board e
batteria
Una Base Station,
–
con processor board
e interfaccia radio
SDK per Windows,
–
Mac OS X e Linux
Cavo USB
–
Stefano Sanna, Sun SPOT
12
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
13. Sviluppo
L'SDK comprende librerie e utility per la
●
compilazione, il packaging del bytecode,
l'aggiornamento del firmware degli SPOT e per
lanciare le applicazioni
L'SDK è basato su Ant e la gestione dei progetti
●
può essere automatizzata in qualsiasi IDE
Gli SPOT supportano installazione, esecuzione e
●
debugging remoti attraverso la connessione
wireless
Stefano Sanna, Sun SPOT
13
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
14. SPOTManager
http://www.sunspotworld.com/SPOTManager
Stefano Sanna, Sun SPOT
14
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
16. Sun SPOT & Netbeans
Sono disponibili alcuni plug-in per Netbeans 6.x
●
che consentono di utilizzare l'SDK dei Sun SPOT
all'interno dell'IDE
Stefano Sanna, Sun SPOT
16
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
17. Due tipi di applicazioni
Sun SPOT Application
●
Eseguite sui free-range SPOT
–
Modello applicativo basato su CLDC 1.1 e IMP 1.0
–
Accesso completo alle periferiche e alla demo board
–
Sun SPOT Host Application
●
Eseguite su uno SPOT configurato come basestation
–
Modello applicativo stand-alone
–
Accesso simultaneo alle librerie Sun SPOT e JSE
–
Stefano Sanna, Sun SPOT
17
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
18. Classi, dispositivi, sensori
La libreria standard dei Sun SPOT conta oltre 400
●
classi ed interfacce (circa il triplo di MIDP!)
La libreria contiene driver e classi di alto livello per
●
accedere alle interfacce fisiche dei dispositivi e
alle periferiche:
ILed, ILightSensor, IAccelerometer3D,
–
IFlashMemoryDevice, IPowerController,
IPWMOutput, IAT91_PIO, IAT91_IAC...
Stefano Sanna, Sun SPOT
18
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
19. Radio Communication
I Sun SPOT sono equipaggiati di un modulo radio
●
IEEE 802.15.4 per comunicazioni a corto raggio
La Communication API è basata sul Generic
●
Connection Framework fornisce:
RadioConnection (radio://) per scambio dati
–
attraverso stream
RadiogramConnection
–
(radiogram://) per
comunicazione a datagrammi
Stefano Sanna, Sun SPOT
19
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
20. Attenzione al saldatore!
Progettare circuiti ed effettuare cablaggi e
●
saldature richiede una certa esperienza
Un assemblaggio errato o un corto circuito
●
accidentale possono danneggiare le periferiche o
lo stesso Sun SPOT
Come sfruttare le potenzialità dei Sun SPOT senza
●
la necessità di attrezzarsi con un laboratorio di
elettronica?
Stefano Sanna, Sun SPOT
20
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
21. Divertimento per tutti!
La basestation permette di utilizzare il PC come
●
gateway per qualsiasi risorsa USB, IP, Bluetooth
Il kit LEGO Mindstorms NXT fornisce:
●
Un sistema semplice e flessibile
–
4 ingressi e 3 uscite
–
Interfacce USB e Bluetooth
–
La libreria Java open source iCommand consente un
–
accesso immediato alle API per il controllo remoto
del modulo NXT
Stefano Sanna, Sun SPOT
21
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
22. Controllo gestuale
Bluetooth
802.15.4
radio
USB
Stefano Sanna, Sun SPOT
22
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
23. Descrizione progetto
Gesture Controller
●
“Gira” su uno SPOT free-range
–
Legge l'inclinazione sugli assi X e Y
–
Invia i messaggi al Vehicle Controller
–
Vehicle Controller
●
“Gira” sulla basestation
–
Riceve i messaggi dal Gesture Controller
–
Invia i comandi al vehicle
–
LEGO Mindstorms NXT
Stefano Sanna, Sun SPOT
23
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
24. Gesture Controller /1
public class SunSpotApplication extends MIDlet {
private IAccelerometer3D accelerometer =
EDemoBoard.getInstance().getAccelerometer();
private ISwitch switch1;
private int st=0;
private RadiogramConnection conn;
protected void startApp() throws MIDletStateChangeException {
switch1 = EDemoBoard.getInstance().getSwitches()[0];
runSwitchWatcher();
}
Stefano Sanna, Sun SPOT
24
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
25. Gesture Controller /2
protected void pauseApp() {
// This will never be called by the Squawk VM
}
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
}
Stefano Sanna, Sun SPOT
25
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
26. Gesture Controller /3
private void runSwitchWatcher() {
Thread t1 = new Thread() {
public void run() {
sw1.waitForChange();
if (conn == null) {
try {
conn = (RadiogramConnection)
Connector.open(quot;radiogram://broadcast:133quot;);
startAccelerometerWatcher();
} catch (Exception e) { }
}
}
};
Stefano Sanna, Sun SPOT
26
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
27. Gesture Controller /4
public void startAcceWatchThread(){
Thread t2 = new Thread() {
public void run() {
while(true){
readTiltAndSend();
}
}
};
t2.start();
}
Stefano Sanna, Sun SPOT
27
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
28. Gesture Controller /5
private void readTiltAndSend() {
try {
int tiltX = (int) Math.toDegrees(acc.getTiltX());
int tiltY = (int) Math.toDegrees(acc.getTiltY());
String data = Integer.toString(tiltX) +
quot;#quot; + Integer.toString(tiltY);
send(data);
} catch (IOException ex) { }
try {
Thread.sleep(100);
} catch (InterruptedException ex) { }
Stefano Sanna, Sun SPOT
28
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
29. Gesture Controller /6
private synchronized void send(String data) {
if (conn != null) {
try{
Datagram datagram =
conn.newDatagram(conn.getMaximumLength());
datagram.writeUTF(data);
conn.send(datagram);
} catch(IOException e){ }
}
}
}
Stefano Sanna, Sun SPOT
29
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
30. Controller del veicolo /1
public class SunSpotHostApplication {
private static final int FORWARD = 0;
private static final int BACKWARD = 1;
private static final int RIGHT = 2;
private static final int LEFT = 3;
private static final int STOP = 4;
private int last = STOP;
private static Pilot pilot; // iCommand Java NXT Library
public static void main(String[] args) {
SunSpotHostApplication app = new SunSpotHostApplication();
startNXT();
app.start();
Stefano Sanna, Sun SPOT
30
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
31. Controller del veicolo /2
private static void startNXT() {
try {
NXTCommand.open();
pilot = new Pilot(2.1f,4.4f,Motor.A, Motor.C,true);
} catch(Exception e) {
e.printStackTrace();
}
}
Stefano Sanna, Sun SPOT
31
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
32. Controller del veicolo /3
public void run() {
try{
RadiogramConnection conn =
(RadiogramConnection) Connector.open(quot;radiogram://:133quot;);
Datagram dg = conn.newDatagram(conn.getMaximumLength());
while(true){
dg.reset();
conn.receive(dg);
String rawData = dg.readUTF();
String[] tokens = rawData.split(quot;#quot;);
moveVehicle(tokens[0], tokens[1]);
}
}catch(IOException e){ e.printStackTrace(); }
Stefano Sanna, Sun SPOT
32
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
33. Controller del veicolo /4
private void moveVehicle(String accelX, String accelY) {
int tiltX = (int) Double.parseDouble(accelX);
int tiltY = (int) Double.parseDouble(accelY);
if (tiltY > 15) {
if (last != BACKWARD) {
pilot.backward();
last = BACKWARD;
}
} else if (tiltY < -15) {
if (last != FORWARD) {
pilot.forward();
last = FORWARD;
}
}
Stefano Sanna, Sun SPOT
33
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
34. Controller del veicolo /5
else if (tiltX < -25) {
if (last != RIGHT) {
pilot.rotate(30);
last = RIGHT;
}
} else if (tiltX > 25) {
if (last != LEFT) {
pilot.rotate(-30);
last = LEFT;
}
} else {
if (last != STOP) {
pilot.stop();
last = STOP;
}
}
}
Stefano Sanna, Sun SPOT
34
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
35. Sun SPOT Open Grant Program
Are you a professor, student, or hobbyist?
●
Would you like to use wireless sensors in
your curriculum, research or project? Please
send us your interesting, creative proposals
for wireless sensor and embedded hardware
and software projects. Sun Labs will award
Sun SPOT Java Development Kits to the
projects we think will be most effective in
inspiring and expanding the Sun SPOT Open
Source community.
http://www.sunspotworld.com/proposals
Stefano Sanna, Sun SPOT
35
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
36. Conclusioni
L'uso massivo di sensori è la nuova frontiera
●
dell'interazione
I Sun SPOT sono la “cool Java way” per creare
●
“laboratori live” con i quali sperimentare scenari di
computazione ubiqua e pervasiva
Una ricca libreria di classe e la possibilità di
●
utilizzare il PC come gateway consentono
l'integrazione con servizi
Stefano Sanna, Sun SPOT
36
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
37. Risorse
Sun SPOT
●
http://www.sunspotworld.com
–
https://spots.dev.java.net/
–
Sun SPOTs and Java robotics on java.net
●
https://sunspot-robotics.dev.java.net/
–
http://community.java.net/robotics/
–
LEGO Mindstorms NXT
●
http://mindstorms.lego.com
–
http://lejos.sourceforge.net
–
Stefano Sanna, Sun SPOT
37
Sun Technology Day 2008, Cagliari, 13 Giugno 2008
38. Contatti
Stefano Sanna
●
http://www.gerdavax.it
–
JUG Sardegna ONLUS
●
http://www.jugsardegna.org
–
Stefano Sanna, Sun SPOT
38
Sun Technology Day 2008, Cagliari, 13 Giugno 2008