Your SlideShare is downloading. ×
  • Like
  • Save
Introduzione alla tecnologia Sun SPOT
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Introduzione alla tecnologia Sun SPOT

  • 2,624 views
Published

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

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,624
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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