comandare il pc con un sensore muscolare

Ciao a tutti,
staimo cercando un aiuto per realizzare un progetto che permette a chi soffre di disabilita motoria grave di utilizzare un pc. Le tecnologie in questo settore non mancano ma i prezzi spesso le rendono inaccessibili ai più.
Navigando qua e la abbiamo visto che Arduino sembre essere la soluzione più economica e versatile per risolvere questo problema.
In pratica quello che vorremmo fare è collegare un sensore alla tempia o a qualsiasi muscolo e attravero arduino simulare la pressione di un tasto funzione...per esempio F12.
Attraverso questo gesto è possibile utilizzare un software, già in fase di test e realizzato da un amico, che permette di raggiugere qualsiasi area dello schermo e quindi di utilizzare il pc quasi al 100%.
In questo video si vede come funziona il software:

un semplice incrocio di assi cartesiani e una selezione di tasti (click singolo, doppio click, click destro, sposta, annulla, esci)
quello che intendiamo fisicamente fare è qui:

(la possibilità di cambiare canale con lo stesso strumento sarebbe la cigliegina sulla torta)
Il problema e che non siamo esperti di elettronica e avremmo bisogno di una guida passo passo...molto lento mi raccomando :), su come realizzare questo progetto: quale device è più adatta, che tipo di sensore e dove recuperarlo, il codice ...ecc .
io ci metto i soldi per i pezzi e le buona volonta, nonche il betatester (il ragazzo nel primo video)
in conclusione cerchiamo un buoni samaritani!

grazie a coloro che ci aiuteranno.

La cosa è sicuramente fattibile, il sensore da collegare alla tempia è da "inventarselo" oppure hai già qualcosa di pronto ?

Perchè non partire da qualcosa tipo questo?

L'idea è praticamente quella del video. Il sensore però dovrebbe essere singolo. Devo andare a vedere in un negozio di apparecchiature medicali che tipo di elettrodi o sensori ci sono in commercio. In rete sitrovano vari modelli ma ne trovo pochi che si possano usare singolarmente.
Riguardo la possibilità di inventarselo sarebbe molto bello anche perchè l'idea finale è quella di creare un prodotto che chiunque può ralizzare ed open source.
per cominciare mi sapreste indicare quale modello di arduino è il più adatto?
Il software per trasformare l'input in comando F12 è complicato o si trova già qualcosa di pronto?

omero:
Riguardo la possibilità di inventarselo sarebbe molto bello anche perchè l'idea finale è quella di creare un prodotto che chiunque può ralizzare ed open source.

Non è il mio settore di specializzazione, però se il sensore è un elettrodo, cioè andiamo a captare gli impulsi mioelettrici serve una parte analogica tutt'altro che semplice.

per cominciare mi sapreste indicare quale modello di arduino è il più adatto?
Il software per trasformare l'input in comando F12 è complicato o si trova già qualcosa di pronto?

Come scheda basta e avanza Arduino UNO, la connessione con il pc avviene tramite una porta seriale virtuale, cioè non vengono premuti dei tasti, ma vengono inviati dei singoli caratteri, o delle stringhe, che vanno ricevuti tramite la seriale.
Dato che il software lo state sviluppando voi non credo sia un problema leggere la porta seriale al posto della tastiera.

Ho trovato un pò di linee guida, molto interessanti, che spiegano a grandi linee con che grandezze si ha a che fare, come captarle e come condizionarle , per la successiva registrazione e analisi.
http://www.med.uni-jena.de/motorik/pdf/stegeman.pdf
esempio di costruzione industriale:
http://www.delsys.com/products/EMGSensors.html

molto interessante BB. se ho capito bene li parlano di un segnale di riferimento e di due elettrodi di lettura. e devono per forza essere due, giusto?

Si, devono essere almeo 2 i sensori e bisogna essere in grado di rilevare differenze di potenziale nell'ordine dei microvolts con frequenze di pochi hertz.
Da quello che ho letto , come materiale per i sensori, solitamente si usano materiali a base di argento, che oltre ad essere un'ottimo conduttore, reagisce anche poco con le secrezioni biologiche (sudore ecc...)
lo schema dell'interfaccia:

da tempo avevo trovato questo sito:

Il concetto credo che faccia al caso vostro.

http://www.eyewriter.org/

In pratica, questi ragazzi, tramite la webcam della play station sono riusciti ad utilizzare la pupillia dell'occhio come mouse.
Quindi dare la possibilità anche a chi non può muoversi di utilizzare un pc.

Questo idea penso faccia al coso vostro.

Ciao ciao

PS: non credo utilizzino arduino, ma il progetto è nobile e mi sentivo di pubblicare lo stesso.

bella l'idea dell'EyeTracker ma riprodurlo non è proprio così semplice.
Arduino sembra ottimo proprio perchè chiunque può farsi il suo sistema da solo.
Un sistema composta da: sensore- arduino- software (impulso muscolare-arduino-Invio o tasto Fxx) . In questo modo, trovato un sensore adeguato e magari che possa essere variato in base alle esigenze, chiunque acquistando arduino e scaricando il software puo avere in mano un oggetto dal potenziale altissimo per chi non può usare un pc normalmente.
secondo me il sensore diventa un problema secondario...
mi chiedo: se avendo il sw e arduino funzionanti (cioè riescono a invire al pc un comando) è possible colleare qualsiasi tipo di switch o sensore? a qualcuno potrebbe far comodo avere un piccolo interruttore a pressione, qualcun'altro collegato ad una camera che rileva la chiusura delle palpebre, qualcuno un microfono, ecc ecc.

a questo punto se il ragionametno è corretto il problema principale è il sw che traduca l'impulso in un tasto funzione (F12 ad esempio).
e de qui che il buon samaritano entra in azione!!! :slight_smile:

omero:
a questo punto se il ragionametno è corretto il problema principale è il sw che traduca l'impulso in un tasto funzione (F12 ad esempio).
e de qui che il buon samaritano entra in azione!!! :slight_smile:

Il problema è proprio il sensore, un conto è un pulsante e un conto è un elettrodo per captare le debolissime correnti legate ai movimenti muscolari.
Forse non ti rendi conto di quanto sia complessa e delicata la questione, ecco perché ti ho chiesto se hai già un sensore commerciale, cioè elettrodo e relativo amplificatore, oppure tocca inventarselo, nel secondo caso la realizzazione non è alla portata di tutti, serve perizia e serve la strumentazione per verificare che funzioni correttamente.
Per quanto riguarda la comunicazione tra Arduino e il PC ti ho già spiegato che Arduino non dialoga come emulazione tastiera, dialoga col pc tramite emulazione porta seriale, quindi non preme nessun tasto, può solo inviarti sulla seriale una lettera, o una sequenza di lettere e/o numeri.
Da un punto di vista puramente teorico l'interfaccia USB della UNO può essere riprogrammata per funzionare come emulazione tastiera, però poi non puoi più trasferire i programmi su Arduino e la cosa non è semplice ne da implementare ne da mettere in pratica senza disporre dei giusti strumenti di lavoro.

Quoto astrobeed in tutto.
La questione è esattamente l'opposto , cioè il sw sul pc che traduce la roba da seriale in keypress non sarebbe un problema, invece il sensore e l'interfaccia di condizionamento del segnale si.

Può però emulare una tastiera PS2....Arduino Playground - PS2Keyboard

perchè emulare la tastiera quando è già previsto un software sul pc?
il software potrebbe interpretare i dati inviati da arduino sulla usb/seriale ed associarli a delle simulazioni di pressione di tasti.
Vantaggi:
no altri cavi
no complicazioni nello sketch
no librerie aggiuntive
infondo non si deve poter scrivere con arduino, ma solo comandare i movimenti su due assi ed un click (tipo mouse ad un tasto).
tanto su windows esiste già la tastiera simulata comandabile con il mouse (provare a lanciare il comando "osk").

Vero :slight_smile:
era un idea :slight_smile:

perchè emulare la tastiera quando è già previsto un software sul pc?
il software potrebbe interpretare i dati inviati da arduino sulla usb/seriale ed associarli a delle simulazioni di pressione di tasti.

esatto! a noi non interessa che da arduino si arrivi a comandare un software. Arduino deve solo inviare il segnale F12 al software. poi fa tutto lui

questo è il contenuto del file di configurazione del suddetto software:
deltaY = 3
deltaX = 4
millisecondi = 10
fattore = 1
intervalloScansioneMenu = 1
spessore = 4
livelloTrasparenzaRighe = 80
input = tastiera
tastoAzione = F12 (questo è il tasto che deve "premere" Arduino)
tastoEsci = F9
tastoOpzioni = F11
tastoPausa = Space
elencoAzioni = ['doppio clic', 'fine trascinamento', 'inizio trascinamento', 'clic', 'clic destro', 'annulla']
upOrDown = down
coloreTrasparente = black
coloreTrasparenteNum = 0

riguardo al sensore ho trovato questi:

http://www.dfrobot.com/wiki/index.php?title=DFRobot_Digital_Vibration_Sensor_(SKU:DFR0027)
gia adatti per arduino.

Se posizionati sulla fronte con una fascetta le vibrazioni della contrazione muscolare potrebbero essere sufficenti ad attivarlo? serve una specia di amplificatore di segnale?

...mmm secondo mè non vanno bene, perchè o scattano troppo o troppo poco. :slight_smile:
non ho capito cosa fai con il tilt sensor :roll_eyes:
non ho capito nemmeno dove andrebbero applicati i sensori :stuck_out_tongue:

potebbero essere posizionati sulla fronte con una fascetta. quando si corruga la fronte si ha il movimento del sensore. pi dipenda dai casi.
anche questo sembra interessante DFRobot_Capacitive_Touch_Sensor__SKU_DFR0030_-DFRobot
se attaccato alla fronte.
visto il costo basso credo che appena mi arriva Arduino UNO li prenderò per fare delle prove.

ho anche visto un sensore di movimento a sfera, ma credo che rimangano le stesse perplessità delgi altri. :frowning:

consiglio per l'acquisto: ho trovato questo kit a 55euri :
"Starter kit con Arduino UNO. Contiene tutto il necessario per utilizzare questa piattaforma hardware open-source ormai diffusissima in tutto il mondo. La confezione comprende: Arduino UNO, cavo USB, mini Breadboard 170 contatti, 10 cavetti da 15 cm intestati ai capi con connettore maschio a 1 polo, piastra sperimentale (58,50 x 82,70 mm), 2 motori elettrici 3 Vdc / 300 mA, LED IR, ricevitore IR integrato, fotoresistenza, termistore, LED RGB, 10 LED rossi - 10 gialli e 10 verdi da 5 mm, buzzer 12V da C.S., 10 minipulsanti da C.S., CLIPS per batteria 9 Volt, altoparlante miniatura 8 ohm, micro interruttore di movimento, 10 transistor NPN BC547B, 2 potenziometri Slider 5 kohm, 10 resistenze da 330 ohm 1/4 di watt e 10 resistenze da 4,7 kohm 1/4 di watt."
sono spesi bene per iniziare?

i sensori capacitivi sono sensibili al tocco, come li impiegheresti?
forse si potrebbero usare dei sensori di piegamento come questi:

ma bisognerebbe fare delle prove e vedere se fissandolo verticalmente sulla fronte su due punti e corrugando la fronte, si riesce a piegarlo abbastanza da avere una variazione apprezzabile di resistenza da misurare con arduino.

mi inserisco un attimo nel post... ma gli elettrodi che si sono visti in precedenza per rilevare i mV nei fasci nervosi (suppongo...), sono o potrebbero essere gli stessi usati negli elettrostimolatori?
Tipo questi in sostanza...
http://cgi.ebay.it/4-SQUARE-TENS-ELECTRODE-PADS-REUSABLE-5cm-x-5cm-/110713477942?pt=UK_BOI_Medical_Lab_Equipment_Medical_Equipment_Instruments_ET&hash=item19c7099b36

Per il controllo mentale (forse la definizione non è molto appropiata), si potrebbero comunque usare gli elettrodi, per misurare ad esempio la variazione nelle onde alpha cerebrali, che se non ricordo male, variano in base alla concentrazione e all'utilizzo delle capacità motorie...

seppe