Fare pratica odontoiatrica con robot


Di recente visita dal dentista e come sempre un po’ di paura 🙂 probabilmente accresciuta dopo aver visto negli scorsi giorni il filmato allegato.
Nel prossimo futuro, in Giappone sicuramente, in Europa credo ancora di no, potreste incorrere in questo robot: Showa Hanako 2, presentato gioved� scorso in Giappone dal Professore Koutaro Maki, docente alla Showa University School of Dentistry, il robot sar� venduto attraverso una societ� di fornitura dentale. L’automa � stato realizzato per aiutare gli studenti di studio dentistico. Il robot � incredibilmente realistico, a tal punto che pu� manifestare tutti i movimenti di un paziente sottoposto a visita dentaria: soffoca, pu� tossire, starnutire, muove la lingua e manifestare dolore alla mascella.
La lingua e le braccia hanno due gradi di libert�, in modo che il robot pu� mimare un paziente che inizia ad agitarsi, mentre un dentista tenta di eseguire la profilassi. La pelle � fatta di silicone e la lingua e la guancia e tutti i rivestimenti sono realizzati in un unico pezzo, cos� che tutto sembri pi� reale, senza nessuna cuciture gomma in modo che l’acqua usata durante la visita non danneggi la macchina.
Durante la conferenza di presentazione il Professore Koutaro Maki ha spiegato che con questo robot gli studenti avranno la sensazione di lavorare con un paziente reale in modo che riescano a percepire la tensione che vi � durante una visita reale.

Pare quindi che l’aspetto realistico dell’artefatto sia essenziale per l’apprendimento dei giovani dentisti quindi un futuro sempre pi�… Blade Runner 🙂

fonte: popsci.com

Interfacciare Arduino e Lego Mindstorms

Nuove possibilit� per la realizzazione di progetti didattici sulla robotica.
Nelle curvature che si stanno delineando per l’Istituto Professionale � molto probabile che l’approccio agli apprendimenti di informatica e robotica, nei primi due anni di corso, avvenga con kit Lego Mindstorms NXT2 e nei successivi anni l’integrazione avverr� studiando in modo molto approfondito sistemi a microcontrollori per la progettazione di sistemi robotici e nello specifico Arduino, come gi� ho incominciato a fare in questo anno scolastico.
Il punto di unione, tecnico, che potrebbe rendere agevole il passaggio graduale da Lego ad Arduino si potrebbe realizzare, con l’interfaccia in via di sviluppo: NXShield per Arduino di mindsensors.com dotata di 4 porte per sensori NXT e diverse porte RC per i servomotori. NXShield pu� essre collegata ad Arduino Duemilanove o Uno o cloni Arduino.
La programmazione per l’NXShield potr� essere effettuata usando l’ambiente di programmazione di Arduino.
Inoltre interessantissime novit� l’8 di luglio per quanto riguarda Android…

Arduino LilyPad – lezione 03: controlliamo l’accensione di un led con un pulsante

Questa lezione ha lo scopo di realizzare un sistema che rilevi il cambiamento di stato e per far ciò costruiremo un rudimentale pulsante con due fili alle cui estremità vi sono delle pinzette a coccodrillo, quando i due fili saranno collegati, vorrà dire che il pulsante è chiuso, quando i due fili saranno scollegati il pulsante sarà aperto.

Per questo esperimento utilizzeremo due connettori alle cui estremità sono collegati dei morsetti a coccodrillo, prima di procedere vi consiglio di ritagliare una cartoncino di forma circolare con stesse dimensioni di LilyPad, ciò eviterà che le pinzette scivolino e che grattino la base inferiore isolata della scheda.

Passo 1

avrete bisogno di:

  • un cartoncino
  • una matita
  • un paio di forbici

tracciate una circonferenza prendendo come riferimento LilyPad

Passo 2

ritagliate lungo il bordo, fate in modo che la circonferenza tagliata sia leggermente più grande.

Passo 3

In questo modo il morsetto a coccodrillo dovrebbe avere una presa sicura senza il pericolo di scivolare e buon contatto elettrico.



Procedete allo stesso modo per i sensori e gli attuatori che collegherete a LilyPad mediante le pinzette a coccodrillo, anche per essi ritagliate dei cartoncini anti scivolamento.

Programmazione

Passo 1

Collegate un coccodrillo nero al morsetto negativo (indicato con -) ed il coccodrillo bianco al morsetto digitale 2, come indicato nell’immagine:

Quando collegate i due coccodrilli insieme vorrà dire che chiudete il circuito (interruttore chiuso) ed elettricamente vuol dire che collegate il pin digitale 2 direttamente a terra o “-“.

Vi ricordo che in Arduino “-” vuol dire “terra” e in Processing viene rappresentato con “LOW”, mentre “+” o “+5V” e in Processing  viene indicato con “HIGH”.

Passo 2

copiate il codice che segue in una finestra vuota:

int ledPin = 13;	                    // il LED e' connesso al pin digitale 13
int switchPin = 2;	                    // switch e' connesso al pin digitale 2
int switchValue;	                    // una variabile che tiene traccia quando il pulsante viene premuto

void setup()
{
  pinMode(ledPin, OUTPUT);	            // ledPin viene definito come pin di output
  pinMode(switchPin, INPUT);	            // switchPin viene definito come pin di input
  digitalWrite(switchPin, HIGH);            // poniamo di default switchPin ad HIGH (non premuto)
}	 

void loop()                                 // loop del programma
{
  switchValue = digitalRead(switchPin);	    // verifica se il pulsante e' premuto
  if (switchValue == LOW) {	            // se il pulsante e' premuto allora,
    digitalWrite(ledPin, HIGH);	            // accende il LED
  }
  else {	                            // altrimenti,
    digitalWrite(ledPin, LOW);	            // il led viene spento
  }
}

All’interno del loop:

viene memorizzato lo stato del pulsante in switchValue con

switchValue = digitalRead(switchPin);

Se il pulsante non è premuto switchValue assumerà il valore assegnato nel setup():

digitalWrite(switchPin, HIGH);

Poiché il circuito non è chiuso verso terra il LED rimarrà spento.

La condizione dell’IF:

..(switchValue == LOW)..

non risulta vera e quindi sarà eseguita la parte else dell’IF

digitalWrite(ledPin, LOW);

cioè il LED risulterà spento.

Se colleghiamo i coccodrilli, switchValue assumerà il valore “LOW” in quanto collegato direttamente alla terra (morsetto nero) e la condizione dell’IF

if (switchValue == LOW)

risulterà verà e quindi sarà eseguita la parte del codice:

digitalWrite(ledPin, HIGH);

e quindi il LED verrà acceso.

Bene! avete realizzato il vostro secondo scketch per LilyPad.

Nelle successive lezioni vedremo come collegare altri sensori ed attuatori a LilyPad.

Vecchi ricordi: HP48SX

In questi giorni sono di aiuto trasloco per la sorella ed in uno scatolone in cantina tra i vecchi appunti dell’universit�, parti di computer ormai non pi� utilizzabili, ho riportato alla luce un reperto archeologico di molti anni fa che non pensavo pi� di ritrovare, la mia stupenda calcolatrice scientifica interfacciabile HP48SX (link 1link 2). Da bravo archeologo tecnologico ho provveduto a sistemarla, smontata completamente, pulita, ho fatto traslocare il piccolo ragnetto che si era allocato nel vano batteria, batterie nuove e magicamente la compagna di tanti esami � rinata! Matrici, numeri complessi, studio di funzioni…
Continuer� ad avere un posto sulla mia scrivania 🙂

Personalizzazione dell’IDE Arduino

Durante la scrittura dei miei appunti sull’uso di Arduino LilyPad, poiché ho scritto le lezioni on-line su due computer diversi, un desktop ed un portatile, mi sono accorto che non ho spiegato come ottimizzare l’uso dell’interfaccia utente, cosa che ho effettuato sul mio portatile variando la dimensione dei font della finestra di programmazione. Oltre al font potete effettuare molte altre modifiche, vediamo come fare.

La modifiche delle preferenze dell’IDE può essere effettuata in due modi:

  • direttamente dall’interfaccia utente
  • modificando il file di configurazione preferences.txt

Modifica dall’interfaccia utente

Agendo in questo modo potete modificare solamente una parte delle preferenze, ma comunque la finestra fa riferimento ad alcuni parametri che si trovano sempre nel file di configurazione dell’IDE: preferences.txt

In ambiente Mac andate in:

Arduino -> Preferences…

Si aprirà il pannello di configurazione:

Potete modificare ad esempio la dimensione del font, la posizione della cartella di default degli sketch ed altro.

Provate ad esempio a modificare la dimensione del font. Nella figura ho messo a confronto le dimensioni dei caratteri di uno stesso sketch:

Notate che nella versione 0021 per MacOS X l’interfaccia presenta un errore, viene indicato che per rendere effettiva la modifica bisogna riavviare l’IDE, ciò non risulta vero sotto MacOS X le modifiche sono immediate e non è necessario riavviare l’IDE.

Modifica dall’interfaccia agendo sul file: preferences.txt

Il file preferences.txt è un file di proprietà Java formato da coppie chiave/valore, la sua collocazione è differente in funzione del sistema operativo:

Windows XP
Documents and Settings -> [username] -> Application Data -> Processing -> preferences.txt

Windows Vista
Users -> [username] -> AppData -> Roaming -> Processing -> preferences.txt

Mac OS X
~/Library -> Processing -> preferences.txt

Linux
~/.processing -> preferences.txt

Ricordate che il carattere “~” indica la propria cartella “Home” quindi nel mio caso la cartella si trova nella mia Home directory come evidenziato nelle immagini in allegato (per semplicità di lettura ho suddiviso l’intera finestra in due parti)

Il file preferences.txt:

 
last.sketch5.location=321,361,778,665,469
last.sketch8.path=/Users/maffucci/Documents/Arduino/AccendiLed6/AccendiLed6.pde
export.application.fullscreen=false
preproc.imports.list=java.applet.*,java.awt.Dimension,java.awt.Frame,java.awt.event.MouseEvent,java.awt.event.KeyEvent,java.awt.event.FocusEvent,java.awt.Image,java.io.*,java.net.*,java.text.*,java.util.*,java.util.zip.*,java.util.regex.*
last.sketch7.location=40,245,629,603,460
editor.font.macosx=Monaco,plain,10
preproc.web_colors=true
last.sketch2.path=/Users/maffucci/_Applications/utility/Arduino.app/Contents/Resources/Java/examples/2.Digital/toneMelody/toneMelody.pde
export.application.platform=true
update.check=true
update.id=3675482826083210692
editor.indent=true
serial.stopbits=1
serial.databits=8
editor.font=Monaco,plain,10
editor.window.height.default=600
run.options.memory=false
editor.divider.size=0
editor.caret.blink=true
preproc.color_datatype=true
export.applet.separate_jar_files=false
last.sketch3.path=/Users/maffucci/_Applications/utility/Arduino.app/Contents/Resources/Java/examples/2.Digital/toneMelody/toneMelody.pde
preproc.output_parse_tree=false
run.window.bgcolor=#FFFFFF
console.lines=4
upload.using=bootloader
console.error.file=stderr.txt
run.options.memory.maximum=256
editor.tabs.expand=true
editor.window.height.min=450
editor.keys.home_and_end_travel_far=true
board=lilypad328
console=true
run.present.exclusive.macosx=true
last.sketch4.path=/Users/maffucci/_Applications/utility/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/examples/Scroll/Scroll.pde
serial.parity=N
editor.tabs.size=2
console.length=500
last.sketch0.location=42,46,698,544,401
serial.port=/dev/tty.usbserial-A8004wec
last.sketch2.location=181,68,599,716,573
run.options=
console.auto_clear=true
update.last=1309266218530
last.sketch4.location=497,42,778,665,469
editor.window.width.min=400
run.present.exclusive=true
export.application.platform.linux=true
last.sketch6.location=918,284,778,665,469
last.sketch5.path=/Users/maffucci/Documents/Arduino/AccendiLed9/AccendiLed9.pde
editor.keys.home_and_end_travel_far.macosx=true
editor.window.height.min.windows=530
run.present.bgcolor=#666666
export.application.platform.windows=true
last.sketch8.location=291,30,670,668,525
target=arduino
run.options.memory.initial=64
editor.keys.alternative_cut_copy_paste=false
editor.window.width.default=500
console.output.file=stdout.txt
preproc.substitute_unicode=true
run.present.stop.color=#cccccc
editor.external=false
last.screen.height=768
last.sketch6.path=
editor.keys.shift_backspace_is_delete=true
editor.window.height.min.macosx=450
last.sketch.count=1
export.delete_target_folder=true
last.sketch0.path=/Users/maffucci/Documents/Arduino/LilyPad02/LilyPad02.pde
preproc.substitute_floats=true
editor.keys.alternative_cut_copy_paste.macosx=false
browser.linux=mozilla
editor.invalid=false
serial.debug_rate=9600
sketchbook.path=/Users/maffucci/Documents/Arduino
last.sketch7.path=/var/folders/9V/9VbLBBZuEBmK-V04gmH1Ik+++TI/-Tmp-/untitled2986358644260397561.tmp/sketch_mar18c/sketch_mar18c.pde
export.application.stop=true
editor.divider.size.windows=2
last.sketch1.path=/Users/maffucci/Documents/Arduino/LilyPad02/LilyPad02.pde
preproc.enhanced_casting=true
run.display=1
last.sketch1.location=75,54,698,544,401
platform.auto_file_type_associations=true
editor.antialias=false
last.sketch3.location=181,68,599,716,573
preproc.save_build_files=false
last.screen.width=1366
export.application.platform.macosx=true

Proviamo ad esempio ad attivare l’output dettagliato della compilazione ed il caricamento di uno sketch.

inserite la seguente coppia di chiave/valore:

build.verbose=true

provate a caricare ad esempio il programma “blink” e provate ad fare click sul bottone “Verify” o sul pulsante “Upload” otterrete una schermata simile a quella della figura che segue:

Diversamente da quella che si otterrebbe normalmente senza l’introduzione della chiave/valore: build.verbose=true

come in figura:

Nelle ultime versioni dell’IDE è possibile ottenere le stesse informazioni premendo il tasto Maiuscolo (shift) quando fate click su “Verify” o “Upload”.

Ricordate per rendere attive le modifiche dovete chiudere il file preferences.txt e riavviare l’IDE.
Tutte le modifiche preferences.txt devono essere fatte con l’IDE chiuso. Fate attenzione che se modificate il file preferences.txt con IDE aperto, tutte le modifiche che fate verranno sovrascritte con la precedente versione di preferences.txt e quindi al successivo avvio dell’IDE non vedrete le modifiche apportate.