独自のUSBガジェットを作成する方法を学びたい


29

私はしばらくの間、他の人のもののためにLinuxキャラクターデバイスドライバーを書いてきました。新しい趣味を見つけたいのですが、自分のUSBギズモを作成するという考えは本当にすてきです。

いくつかのLED、サーボ、およびステップモーターを制御できることに興奮しています。自分で新しいことを学び、最終的に何かがうまくいったときの興奮を本当に楽しんでいます。本格的なMCプログラミングは行っていませんが、私のやり方は知っています。

誰でも完全な初心者に役立ついくつかのキットを推奨できますか?理想的には、次のとおりです。

  • Linuxフレンドリー
  • 国際的に出荷可能(現在アジアに住んでいます)
  • ブレッドボードキットを提供する

時間があれば、他の人のサイトの回路図や部品リストを含むプロジェクトへのリンクをいただければ幸いです。私は例から勉強したいのですが、良い例です。だから私はここで尋ねています。

私の最終的な目標は、降雨から平均デシベル、光レベルまで、すべてのデータコレクターを作成することです。これが以前に尋ねられた場合は申し訳ありませんが、検索(およびタグの検索)を行いました。

回答:


26

Arduinoのは本当に人気があり、それがオープンソースハードウェアなので、バリエーションがあるサードパーティ製を含め、Freeduinosは呼ばベアボーンボード本当にベアボーンボード、およびBoarduinoブレッドボードで使用するための非常にいいです、。標準のArduinoは、シールドと呼ばれるものを使用して適応されます。独自のブレッドボードシールドを作成するか、このProtoShieldキットのようなものを購入できます

ArduinoはFTDI USB-RS232チップまたはケーブルを使用します。[標準のArduinoには組み込まれていますが、ほとんどのブレッドボードにはチップを内蔵した特別なケーブルが使用されており、費用を節約できます。] Linux、Mac OS XおよびWindows用の組み込みドライバーがあります。ユーザーはドライバーをダウンロードできます。事実上、これはArduinoがシリアルポートで通信するデバイスとして機能することを意味するため、非常に簡単に通信できます。

それを使用するには、ソフトウェアもダウンロードします。IDE、AVR-GCCツールチェーン、非常に優れたライブラリ、プログラムをチップにアップロードするソフトウェアが付属しています。それはあなたから詳細のほとんどを隠し、素晴らしいコミュニティを持っています。「Wiring」と呼ばれる言語でプログラムされていますが、実際にはC ++です。

最後に、オープンソースのハードウェアである回路図があります。実際、以前のモデルを構築するのはかなり簡単だったことを読んだことを思い出すようです。お気に入りの検索エンジンで「Arduino回路図」を検索すると、良い結果が得られます。

キットに関しては、Maker ShedArduino関連のアイテムを多数取り揃えています。彼らは世界中に出荷するようです。興味のあるものが含まれます:

ウルフデンショップ(米国)には、優れた実験キットがあり、国際的に出荷されているようです。

Solarbotics(カナダ)には、ARDX Arduino実験キットFreeduinoスターターバンドル-UltimateおよびArduinoスターターバンドル-Basic(およびUltimate)があり、国際的に出荷されているようです。

メインのArduinoの「購入」ページのリストには、世界中のすべての分野でのベンダーをArduinoの。

私がチェックする他の場所には、Adafruit IndustriesSparkfun Electronics(両方とも米国)があります。


1
ワオ。あなたがそのような有益な答えをした時間をありがとう!
ティムポスト

3
それはよかった。答えを書いた後、「インターネットで質問に答えるのに40分かかったなんて信じられない!」と思いました。
クリントンブラックモア

1
すばらしい投稿ですが、すべてのArduinosがFTDIチップを使用しているわけではないことに注意してください。たとえば、ドライバーがインストールされていないOS XでArduino Uno R3を使用します。(その1つはUSB通信にAtmega 16U2を使用しています。)
エスケープ

12

Arduinoは、電子ガジェットを構築したいときに開始する優れたツールであり、データロガーを構築するという最終的な目標につながる可能性があります。ただし、旧式のシリアルポートをエミュレートするため、実際のUSB開発には適していません。他のもの(ヒューマンインターフェイスデバイス(マウス/キーボード)や大容量記憶装置(カードリーダー/リムーバブルドライブ)など)にすることはできません。

「実際の」USBガジェットを作成する場合は、Jan Axelsonのサイトをご覧ください。彼は、USBに関する「初心者向け」の本を書いています。このレベルでUSBを使用するガジェットを開発するのは初心者には向かないかもしれませんが、Arduinoの経験は間違いなくあなたを助けてくれます。


リンクありがとうございます。「トレーニングホイール」が外れたら必ずチェックします:)
ティムポスト

それはかなり真実ではない... ArduinoのレオナルドとすべてAtmega32u4ベースのボードを使用すると、HIDおよびその他のカスタムデバイスを作成してみましょうことができます
ドミトリーGusarov

8

Tuxgraphics AVR USBスライドショープレゼンターチュートリアルを強くお勧めします。Atmel AVRマイクロコントローラーを使用します。これには、大規模な趣味コミュニティ(avrfreaksなど)と、obdev.orgのオープンソースソフトウェアのみのusb1.1スタックがあります。非常に大きくスケールアップすることはできませんが(大容量ストレージなど)、最終製品は2つの割り当て可能な押しボタンを備えた小さなUSB HIDキーボードです。データロガーとして使用するのはささいなことであり、obdev.orgのいくつかの例はそれだけです(www.obdev.at/products/vusb/projects.html)。それはきれいなcで書かれており、部品リストはせいぜい数ドルです。

同時に、tuxgraphics avrusb500プログラマーを作成または購入することをお勧めします。使用する喜びであり、私が所有する最も信頼できる機器の1つです。(私は提携していない-ただ非常に満足している顧客!)


8

私が調べたかった別のデバイスはAT90USBKeyです。私はそれを調べてからしばらく経ちましたが、Windowsなしでプログラムできるかどうかはわかりませんが、USBデバイス(キーボードや大容量記憶装置など)またはUSBホストとして機能します他のデバイスを接続します。サンプルプログラムが用意されていますが、電子工学について少し知っていて、Cでコーディングできれば、かなり簡単に作業できます。

AT90USBKeyとLinuxをGoogleで検索すると、有望な結果が得られます。

DigiKey.caから入手できます。私はアジアに相当するデジキーを探しました; Farnellから部品を入手できます。


リンクされたサイトによると、Jtagを介してボードをプログラムできるようです。
SingleNegationElimination


6

最終的にArduinoを使用する場合は、V-USB(以前のAVR-USB)ライブラリを移植して実行しました。また、対話を容易にするためにクラスでラップされています。

キーボード、マウス、ジョイスティックなど、USB HIDデバイスを作成できます。Python、C、Processingなどから、ホストでlibusbを使用して制御する汎用デバイスを作成することもできます。

私のサイトには、USBソケットといくつかの抵抗器などを使用して作成できるPCBシールドがあります。

http://code.rancidbacon.com/ProjectLogArduinoUSB

次のように簡単にキーストロークを送信するArduinoコードを作成できます。

UsbKeyboard.sendKeyStroke(KEY_ENTER);

または、libusb「ドライバー」を使用すると、次のようなデータを送信できます。

UsbStream.write(0xff)

または、以下を使用してデータを読み取ります。

UsbStream.read()

-フィリップ;


5

現在、AVR-USBベースの開発者用ボードが多数あります。

私は個人的に前述のTeensyとBumble-Bを使用しましたが、どちらも素晴らしいと思います。

Teensyは素晴らしいものです。Arduino環境と非常にうまく統合できるからです。これは、低レベルのUSBコードを自分で処理する代わりに、「Mouse.init; Mouse.move(x、y)」のようなことを実行できることを意味します。ただし、必要に応じて両方ともLUFAを実行します。



4

Object Developmentは、AVRマイクロコントローラー用のライブラリを作成しました。これにより、非常に安価なUSBデバイスを自分で作成できるようになりました(わずか2〜3ドルから)。AVRのGCCはLinuxに対応しています。数百のデバイスがすでに作成されています。こちらをご覧くださいhttp : //www.obdev.at/products/vusb/projects.html


0

どの種類のUSBガジェットを作りたいか、そしてどの程度高度なレベルかによって異なります。LEDの点滅に言及しています。この種の制御は、uartとftdiチップを備えたあらゆる種類のマイクロコントローラーで簡単に実現できます(arduinoは非常に人気があり、簡単に開始できます)。ftdiチップはuCにシリアルに接続し、シリアル<-> USBコンバーターのように動作します。また、コンピューター上の仮想COMポートとして表示されます。

より高度なusbプロトコル、ドライバー、および機能を利用したい場合は、ネイティブusb機能を備えたuCを入手できます。たとえば、マイクロチップには、これを行うことができる多くの写真(マイクロコントローラー)があります。Microchipには、USBの使用を学習するための専用の開発ボードも多数あります。Atleast Microchips 32ビットuCはホストモードとotgモードもサポートしているため、データを一般的なUSBメモリスティックに保存するデータロガーを構築し、コンピューターに接続してデータを読み取ることができます。(他の多くのメーカーも同様のICと開発キットを持っていると確信していますが、私が使用したのはMicrochipだけです)

Microchipのホームページ/ USB


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.