回路をコンピューターと通信させる方法は何ですか?


8

私はエレクトロニクスハッキングの初心者です。どうすればPCと通信できるのか知りたいです。たとえば、1つのLEDと1つのスイッチを備えた単純な回路を考えてみます。ただし、回路のスイッチはLEDの制御には使用されません。それを押すと、LEDの現在の状態が通知されます。私のコンピューターでは、UI、ボタン、グラフィックオブジェクトを実行するプログラムを実行しています。黒く塗りつぶされた円。

  • 画面のボタンをクリックして、コンピュータからLEDをオンまたはオフにできるはずです。
  • ボード上のスイッチを押すと、LEDの状態がプログラムに通知されます。LEDがオンの場合、黒い円が緑色になり、それ以外の場合は黒色になります。

これは、問題を説明するために説明した架空の状況です。私はこのことを実装するための解決策を探していませんが、私の回路とコンピューターの間のこの通信を簡単で安価な方法でどのように達成できるかを知りたいです

  1. ワイヤー?
  2. 無線?

そして、もし私がどこを見るべきか、そして私のエレクトロニクスプロジェクトを始めるために何を学ばなければならないかを提案することができれば、それは大きな助けとなるでしょう。

回答:


17

これを実現する方法はいくつかあります。ここにいくつかあります:

  1. Microchip PIC16F84Aのような小さなマイクロコントローラーをプログラムして、ボタンとLEDを監視できます。ボタンを押すたびに、PIC16F84AはFTDIシリアルチップを介してコンピューターのUSBポートに文字を送信します。コンピューターでは、Processingで作成されたプログラムがUSBポートを監視し、画面上の画像を更新します。総費用:一部のチップとブレッドボードで20ドル。

  2. プロトタイピングシールド付きのBluetooth Arduinoを購入できます。Arduinoは、Bluetoothチップを介してPCのBluetoothカードと通信します。Pythonで作成されたプログラムは、Bluetoothカードをリッスンし、Pygameライブラリを使用して適切な画像を画面に描画します。総費用:Bluetooth Arduinoで150ドル。

  3. LEDとボタンを監視するWebカメラをPCに接続できます。Rubyで作成されたプログラムは、Webカメラからのすべての画像を分析して、前の画像と比較します。ボタンの近くの画像の領域の変化を検出すると、LED領域のピクセルの色を確認し、データベースの値を更新します。WebページはjQueryタイマープラグインを使用して自動更新され、データベースの値に基づいて画面上の画像を更新します。総費用:安っぽいウェブカメラで25ドル。

  4. パラレルポートを備えた古いPCを見つけて、Ubuntu Linuxをインストールできます。LEDとボタンをパラレルポートのピンに接続し、アドレス0x378を読み取るプログラムをCで作成します。返されたデータに基づいて、適切な画面描画を行うCグラフィックライブラリを呼び出します。総費用:古くなったPCを見つけることができる場合は無料。

  5. あなたは、電源ボタンを置き換える問題のボタンを押すと、該当のLEDと電源LEDを使用してコンピュータ上で。BIOSを、画面に緑色の丸が表示されるように変更されたバージョンのOpenBIOSに置き換え、オペレーティングシステムを起動しないでください。総コスト:おそらく新しいPCのコスト。

しかし、真剣に

ArduinoProcessingをお勧めします。シンプルで初心者には最適です。合計費用:Arduinoの場合は30ドル。

幸運を祈ります。


電源ボタンの状態を読み取るために特別なBIOSは必要ありません。カーネルハッキングなどを行うことなく、Linuxから実行できるはずです。電源ボタンを押したときの動作を設定できると思います。
davr

2
ArduinoとProcessingが最初の最良の方法であるべきだと思います。
sauparna

7

Tom Igoeによる本「Making Things Talk」を入手してください:http : //oreilly.com/catalog/9780596510510

それはスピーチではなく、コンピューターや回路などのさまざまなデバイスが互いに対話するためのさまざまな方法すべてに関するものです。その中に、回路図とソースコード(適切な場合)を完備した、他の回答で人々が概説しているすべてのメソッドの悲惨な詳細があります。

これを実行するためのさまざまな方法のいずれかまたはすべてを学習したい場合、より良い開始点はありません。


6

Python + FT245

PyUSBモジュールをドロップすると、Pythonが8つのパラレルIOラインを介してミートスペースと通信するために必要なコードは、わずか3行(インポートを含めると4行)になります。

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クロノスを

TIは、MSP430チップをベースにしたこの素晴らしい16ビットマイクロコントローラファミリを製造しています。そのチップの1つのバリエーションは、パッケージにワイヤレスが組み込まれたCC430です。

クロノスは49ドルで販売される「開発ボード」です。それは腕時計のフォームファクターで提供されます(私は毎日使用しますが、オタクの世界の外でもおしゃれです:-))また、JTAG(プログラマー)用とワイヤレス対応のUSBドングルが2つ付属しています。

開発ボードの例の1つは、時計を使用してワイヤレスでマウスを制御することです。これはかなりクールです。時計には、加速度計、気圧計(高度)センサー、温度計も付属しています。


私のクロノスは金曜日に来ています!しかし、真剣に、これはPIC-> FTDIセットアップのもう少し複雑な形式です。
ケビンフェルメール

1

最近、有線または無線はかなり簡単です。すでにI / Oを提供するBluetoothキットを入手でき、非常に安価な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を接続することにした場合でも、OSでサポートされています。:)



0

そのための最も迅速で簡単な方法は、Labviewおよび関連するUSB​​ I / Oデバイスを使用することです。もちろん、これは安くはありません(数千ドル)。あなたが説明しているのはエントリーレベルではなく、「Hello World」レベルではありません。

それほど多くのお金を費やす以外に、おそらくArduinoを使用してシリアル経由でプログラムと通信し、Arduinoにライトをオンまたはオフにさせるのが最善でしょう。


ああ、それは思ったほど簡単ではありません。この視点をありがとう。
sauparna 2010

$ 50で利用可能なLabVIEW Homeバンドル(非営利目的の愛好家/メーカーでの使用が許可されたもの)があります。これは、Arduino、Raspberry Pi、またはその他の低コストのボードで使用して、コンピューターからI / Oを作成したり、ボードで実行する組み込みソフトウェアを作成したりできます。他の回答と比較してこの特定の問題にはおそらくやり過ぎですが、コストは妥当であり、ツールははるかに複雑な用途に非常に対応できるはずです。
mbmcavoy 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.