Quais são as maneiras pelas quais posso fazer meu circuito se comunicar com um computador?

8

Eu sou um novato em hackers eletrônicos. Gostaria de saber como posso fazer um circuito se comunicar com um PC. Tomemos, por exemplo, um circuito simples, com um LED e um interruptor. O interruptor no circuito, no entanto, não é usado para controlar o LED. Pressionar comunica o estado atual do LED. Eu tenho um programa em execução no meu computador, que possui uma interface do usuário, um botão e um objeto gráfico; um círculo preto cheio.

  • Deveria poder ligar e desligar o LED do meu computador clicando no botão na tela.
  • Pressionando o interruptor na placa, deve comunicar ao programa o estado do LED. Se o LED estiver aceso, o círculo preto ficará verde, caso contrário, ficará preto.

Essa é uma situação hipotética que descrevi para explicar o problema. Não estou procurando uma solução para implementar isso, mas quero saber como essa comunicação entre o meu circuito e o computador pode ser alcançada, de uma maneira simples e barata, através

  1. fio?
  2. sem fio?

E se você pudesse sugerir onde eu deveria procurar e o que eu deveria aprender para começar meu projeto de eletrônica, isso seria de grande ajuda.

sauparna
fonte

Respostas:

17

Existem várias maneiras diferentes de conseguir isso. Aqui estão alguns:

  1. Você pode programar um pequeno microcontrolador como um Microchip PIC16F84A para assistir ao botão e ao LED. Sempre que o botão é pressionado, o PIC16F84A envia um caractere através de um chip serial FTDI para uma porta USB no seu computador. No seu computador, um programa escrito em Processamento observa a porta USB e atualiza as imagens na tela. Custo total: US $ 20 para algumas batatas fritas e uma tábua de pão.

  2. Você pode comprar um Arduino Bluetooth com um escudo de prototipagem. O Arduino fala sobre um chip Bluetooth com uma placa Bluetooth no seu PC. Um programa escrito em Python escuta o cartão Bluetooth e desenha a imagem apropriada na tela com a biblioteca Pygame . Custo total: US $ 150 para um Arduino Bluetooth.

  3. Você pode conectar uma webcam ao seu PC que observe o LED e o botão. Um programa escrito em Ruby está analisando todas as imagens provenientes da webcam, comparando-as com a imagem anterior. Quando detecta uma alteração na região da imagem próxima ao botão, observa a cor dos pixels na região do LED e atualiza um valor em um banco de dados . Uma página da Web é atualizada automaticamente usando o plug-in timer do jQuery e atualiza uma imagem na tela com base no valor no banco de dados. Custo total: US $ 25 para uma webcam ruim.

  4. Você pode encontrar um PC antigo com uma porta paralela e instalar o Ubuntu Linux nele. Você conecta o LED e o botão aos pinos na porta paralela e depois escreve um programa em C que lê o endereço 0x378. Com base nos dados retornados, ele faz chamadas para uma biblioteca de gráficos C que faz o desenho de tela apropriado. Custo total: grátis, se você encontrar um PC com idade suficiente.

  5. Você substitui o botão liga / desliga do computador pelo botão em questão e o LED de energia pelo LED em questão. Você substitui o BIOS por uma versão do OpenBIOS que foi modificada para exibir um círculo verde na tela e nunca inicializa nenhum sistema operacional. Custo total: provavelmente o custo de um novo PC.

Mas com toda a seriedade

Eu acho que eu recomendaria um Arduino e Processamento . Eles são simples e ótimos para iniciantes. Custo total: US $ 30 para o Arduino.

Boa sorte.

pingswept
fonte
Você não precisa de um BIOS especial para ler o estado do botão liga / desliga. Você deve conseguir fazer isso no Linux sem nenhum hacker do kernel ou qualquer coisa. Tenho certeza de que você pode configurar o que acontece quando o botão liga / desliga é pressionado.
davr
2
Eu acho que o Arduino e o Processamento devem ser a melhor maneira de começar.
Sauparna
7

Vá buscar o livro "Making Things Talk", de Tom Igoe: http://oreilly.com/catalog/9780596510510

Não se trata de fala, trata-se de todos os diferentes métodos de fabricação de dispositivos diferentes - por exemplo, seu computador e seu circuito - conversam entre si. Nele, você encontrará os detalhes sangrentos de todos os métodos que as pessoas estão descrevendo nas outras respostas aqui, completas com diagramas de circuitos e código fonte (quando apropriado).

Se você deseja aprender alguma ou todas as maneiras diferentes de fazer isso, não poderia ter um ponto de partida melhor.

Windell Oskay
fonte
6

Python + FT245

Solte o módulo PyUSB e, de repente, são necessárias apenas três linhas (bem, quatro, se você incluir a importação) de código para que o Python fale com o meatspace por meio de 8 linhas IO paralelas.

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!

É uma E / S paralela simples de um idioma de alto nível.

Como bônus, o hardware custa um total de US $ 17,95

Connor Wolf
fonte
4

Dê uma olhada no TI Chronos

A TI faz essa incrível família de microcontroladores de 16 bits, baseada no chip MSP430. Uma variante desse chip é o CC430, que possui conexão sem fio incorporada no pacote.

O Chronos é uma "placa de desenvolvimento" que eles vendem por 49 dólares. Ele vem em um formato de relógio de pulso (que eu uso todos os dias, ainda está na moda fora do mundo dos nerds :-)) Ele também vem com dois dongles USB, um para o JTAG (programador) e outro é o equivalente sem fio.

Um dos exemplos na devboard é controlar o mouse sem fio usando o relógio, o que é bem legal. O relógio também vem com acelerômetro, sensor de barômetro (altitude) e termômetro.

Padu Merloti
fonte
Meu Chronos está chegando na sexta-feira! Sério, porém, essa é apenas uma forma um pouco mais complexa da configuração do PIC -> FTDI.
Kevin Vermeer
1

Com ou sem fio é bastante simples nos dias de hoje. Você pode obter kits bluetooth que já oferecem E / S e também comprar placas de E / S USB muito baratas. O que você deseja usar é inteiramente de acordo com suas necessidades e seu orçamento.

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

Algo assim (nunca o usei, nenhuma afiliação com a empresa) provavelmente o levaria a funcionar muito rapidamente e com um mínimo de barulho. Eles parecem estar disponíveis na Digikey e na Mouser, e provavelmente em outros também.

akohlsmith
fonte
1

Supondo que o seu PC tenha uma porta serial, você pode simplesmente usar o USART no chip e um transceptor RS-232 para se comunicar entre o chip e o PC. Se o seu PC não possui uma porta serial, você deve investir em um conversor USB <-> RS-232.

mjh2007
fonte
1

Se o seu principal interesse é colocá-lo em funcionamento rapidamente, há vários kits de E / S digitais baseados em USB que incluem bibliotecas de programação para ler / gravar os estados dos pinos. Ao contrário do trabalho com o Arduino ou outras placas micro, isso significa que você só precisa se preocupar em programar o PC (em vez de precisar escrever e depurar o código em execução na placa do microcontrolador).

Costumava ser a fiação de entradas e saídas através do joystick de um PC ou porta paralela. Mas isso foi nos dias do DOS e do Windows, até o Windows 95. Desde então, o acesso direto aos registros para acessar o hardware ficou progressivamente mais difícil. Dito isto, ainda é possível - você só precisará pular os bastidores da programação para obter os pinos do seu programa. A dock para laptop do meu ThinkPad, por exemplo, possui a porta paralela de estilo herdado e ainda é suportada pelo sistema operacional, caso eu decida conectar um LaserJet II. :)

Construtor de brinquedos
fonte
1

Existem alguns dispositivos USB simples e agradáveis ​​que podem fazer isso, por exemplo, o Kadtronics USB Digital I / O Commander .

Rocketmagnet
fonte
0

Seu método mais rápido e fácil de fazer isso seria via Labview e dispositivos de E / S USB associados. Claro, isso não é barato (milhares de dólares). O que você está descrevendo não é o nível de entrada, definitivamente não é o nível 'Hello World'.

Além de gastar tanto dinheiro, você provavelmente seria melhor usar um Arduino e se comunicar com seu programa via serial e fazer com que o Arduino acenda e desligue a luz.

AngryEE
fonte
Oh garoto, não é tão fácil quanto eu pensei que seria. Obrigado por esta perspectiva.
precisa saber é o seguinte
Há um LabVIEW Home Bundle (licenciado para uso não-comercial por hobby / criador) disponível por US $ 50. Isso pode ser usado com o Arduino, Raspberry Pi ou outras placas de baixo custo para criar E / S a partir de um computador ou criar software incorporado para executar na placa. Embora provavelmente exagere nesse problema em particular em comparação com outras respostas, o custo é razoável e as ferramentas devem ser muito capazes de usos muito mais complexos.
Mbmcavoy