¿De qué maneras puedo hacer que mi circuito se comunique con una computadora?

8

Soy un novato en la piratería electrónica. Me gustaría saber cómo puedo hacer que un circuito se comunique con una PC. Tomemos, por ejemplo, un circuito simple, con un LED y un interruptor. Sin embargo, el interruptor del circuito no se usa para controlar el LED. Al presionarlo se comunica el estado actual del LED. Tengo un programa ejecutándose en mi computadora, que tiene una interfaz de usuario, un botón y un objeto gráfico; Un círculo lleno de negro.

  • Debería poder encender y apagar el LED desde mi computadora haciendo clic en el botón en la pantalla.
  • Al presionar el interruptor en el tablero, se debe comunicar al programa el estado del LED. Si el LED está encendido, el círculo negro debería volverse verde, de lo contrario debería volverse negro.

Esta es una situación hipotética que he descrito para explicar el problema. No estoy buscando una solución para implementar esto, pero quiero saber cómo se puede lograr esta comunicación entre mi circuito y la computadora, de una manera simple y económica.

  1. ¿cable?
  2. ¿inalámbrico?

Y si pudiera sugerir dónde debería mirar y qué debería aprender para comenzar con mi proyecto de electrónica, sería de gran ayuda.

sauparna
fuente

Respuestas:

17

Hay muchas maneras diferentes de lograrlo. Aquí hay algunos:

  1. Puede programar un microcontrolador pequeño como un Microchip PIC16F84A para mirar el botón y el LED. Cada vez que se presiona el botón, el PIC16F84A envía un carácter a través de un chip serie FTDI a un puerto USB de su computadora. En su computadora, un programa escrito en Processing mira el puerto USB y actualiza las imágenes en la pantalla. Costo total: $ 20 por algunas papas fritas y una placa de pruebas.

  2. Podrías comprar un Arduino Bluetooth con un escudo de prototipos. El Arduino habla sobre un chip Bluetooth a una tarjeta Bluetooth en su PC. Un programa escrito en Python escucha la tarjeta Bluetooth y dibuja la imagen apropiada en la pantalla con la biblioteca Pygame . Costo total: $ 150 por un Bluetooth Arduino.

  3. Puede conectar una cámara web a su PC que mira su LED y el botón. Un programa escrito en Ruby analiza cada imagen que proviene de la cámara web y la compara con la imagen anterior. Cuando detecta un cambio en la región de la imagen cerca del botón, observa el color de los píxeles en la región LED y actualiza un valor en una base de datos . Una página web se actualiza automáticamente con el complemento de temporizador jQuery y actualiza una imagen en la pantalla según el valor de la base de datos. Costo total: $ 25 por una cámara web horrible.

  4. Podría encontrar una PC vieja con un puerto paralelo e instalar Ubuntu Linux en ella. Conecta el LED y el botón a los pines en el puerto paralelo y luego escribe un programa en C que lee la dirección 0x378. Según los datos devueltos, realiza llamadas a una biblioteca de gráficos C que realiza el dibujo de pantalla apropiado. Costo total: gratis, si puede encontrar una PC lo suficientemente antigua.

  5. Usted reemplaza el botón de encendido en el equipo con el botón en cuestión, y la potencia del LED con el LED en cuestión. Reemplaza tu BIOS con una versión de OpenBIOS que se ha modificado para mostrar un círculo verde en la pantalla y nunca arrancas ningún sistema operativo. Costo total: probablemente el costo de una nueva PC.

Pero con toda seriedad

Creo que recomendaría un Arduino y Processing . Son simples y excelentes para principiantes. Costo total: $ 30 para el Arduino.

La mejor de las suertes.

pingswept
fuente
No necesita un BIOS especial para leer el estado del botón de encendido. Debería poder hacerlo desde Linux sin ningún hackeo del núcleo ni nada. Estoy bastante seguro de que puede configurar lo que sucede cuando se presiona el botón de encendido.
davr
2
Creo que Arduino y Processing deberían ser la mejor manera de comenzar.
sauparna
7

Ve a buscar el libro "Making Things Talk" de Tom Igoe: http://oreilly.com/catalog/9780596510510

No se trata de hablar, se trata de todos los diferentes métodos para hacer que sus diferentes dispositivos, por ejemplo, su computadora y su circuito, se comuniquen entre sí. En él, encontrará los detalles sangrientos de todos los métodos que las personas describen en las otras respuestas aquí, completas con diagramas de circuito y código fuente (cuando corresponda).

Si desea aprender alguna o todas las diferentes formas de hacer esto, no podría tener un mejor punto de partida.

Windell Oskay
fuente
6

Python + FT245

Suelte el módulo PyUSB y, de repente, solo se necesitan tres líneas (bueno, cuatro, si incluye la importación) de código para que Python se comunique con el espacio de la carne a través de 8 líneas paralelas de E / S.

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!

Es una E / S paralela muy simple de un lenguaje de alto nivel.

Como beneficio adicional, el hardware cuesta un total de $ 17.95

Connor Wolf
fuente
4

Echa un vistazo a TI Chronos

TI fabrica esta increíble familia de microcontroladores de 16 bits basada en el chip MSP430. Una variante de ese chip es el CC430, que tiene conexión inalámbrica integrada en el paquete.

El crono es un "tablero de desarrollo" que venden por 49 dólares. Viene en un factor de forma de reloj de pulsera (que uso todos los días, incluso está de moda fuera del mundo geek :-)) También viene con dos dongles USB, uno para el JTAG (programador) y otro es la contraparte inalámbrica.

Uno de los ejemplos en el panel de control es controlar el mouse de forma inalámbrica usando el reloj, lo cual es bastante bueno. El reloj también viene con acelerómetro, sensor de barómetro (altitud) y termómetro.

Padu Merloti
fuente
¡Mi Chronos llegará el viernes! En serio, sin embargo, esta es solo una forma un poco más compleja de la configuración PIC -> FTDI.
Kevin Vermeer
1

Con cable o inalámbrico es bastante sencillo en estos días. Puede obtener kits de bluetooth que ya le brindan E / S, y también puede comprar tarjetas de E / S USB muy económicas. Lo que desea utilizar depende totalmente de sus necesidades y su presupuesto.

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

Algo así (nunca lo usó, sin afiliación con la compañía) probablemente lo pondría en marcha muy rápidamente y con un mínimo de alboroto. Parecen estar disponibles en Digikey y Mouser, y probablemente también en otros.

akohlsmith
fuente
1

Suponiendo que su PC tiene un puerto serie, puede usar el USART en el chip y un transceptor RS-232 para comunicarse entre el chip y la PC. Si su PC no tiene un puerto serie, debe invertir en un convertidor USB <-> RS-232.

mjh2007
fuente
1

Si su principal interés es ponerlo en funcionamiento rápidamente, hay un montón de kits de E / S digitales basados ​​en USB que incluyen bibliotecas de programación para leer / escribir los estados de los pines. A diferencia de trabajar con Arduino u otras micro placas, esto significa que solo tiene que preocuparse por programar la PC (en lugar de tener que escribir y depurar el código que se ejecuta en la placa del microcontrolador).

Solía ​​ser que las entradas y salidas de cableado a través del joystick de una PC o el puerto paralelo eran el camino a seguir. Pero eso fue en los días de DOS y Windows hasta aproximadamente Windows 95. Desde entonces, el acceso directo a los registros para acceder al hardware se ha vuelto cada vez más difícil. Dicho esto, todavía es factible: solo tendrá que saltar a través de los aros de programación para llegar a esos pines de su programa. La base para computadora portátil de mi ThinkPad, por ejemplo, tiene el puerto paralelo de estilo heredado, y todavía es compatible con el sistema operativo, en caso de que decida conectar un LaserJet II. :)

Constructor de juguetes
fuente
0

Su método más rápido y fácil de hacerlo sería a través de Labview y los dispositivos de E / S USB asociados. Por supuesto, esto no es barato (miles de dólares). Lo que estás describiendo no es el nivel de entrada, definitivamente no es el nivel 'Hola Mundo'.

Además de gastar tanto dinero, probablemente sería mejor usar un Arduino y comunicarse con su programa por serie y hacer que el Arduino encienda y apague la luz.

AngryEE
fuente
Oh chico, no es tan fácil como pensé que sería. Gracias por esta perspectiva.
sauparna
Hay un paquete de LabVIEW Home Bundle (con licencia para uso no comercial aficionado / fabricante) disponible por $ 50. Esto se puede usar con Arduino, Raspberry Pi u otras placas de bajo costo para crear E / S desde una computadora, o crear software integrado para ejecutar en la placa. Aunque probablemente sea excesivo para este problema en particular en comparación con otras respuestas, el costo es razonable y las herramientas deberían ser muy capaces de usos mucho más complejos.
mbmcavoy