Introduzione alla tecnologia Sun SPOT

2,950 views

Published on

Slide del seminario tenuto al Javaday di Roma, 1 dicembre 2007. Traduzione e adattamento della presentazione fatta ai Sun Tech Days di Milano.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,950
On SlideShare
0
From Embeds
0
Number of Embeds
210
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduzione alla tecnologia Sun SPOT

  1. 1. Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Introduzione alla tecnologia Sun SPOT Stefano Sanna http://www.gerdavax.it Derivata e adattata da: Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  2. 2. Cos'è il Javaday? Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Organizzato direttamente 2007 dalla collaborazione della community Java, gira l'Italia con passione Javaday è un evento unico nel mondo! 2006 L' edizione romana è a cura di Jug Roma Java Italian Portal Java Italian Association Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  3. 3. Java User Group Italiani Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  4. 4. Speaker Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Senior developer @ beeweeb technologies ● Autore del libro “Java Micro Edition” ● Hoepli Editore - 2007 – Technical writer @ DEV, Computer ● Programming, Java Journal... Supporter @ JUG Sardegna, JMDF, JIA, GULCh ● Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  5. 5. Programmare il mondo reale Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  6. 6. Sensori: nuova frontiera Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  7. 7. I sensori nel mondo Java ME Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  8. 8. Introduzione ai Sun SPOT Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  9. 9. Hardware Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  10. 10. Hardware Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  11. 11. SPOTs Software Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  12. 12. Free-range e Base Station Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Il Sun SPOT Development Kit fornisce: ● Due SPOT free-range equipaggiati con processor – board, interfaccia radio, demo sensor board e batteria Una basestation, con – processor board e interfaccia radio SDK per Windows, – Mac OS X e Linux Cavo USB – Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  13. 13. Sviluppo Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  14. 14. Due tipi di applicazioni Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  15. 15. Classi, dispositivi, sensori Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  16. 16. Radio Communication Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 a – stream RadiogramConnection – (radiogram://) per comunicazione a datagrammi Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  17. 17. Attenzione al saldatore! Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  18. 18. Divertimento per tutti! Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  19. 19. Controllo gestuale Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Bluetooth 802.15.4 radio USB Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  20. 20. Descrizione progetto Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  21. 21. Gesture Controller /1 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License public class SunSpotApplication extends MIDlet { private IAccelerometer3D accelerometer = EDemoBoard.getInstance().getAccelerometer(); private ISwitch switch1; Riferimento all'accelerometro private int st=0; private RadiogramConnection conn; protected void startApp() throws MIDletStateChangeException{ switch1 = EDemoBoard.getInstance().getSwitches()[0]; runSwitchWatcher(); } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  22. 22. Gesture Controller /2 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License protected void pauseApp() { // This will never be called by the Squawk VM } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  23. 23. Gesture Controller /3 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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) { } } } }; t1.start(); } Avvia la connessione client wireless e il thread che leggi Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS i dati dall'accelerometro Javaday Roma - 01/12/2007
  24. 24. Gesture Controller /4 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License public void startAccelerometerWatcher(){ Thread t2 = new Thread() { public void run() { while(true){ readTiltAndSend(); } } }; t2.start(); } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  25. 25. Gesture Controller /5 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 { Legge l'inclinazione corrente e la invia Thread.sleep(100); } catch (InterruptedException ex) { } } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  26. 26. Gesture Controller /6 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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){ } Un nuovo Datagram contiene il messaggio che sarà inviato } attraverso la RadiogramConnection } } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  27. 27. Controller del veicolo /1 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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(); Inizializza la libreria iCommand e } avvia il modulo server Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  28. 28. Controller del veicolo /2 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License private static void startNXT() { try { NXTCommand.open(); pilot = new Pilot(2.1f,4.4f,Motor.A, Motor.C,true); } catch(Exception e) { e.printStackTrace(); } } Apre la connessione seriale e inizializza il veicolo a due motori Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  29. 29. Controller del veicolo /3 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License public void run() { try{ RadiogramConnection conn = (RadiogramConnection) Connector.open(quot;radiogram://:133quot;); Datagram datagram = conn.newDatagram(conn.getMaximumLength()); while(true){ La connessione server datagram.reset(); riceve i Datagram. Il thread conn.receive(datagram); ne legge il contenuto, decodifica gli angoli String rawData = datagram.readUTF(); di inclinazione e String[] tokens = rawData.split(quot;#quot;); comanda il veicolo LEGO moveVehicle(tokens[0], tokens[1]); } }catch(IOException e){ e.printStackTrace(); } } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  30. 30. Controller del veicolo /4 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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; Il valore dell'inclinazione sugli assi X e Y determina } il movimento del veicolo } else if (tiltY < -15) { if (last != FORWARD) { pilot.forward(); last = FORWARD; } } Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  31. 31. Controller del veicolo /5 Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  32. 32. Conclusioni Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License I sensori sono la nuova frontiera dell'interazione ● I Sun SPOT sono la quot;cool Java wayquot; ● 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  33. 33. Risorse Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Sun SPOT World ● http://www.sunspotworld.com – 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 - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  34. 34. Presentazioni su Sun SPOT Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007
  35. 35. Contatti Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License Stefano Sanna ● http://www.gerdavax.it – JUG Sardegna ONLUS ● http://www.jugsardegna.org – Stefano Sanna - http://www.gerdavax.it – JUG Sardegna ONLUS Javaday Roma - 01/12/2007

×