使电路与计算机通信的方式有哪些?


8

我是电子黑客的新手。我想知道如何使电路与PC通信。以一个带有一个LED和一个开关的简单电路为例。但是,电路上的开关不用于控制LED。按下它可以传达LED的当前状态。我的计算机上运行着一个程序,其中包含一个UI,一个按钮和一个图形对象。黑色实心圆圈。

  • 我应该能够通过单击屏幕上的按钮来打开和关闭计算机上的LED。
  • 按下板上的开关,应将LED的状态传达给程序。如果指示灯点亮,则黑色圆圈应变为绿色,否则应变为黑色。

我已经描述了一个假设的情况来解释问题。我不是在寻找实现此问题的解决方案,而是想知道如何以一种简单,廉价的方式来实现电路与计算机之间的通信。

  1. 线?
  2. 无线?

而且,如果您可以建议我应该去哪里看以及应该如何学习电子项目,那将对您有很大的帮助。

Answers:


17

您可以通过多种方法来实现此目的。这里有一些:

  1. 您可以对诸如Microchip PIC16F84A之类的小型微控制器进行编程,以观察按钮和LED。每当按下按钮时,PIC16F84A都会通过FTDI串行芯片将字符发送到计算机上的USB端口。在您的计算机上,用Processing处理的程序监视USB端口并更新屏幕上的图片。总成本:一些芯片和面包板20美元。

  2. 您可以购买带有原型屏蔽的蓝牙Arduino。Arduino通过蓝牙芯片与PC中的蓝牙卡对话。用Python编写的程序会侦听蓝牙卡,并使用Pygame库在屏幕上绘制适当的图片。总成本:蓝牙Arduino的价格为$ 150。

  3. 您可以将网络摄像头连接到PC上,以监视LED和按钮。用Ruby编写的程序正在分析来自网络摄像头的每个图像,并将其与前一个图像进行比较。当它检测到按钮附近的图像区域发生变化时,它将查看LED区域中像素的颜色并更新数据库中的值。网页使用jQuery计时器插件自动刷新,并根据数据库中的值更新屏幕上的图像。总费用:一个app脚的网路摄影机$ 25。

  4. 您可以找到带有并行端口的旧PC并在其上安装Ubuntu Linux。您将LED和按钮连接到并行端口上的引脚,然后在C中编写一个程序,读取地址0x378。根据返回的数据,它会调用C图形库,以进行适当的屏幕绘制。总费用:免费,如果您可以找到足够老的PC。

  5. 计算机上的电源按钮替换为相应的按钮,将电源LED替换为相应的LED。您将BIOS替换为已修改为在屏幕上显示绿色圆圈的OpenBIOS版本,并且从不引导任何操作系统。总成本:可能是一台新PC的成本。

但说真的

我认为我建议使用ArduinoProcessing。它们非常简单,非常适合初学者。总成本:Arduino为30美元。

祝你好运。


您不需要特殊的BIOS即可读取电源按钮的状态。您应该能够从Linux上做到这一点,而不会受到任何内核黑客攻击或任何其他攻击。我很确定您可以配置按下电源按钮时发生的情况。
davr 2010年

2
我认为Arduino和Processing应该是最好的开始方式。
sauparna'8

7

去获得汤姆·伊戈(Tom Igoe)的《做事情的话题》一书:http : //oreilly.com/catalog/9780596510510

这不是关于语音,而是关于使不同设备(例如计算机和电路)相互交谈的所有不同方法。在其中,您将在此处的其他答案中找到人们概述的所有方法的详细内容,并附有电路图和源代码(在适当的地方)。

如果您想学习任何或所有不同的方法来进行此操作,那么您将没有一个更好的起点。


6

Python + FT245

放下PyUSB模块,突然间它只需要三行代码(如果包括导入,就需要四行代码)来使Python通过8条并行IO行与Meatspace进行通信。

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!

从高级语言来看,它是非常简单的并行IO。

作为奖励,硬件总价为$ 17.95


4

看看TI Chronos

德州仪器(TI)基于MSP430芯片制造了这一出色的16位微控制器系列。该芯片的一种变体是CC430,其封装中嵌入了无线功能。

chronos是一个“开发板”,售价为49美元。它具有手表的外形尺寸(我每天都在使用,甚至在极客世界之外它都很时尚:-))还带有两个USB加密狗,一个用于JTAG(编程器),另一个用于无线配对。

开发板上的一个示例是使用手表无线控制鼠标,这非常酷。该表还配备了加速度计,气压计(高度)传感器和温度计。


我的Chronos星期五要来了!严重的是,这只是PIC-> FTDI设置的稍微复杂一点的形式。
凯文·维米尔

1

如今,有线或无线非常简单。您可以获得已经为您提供I / O的蓝牙套件,还可以购买非常便宜的USB I / O板。您要使用的完全取决于您的需求和预算。

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

诸如此类的东西(从不使用它,与公司没有任何隶属关系)可能会使您快速启动并运行,并且花费最少。它们似乎可以从Digikey和Mouser以及其他公司那里获得。


1

假设您的PC有一个串行端口,您就可以使用芯片上的USART和RS-232收发器在芯片和PC之间进行通信。如果您的PC没有串行端口,则应购买USB <-> RS-232转换器。


1

如果您最感兴趣的是使其快速启动并运行,则有很多基于USB的数字I / O套件,其中包括用于读取/写入引脚状态的编程库。与使用Arduino或其他微板不同,这意味着您只需要担心对PC进行编程(而不必编写和调试在微控制器板上运行的代码)。

过去,必须通过PC的操纵杆或并行端口对输入和输出进行接线。但这是在DOS和Windows以及直到Windows 95左右的日子。从那时起,直接访问寄存器以访问硬件变得越来越困难。话虽如此,它仍然是可行的-您只需要跳过编程箍即可从程序中获取这些引脚。例如,我的ThinkPad笔记本电脑扩展坞具有旧式并行端口,如果我决定插入LaserJet II,它仍受操作系统支持。:)



0

您最快,最简单的方法是通过Labview和相关的USB I / O设备。当然,这并不便宜(数千美元)。您所描述的不是入门级别,绝对不是“ Hello World”级别。

除了花费那么多钱之外,您可能最好使用Arduino并通过串行与程序通信并让Arduino打开和关闭灯。


天哪,这并不像我想象的那么容易。感谢您的观点。
sauparna'8

LabVIEW Home Bundle(许可用于非商业爱好者/制造商使用)价格为50美元。可以与Arduino,Raspberry Pi或其他低成本板一起使用,以从计算机创建I / O,或创建嵌入式软件以在板上运行。尽管与其他答案相比,该特定问题可能会造成过大杀伤力,但其成本是合理的,并且工具应具有非常复杂的用途。
mbmcavoy '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.