Quali sono i modi in cui posso comunicare il mio circuito con un computer?


8

Sono alle prime armi con l'hacking elettronico. Vorrei sapere come posso comunicare un circuito con un PC. Prendiamo ad esempio un circuito semplice, con un LED e un interruttore. L'interruttore sul circuito, tuttavia, non viene utilizzato per controllare il LED. Premendolo si comunica lo stato attuale del LED. Ho un programma in esecuzione sul mio computer, che ha per un'interfaccia utente, un pulsante e un oggetto grafico; un cerchio pieno di nero.

  • Dovrei essere in grado di accendere e spegnere il LED dal mio computer facendo clic sul pulsante sullo schermo.
  • Premendo l'interruttore sulla scheda, dovrebbe comunicare al programma lo stato del LED. Se il LED è acceso, il cerchio nero dovrebbe diventare verde, altrimenti dovrebbe diventare nero.

Questa è una situazione ipotetica che ho descritto per spiegare il problema. Non sto cercando una soluzione per implementare questa cosa, ma voglio sapere come questa comunicazione tra il mio circuito e il computer può essere raggiunta, in modo semplice, economico, oltre

  1. filo?
  2. senza fili?

E se potessi suggerire dove dovrei cercare e cosa dovrei imparare per iniziare con il mio progetto di elettronica, sarebbe di grande aiuto.

Risposte:


17

Esistono diversi modi per raggiungere questo obiettivo. Eccone alcuni:

  1. È possibile programmare un piccolo microcontrollore come un Microchip PIC16F84A per guardare il pulsante e il LED. Ogni volta che si preme il pulsante, PIC16F84A invia un carattere tramite un chip seriale FTDI a una porta USB del computer. Sul tuo computer, un programma scritto in Processing controlla la porta USB e aggiorna le immagini sullo schermo. Costo totale: $ 20 per alcune patatine e una breadboard.

  2. È possibile acquistare un Arduino Bluetooth con uno scudo di prototipazione. Arduino comunica tramite un chip Bluetooth con una scheda Bluetooth del PC. Un programma scritto in Python ascolta la scheda Bluetooth e disegna l'immagine appropriata sullo schermo con la libreria Pygame . Costo totale: $ 150 per un Arduino Bluetooth.

  3. È possibile collegare una webcam al PC che guarda il LED e il pulsante. Un programma scritto in Ruby analizza ogni immagine proveniente dalla webcam, confrontandola con l'immagine precedente. Quando rileva un cambiamento nella regione dell'immagine vicino al pulsante, osserva il colore dei pixel nell'area LED e aggiorna un valore in un database . Una pagina Web si aggiorna automaticamente utilizzando il plug-in timer jQuery e aggiorna un'immagine sullo schermo in base al valore nel database. Costo totale: $ 25 per una webcam schifosa.

  4. Potresti trovare un vecchio PC con una porta parallela e installare Ubuntu Linux su di esso. Collega il LED e il pulsante ai pin sulla porta parallela e quindi scrivi un programma in C che legge l'indirizzo 0x378. Basato sui dati restituiti, effettua chiamate in una libreria grafica C che esegue il disegno dello schermo appropriato. Costo totale: gratuito, se riesci a trovare un PC abbastanza vecchio.

  5. Si sostituisce il pulsante di accensione del computer con il tasto in questione, e il LED con il LED in questione il potere. Sostituisci il BIOS con una versione di OpenBIOS che è stata modificata per visualizzare un cerchio verde sullo schermo e non avviare mai alcun sistema operativo. Costo totale: probabilmente il costo di un nuovo PC.

Ma in tutta serietà

Penso che consiglierei un Arduino e un'elaborazione . Sono semplici e fantastici per i principianti. Costo totale: $ 30 per l'Arduino.

Buona fortuna.


Non è necessario un BIOS speciale per leggere lo stato del pulsante di accensione. Dovresti essere in grado di farlo da Linux senza l'hacking del kernel o altro. Sono abbastanza sicuro che puoi configurare cosa succede quando viene premuto il pulsante di accensione.
davr

2
Penso che Arduino e Processing dovrebbero essere il modo migliore per iniziare.
sauparna,

7

Vai a prendere il libro "Making Things Talk" di Tom Igoe: http://oreilly.com/catalog/9780596510510

Non si tratta di parlare, si tratta di tutti i diversi metodi per rendere i tuoi diversi dispositivi, ad esempio il tuo computer e il tuo circuito, in contatto tra loro. In esso, troverai i dettagli cruenti di tutti i metodi che le persone stanno delineando nelle altre risposte qui, completi di schemi circuitali e codice sorgente (ove appropriato).

Se desideri imparare uno o tutti i diversi modi per farlo, non potresti avere un punto di partenza migliore.


6

Python + FT245

Cadere il PyUSB del modulo, e improvvisamente ci vogliono solo tre righe (o meglio, a quattro, se si include l'importazione) di codice per ottenere Python parlare meatspace attraverso 8 linee parallele IO.

import d2xx
hardwareHandle = d2xx.open(0)
#Open the First FTDI device on the computer
hardwareHandle.setBitMode(0xff, 0x01)      
#Put the hardware in Async Bit-bang mode, set all pins as outputs

#Finally
hardwareHandle.write(data)
#And suddenly
#`data` shows up on the FT245 pins!

hardwareHandle.setBitMode(0x00, 0x01)
#set the IO lines to inputs (the first byte is the IO mask)
input = hardwareHandle.read()
#and input is equal to the value on the IO lines!

È un IO parallelo semplicissimo da un linguaggio di alto livello.

Come bonus, l'hardware costa un totale di $ 17,95


4

Dai un'occhiata a TI Chronos

TI rende questa fantastica famiglia di microcontrollori a 16 bit basata sul chip MSP430. Una variante di quel chip è il CC430, che ha il wireless integrato nel pacchetto.

Il chronos è una "scheda di sviluppo" che vendono per 49 dollari. Viene fornito in un fattore di forma di un orologio da polso (che uso ogni giorno, è anche di moda al di fuori del mondo dei geek :-)) Viene fornito anche con due dongle USB, uno per il JTAG (programmatore) e un altro è la controparte wireless.

Uno degli esempi in devboard sta controllando il mouse in modalità wireless usando l'orologio, il che è piuttosto interessante. L'orologio è inoltre dotato di accelerometro, sensore barometro (altitudine) e termometro.


Il mio Chronos arriverà venerdì! Scherzi a parte, questa è solo una forma leggermente più complessa della configurazione PIC -> FTDI.
Kevin Vermeer,

1

Al giorno d'oggi è cablato o wireless. Puoi ottenere kit bluetooth che ti offrono già I / O e puoi anche acquistare schede I / O USB molto economiche. Quello che vuoi usare dipende interamente dalle tue esigenze e dal tuo budget.

http://www.hexwax.com/Products/expandIO-USB/

Qualcosa del genere (mai usato, nessuna affiliazione con la società) probabilmente ti farebbe partire e correre molto rapidamente e con un minimo sforzo. Sembrano essere disponibili da Digikey e Mouser, e probabilmente anche da altri.


1

Supponendo che il tuo PC abbia una porta seriale, puoi semplicemente usare USART sul chip e un ricetrasmettitore RS-232 per comunicare tra il chip e il PC. Se il tuo PC non ha una porta seriale, dovresti investire in un convertitore USB <-> RS-232.


1

Se il tuo interesse principale è metterlo in funzione rapidamente, ci sono un sacco di kit di I / O digitali basati su USB che includono librerie di programmazione per leggere / scrivere gli stati dei pin. A differenza del lavoro con Arduino o altre micro-schede, ciò significa che devi solo preoccuparti di programmare il PC (invece di dover scrivere ed eseguire il debug del codice in esecuzione sulla scheda del microcontrollore).

In passato era il modo di fare il cablaggio degli ingressi e delle uscite tramite il joystick o la porta parallela di un PC. Ma era ai tempi di DOS e Windows fino a circa Windows 95. Da allora, accedere direttamente ai registri per accedere all'hardware è diventato progressivamente più difficile da fare. Detto questo, è ancora fattibile: dovrai solo saltare attraverso i cerchi di programmazione per ottenere quei pin dal tuo programma. Il dock per laptop del mio ThinkPad, ad esempio, ha la porta parallela in stile legacy ed è ancora supportato dal sistema operativo, se dovessi decidere di collegare un LaserJet II. :)



0

Il metodo più rapido e semplice per farlo sarebbe tramite Labview e i dispositivi I / O USB associati. Certo, questo non è economico (migliaia di dollari). Quello che stai descrivendo non è entry level, sicuramente non è il livello "Hello World".

Oltre a spendere tanti soldi, probabilmente saresti meglio usare un Arduino e comunicare con il tuo programma via seriale e fare in modo che Arduino accenda e spenga la luce.


Oh ragazzo, non è così facile come pensavo. Grazie per questa prospettiva.
sauparna,

Esiste un pacchetto LabVIEW Home (concesso in licenza per uso non commerciale / creatore di hobby) disponibile per $ 50. Può essere utilizzato con Arduino, Raspberry Pi o altre schede a basso costo per creare I / O da un computer o creare software incorporato da eseguire sulla scheda. Sebbene sia probabilmente eccessivo per questo particolare problema rispetto ad altre risposte, il costo è ragionevole e gli strumenti dovrebbero essere molto capaci di usi molto più complessi.
mbmcavoy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.