Usando GPIO no PC

9

Eu tenho um projeto simples no dispositivo host que deve acionar 2 pinos com alto nível lógico (tensão 3.3V, 5V ou 12V - não importa) e aguardar que outros 2 pinos sejam acionados em alto nível pelo dispositivo periférico.

Posso implementar esse dispositivo host com um PC padrão e qual hardware (interno ou extra) devo usar?

Andrey Pesoshin
fonte
2
Você deseja comprar algo como mccdaq.com ?
Kenny
1
Estou interessado, talvez o PC já tenha alguma funcionalidade interna (controlador, pinos) para meus propósitos? E se não - encontrar alguma solução para comprar (btw, obrigado pelo link!)
Andrey Pesoshin
1
Uma solução potencial, simples e econômica, seria usar algo como o MSP430 Launchpad, conectado ao PC via USB, programado em um ambiente de software semelhante ao Arduino, chamado Energia, tudo por US $ 4,30, incluindo S / H (Fedex 2 dias, mundialmente) ou uma placa DIY ainda mais barata, usando um AVR (como attiny85 com USB com bitbang) programado no lado do PC no Arduino (se você gosta ou prefere).
precisa saber é o seguinte

Respostas:

7

Não está claro o que você deseja que o PC faça e o que o dispositivo deve fazer ("dispositivo host" não faz sentido), mas parece que você deseja E / S digital básica de um PC.

Os PCs não são realmente projetados para E / S digital direta para dispositivos externos. Mas você pode comprar módulos de E / S digitais que se conectam ao PC via USB, o que permite ler e gravar sinais digitais individuais. Você pode fazer isso sozinho com um microcontrolador se comunicando com o PC através de uma porta COM.

No entanto, se este é realmente apenas um problema de controle simples, por que você precisa de um PC? Tenha um pequeno microcontrolador para executar toda a tarefa. É exatamente para isso que servem os microcontroladores. Eles são pequenos computadores com saída digital e outras linhas de E / S destinadas a se conectar diretamente ao hardware externo.

Olin Lathrop
fonte
1
Não temos uma descrição completa da funcionalidade desejada, mas meu palpite é que ele precisa de um flip-flop duplo SR. Que você pode emular com uma CPU de 1 bilhão de transistores :-).
stevenvh
1
obrigado pela sua resposta. Entendo que há uma enorme quantidade de soluções a serem executadas, mas queria perguntar com certeza sobre a conexão direta do dispositivo externo ao PC. Agora vejo que não posso fazê-lo diretamente, mas com controlador extra ou placa de E / S.
Andrey Pesoshin 18/10/12
@stevenvh eu simplificou a descrição de um projecto para uma melhor undestanding;) eu preciso esclarecer parte apenas interface
Andrey Pesoshin
13

Se você ainda pode encontrar uma, vale a pena mencionar que uma verdadeira porta paralela é tão próxima de um GPIO quanto você encontrará em um PC pronto para uso. As implementações clássicas carecem de flexibilidade, pois muitos dos pinos têm direção fixa e algumas são invertidas, mas as pessoas trabalham nisso há anos.

A maior limitação é que essas portas estão se extinguindo. As substituições mais abstratas, como conversores paralelos USB, normalmente são utilizáveis ​​apenas para controlar impressoras reais e não possuem registros que você pode ler / gravar diretamente para definir ou monitorar o estado dos pinos. Há rumores de que alguns possuem essa capacidade, mas eles podem ser difíceis de encontrar e requerem atenção detalhada aos motoristas.

Nesse ponto, tende a se tornar mais prático usar um dispositivo de E / S conectado a USB. Geralmente, este é um microcontrolador executando um firmware simples, do fabricante ou personalizado.

Uma grande vantagem de uma implementação personalizada é a possibilidade de descarregar as partes críticas de nível mais baixo, mais repetitivas e / ou cronometradas da manipulação de E / S para o processador no dispositivo, em vez de tentar fazê-lo no PC, onde a latência de A embalagem USB, atravessando vários barramentos e sistemas operacionais multitarefa tendem a tornar as operações bit a bit dolorosamente lentas.

Se você ainda não descobriu exatamente qual a forma da sua solução, uma possibilidade é pegar algo como um Arduino que é empacotado no sentido do hardware e da cadeia de ferramentas para facilitar o uso e pode operar como uma solução autônoma ou como auxiliar de E / S para executar tarefas de baixo nível sob comando de um PC conectado.

Chris Stratton
fonte
2
Se o OP escolher a rota da porta paralela, é importante notar que o sistema operacional baseado em NT (ou seja, qualquer sistema operacional Windows lançado na última década) exigirá um driver especial no modo kernel para acessar a porta paralela. Se você estiver usando uma versão do Windows com Política de Assinatura de Código no Modo Kernel (por exemplo, Vista / W7 x64, talvez até W7 x86), esse driver também precisará ser assinado digitalmente.
ajs410
1
grande resposta, eu votaria se se pudesse :-)
Andrey Pesoshin
1
@ ajs410 - esses requisitos de assinatura de código provavelmente se aplicam aos drivers de qualquer outra interface, como USB também. A única execução final possível pode ser usar algo para o qual o sistema operacional já fornece o código do driver e tudo o que é necessário é um arquivo de configuração / informações, por exemplo, uma porta virtual. Isso não é GPIO, mas pode ser usado como um canal de comando / status para conversar com um micro auxiliar que possui GPIOs.
Chris Stratton
8

Eu recomendo usar um FTDI FT232RL usando um driver especial que habilite o modo bitbang . Este método funcionará em praticamente todos os PCs e permite acesso de latência decente a um GPIO simples.
Existem muitas placas breakout de chips FTDI por aí, mas eu pessoalmente uso essa .

David Perek
fonte
obrigado pelo conselho, parece mais um hack, mas deve funcionar. Encontrei solução semelhante 8 CHANNEL USB GPIO MODULE
Andrey Pesoshin 19/10/12