2014-10-27 29 views
5

Sono un fisico, e alcune settimane fa ho avuto una rivelazione su come potrei essere in grado di utilizzare il mio personal computer per ottenere un controllo più preciso sugli esperimenti di laboratorio di quanto non sia in genere. Prima di scappare per provarlo, volevo verificare la fattibilità con persone che hanno più esperienza di me in materia.Hacking hardware del computer per eseguire il controllo degli esperimenti

L'idea è di utilizzare le porte I/O --- VGA, ethernet, jack per altoparlanti, ecc .--- sul computer per parlare direttamente con i sensori e gli attuatori nella configurazione sperimentale. Per esempio. aprire un lato di un cavo Ethernet (con l'altra estremità collegata al computer) e inviare ogni linea a un altro dispositivo. Conoscevo un postdoc che faceva qualcosa di molto simile usando un BeagleBone. Ha scritto un codice assembly che gli ha permesso di sincronizzare tutto con l'orologio interno e ha usato i pin GPIO per dargli un generatore/oscilloscopio ibrido di segnale completamente programmabile. Sembra che la stessa cosa dovrebbe essere possibile con un laptop, e questo avrebbe l'ulteriore vantaggio di poter fare analisi dei dati dallo stesso dispositivo.

La principale difficoltà potenziale che prevedo è che l'hardware su un BeagleBone è stato progettato pensando a questo tipo di I/O, mentre mi aspetto che l'hardware su un laptop sarà probabilmente più difficile da controllare direttamente. So per esempio (da alcune indagini preliminari, http://ask.metafilter.com/125812/Simple-USB-control-how-to-blink-an-LED-via-code) che le porte USB saranno difficili da accedere in questo modo, e VGA è (secondo VGA 15 pin port data read and write using Matlab) impossibile. Non ho trovato nulla sull'utilizzo di altre porte come Ethernet o altoparlanti jack, però.

Quindi la domanda principale è: questa idea sarà fattibile (senza investire molti mesi per ogni nuova variazione dell'hardware), e in tal caso quale tipo di I/O (ethernet, jack per altoparlanti, ecc.) È probabile che essere la migliore scommessa?

domande ausiliari sono:

  1. Dove posso trovare il materiale per imparare come potrei andare circa l'esecuzione di questo piano? Non sono nemmeno sicuro di quali parole chiave inserire su Google.

  2. La facilità con cui posso farlo dipende fortemente dal sistema operativo o dalla marca hardware?

+1

le porte lowly parallele contengono almeno 8 switch veloci (> 64khz) per l'output e 8 "pulsanti" rapidi (sensori corti) per l'input e sono implementati leggendo/scrivendo scrivendo un singolo indirizzo di memoria con un valore di 8 bit, alias un byte. per l'input, puoi incidere un gamepad USB e conduttori di saldatura economici sui contatti della membrana del pulsante, offrendoti un controller di ingresso discreto a 10 canali per meno di $ 20. Le uscite del PC dal – dandavis

+1

sono più difficili, ma le opzioni a basso costo includono luci numlock, altoparlanti, gamepad vibrazione/feedback, LED flash drive USB (disco ping per attivare), espulsione di un cassetto rom, fotosensori e rettangoli lampeggianti su un monitor, e naturalmente : molte cose che compri per il compito (boo). – dandavis

+0

La maggior parte dei PC moderni è molto povera nel reparto I/O semplice e le interfacce (ad esempio USB) tendono ad essere sorprendentemente ad alta latenza. Se si desidera un accoppiamento ravvicinato con il mondo reale, è necessario un processore integrato con GPIO diretto, ad esempio il SOC ARM, sul beaglebone del proprio amico e non un laptop consumer. –

risposta

0

L'unico cavo mi viene in mente per un pc che può avvicinarsi a questo sarebbe un cavo parallelo che è praticamente andato via. È un cavo a 25 fili in cui i dati sono distribuiti in modo da poter inviare più dati contemporaneamente. Non sono sicuro di poter indirizzare una linea specifica o se è più una sinistra da compilare man mano che i dati vengono inviati.

Per utilizzarne uno su un laptop oggi sarebbe sicuramente difficile. Non troverai portatili con porte parallele. Ci sono cavi da USB a parallelo e cavi da seriale a parallelo, ma suppongo che l'unico controllo lo avresti sull'interfaccia USB o seriale e non sul parallelo.

Come per Ethernet, hai 4 doppini intrecciati con solo 2 paia in uso e 2 paia extra.

C'è dell'hardware disponibile chiamato Zwave che potrebbe essere utile esaminare. Zwave ti permetterà di costruire una rete di dispositivi che comunicano in una mesh. Non sono sicuro di quale tipo di tempo di risposta ti serva.

In realtà ho appena pensato a qualcosa che potrebbe essere una buona soluzione. Controlla l'equipaggiamento di sicurezza. Ci sono molte attrezzature disponibili per PC che monitorano porte, finestre, sensori, ecc. Quell'industria potrebbe essere ciò che stai cercando.

0

Penso che il modo più semplice sarebbe utilizzare la porta USB come dispositivo HID (Human Interface Device) e utilizzare un programma PIC personalizzato e un PIC che includa la funzionalità USB per codificare i dati da inviare al computer e in questo modo è possibile programmarlo indipendentemente dal sistema operativo, poiché tutti i principali SO hanno la funzionalità HID USB.

In ogni caso se si è utilizzata la MIC/VGA/HDMI qualunque altra porta è ancora necessario un dispositivo per codificare i dati o trasmetterli e un altro programma all'interno del computer per decodificare i dati inviati.

E ricorda che l'hardware diverso ha diversi software (driver) che potrebbero decodificare i dati grezzi in altri modi strani rendendo il tuo hardware IO dipendente.

Spero che questo aiuti, ma questo è il motivo per cui l'USB è stato inventato in primo luogo per renderlo indipendente dall'hardware e dall'OS.