ATtiny45直接USB 2.0接続のフ&ー ム&アと回路


9

USB経由でPCにデータを送信するだけのATtiny45使用して、独自のモジュラーUSBデバイスを作成したいと考えています。私はデータを読み取っていないので、片道(ATtiny-> PC)接続で完全に問題ありません。

Arduino UnoをISPとして使用し、Arduinoソフトウェア内からロードされた標準のArduinoISPスケッチを使用しています。AVRDUDEを使用して、ArduinoをISPとしてATtiny45をプログラミングすることを考えています。これは、HEXにコンパイルされたCコードを使用できるようにしたいのです。

回路に関する私の基本的な考え: ここに画像の説明を入力してください

ご覧のとおり、「直接」のUSB接続が必要です。これまでのところ、ソフトウェアベースのソリューションを使用する必要があることを知っています。

  1. 私はATtiny45で動作するようにSoftwareSerialを管理しました。このために、私はArduinoソフトウェアを使用して、次のコードでATtiny45をプログラミングしました:

    #include <SoftwareSerial.h>
    #define rxPin 3
    #define txPin 4
    SoftwareSerial serial(rxPin, txPin);
    
    void setup() {
        pinMode(rxPin, INPUT);
        pinMode(txPin, OUTPUT);
        pinMode(led, OUTPUT);     
        serial.begin(4800);
    }
    
    void loop() {
        serial.println("1");
        delay(1000);
    }
    

    私はピン3(まだ)を使用していませんが、SoftwareSerial用に定義する必要があることに注意してください。

    このように、SoftwareSerialを使用して、ATtinyから、このテストのために空白のスケッチがロードされているArduino UNOのTXピンにデータを直接送信することができました。私がArduinoソフトウェアのシリアルモニターを使用してCOM4(私の場合)のデータを読み取っていたのは、プログラムされたATtinyをUSBケーブルに直接接続しようとしたため、PCがデバイス(COMポート)を認識しなかったためです。

    残念ながら、シリアルモニターで奇妙なUnicode文字しか表示されませんでした。データが16進形式かそれくらいだからだと思います。USBとATtiny45の間にUSB /シリアルコンバーターを接続する必要があることに気づきました。そのようなコンバーターを探しましたが、すべてのものが必要なので、既製のボードは使いたくありません。単一のボード上の私のコンポーネント。私のプロジェクトではFTDIチップは「多すぎる」と思いますね。(ピンが小さすぎてはんだ付けできません...)

  2. V-USBはUSB /シリアルコンバーターを必要としないため(私の知っているように)、2番目のアプローチでした。したがって、V-USBを使用するには、前述のようにAVRDUDEを使用する必要があります。

    私はこの素晴らしいV-USB EasyLoggerの例を見つけました。回路設計とサンプルファームウェアが含まれています。(C / C ++ / HEX)

    私が知りたい唯一のことは、回路を例に示すようにする必要がありますか?-> ここに画像の説明を入力してください

この種類のUSB接続について他に何を知る必要がありますか?(なぜUSB /シリアルコンバーターが必要なのですか?+5とVCCを接続するだけでいいのですか?絶対に必要なコンポーネントは何ですか?TXを介して送信する必要のある信号の種類は何ですか?hex-どんな電圧が必要ですか?することが ? )

ご回答ありがとうございます。


更新

ここにいくつかの点で私を本当に助けたいくつかの追加のリンクがあります。しかし、私はそれを完全に理解していませんでした...

最初のもの-> http://www.ernstc.dk/arduino/tinycom.html

2番目-> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino([ シリアル出力]セクションまでスクロールダウンします


2
はい、少なくとも電気的制限の仕様に過度に違反したくない場合は、そうします。上の図の「USB」コネクタのラベルが著しく誤っていることに注意してください。D + / D-は別個の送信ラインと受信ラインではなく、双方向の差動ペアです。
Chris Stratton

悪いスケッチでごめんなさい。私は本当に電気屋ではなく、プログラマーです。「ドローイング」は、このプロジェクトを計画しているときに頭に浮かんだ私の考えを視覚化したものにすぎません。
エース

回答:


5

FTDIコンバーターがなくても、ATtiny45をUSBに直接通信できます。

すべてを機能させるには、V-USBライブラリが必要です。

機能するすべての非常に良い例がここにあります。EasyLoggerの同じ例を使用しています。

同じ作者が他にもUSBとuC に関するすばらしいヒントやプロジェクトを持っています。

ATtinyを使った回路例:

概略図

この回路のシミュレーションCircuitLabを使用して作成された回路


質問者はすでにV-USBを見てきました。
Ignacio Vazquez-Abrams

どうもありがとうございます。できるだけ早くこれを試します。しかし、最初に、V-USB libでATtiny45をプログラムするための適切な方法をあなたに尋ねたいと思います。これまでのところ、私はブートローダーをロードする必要があることを知っていますか??? 小さなだけでなく、ファームウェア(hexファイル??)アプリケーションのコードを変更した後、Cコード(たとえば、easyloggerの例)をコンパイルする必要があると思います。正しい ?
エース

また、回路を最小限に「簡略化」していただけますか。たとえばLEDが原因で混乱します...この時点では、LEDやセンサーなどの追加のコンポーネントは本当に必要ありません。
エース

そしてD2とD3はどのようなダイオードですか?ショットキーダイオード?
エース

また、ヒューズビットはどうですか?あなたがリンクした投稿の最後に、ヒューズについて何か言っていますか?ヒューズに何か問題があったら、小さなものを台無しにできると聞きました。
エース

5

基本的に、USBは信号線レベルの駆動、タイミング、および終端に関する特定の要件を持つ高レベルの通信プロトコルです。シリアルほど単純ではありません。差動データラインとNRZIエンコーディング、必要なポーリング、ハンドシェイクなどがあります。それが、USB /シリアルアダプターが必要な理由、またはUSBハードウェアまたはソフトウェアの実装が必要な理由です。

USBは5V電源を使用しますが、信号線は実際には3.3V〜3.6Vです。これが、表示するVUSB回路がこれら2つのラインでツェナーダイオードを使用する理由です。Tinyは3.3Vで必要な16MHzでクロックすることができないため、3.3Vで単純に実行することはできません。

残りのパーツ、R1-R3、D1、D2、およびC1、C2は最低限必要なパーツです。それはあなたが得る機能に本当に多くを求めているのではありません。vusbを使用するすべてのプロジェクトのリストについては、このページを参照してください。

スイッチ、R4、およびLED1はすべて特定のデータロギングファームウェアの例の一部であり、不要な場合やファームウェアを変更しない場合は回避できます。


その答えをありがとう。usbのデータラインは〜3.3Vを使用することを知っていました。しかし、私が理解していないのは、USB信号がどのように正確に定義されているかです。それらはビットの列ではありませんか?ループ内の適切なタイミングでこれらのビットを単に「エミュレート」することはできませんか(信号のオンとオフの調整)。私はすでに内部MHzを使用して8MHzで実行し、シリアルボウドレートを4800にしているので、私が見つけたいくつかのブログ記事によるとタイミングが問題になるはずはありません...
Ace

1
@Ace 4800 bpsは4.8 khzです。USBの低速は1.5 MHZで、エンコーディング、パリティ、USBディスクリプターなどがすべてあります。VUSBはUSBデータを「エミュレート」しますが、非常に複雑です。
通行人2013年

1
@Ace基本的に、モニターをタップして、誰かがコンピューターでモールス信号を使用しようとするのと同じことをしようとしています。
2013年

HAHA XDボウドレート4800を使用している理由は、アップデートの2番目のリンクで説明されています。
エース

1

1つの投稿で答えるにはあまりにも多くの質問がありますが、ここにいくつかの簡単なポイントがあります:

一部のマイクロコントローラーにはUSB「エンドポイント」と関連ハードウェアが含まれていますが、AtmelサイトではATTiny45には含まれていないことが示されています。

したがって、USBは電子レベルとプロトコルレベルの両方で複雑なバスであるため、マイクロコントローラーポートをそのようなUSBコネクタに接続することはできません。

ただし、以下のコメントに記載されているように、V-USBで正しい方向に沿って検索しているので、これは使用していません。

FTDIチップははんだ付けするのにそれほど難しくありませんが、ソルダーレジストを備えた適切なPCBはそれを容易にします。

以前、私はこのFT232ケーブルのようなものを使用しました:

FT232 USBケーブル
(ソース:ftdichip.com

USBコネクタにFTDIチップが組み込まれており、電力を供給しながらすべてのレベル変換を処理します。端は、ピンヘッダーに接続できる単純な0.1 "ピッチコネクタです。

彼らはリーズナブルな価格でeBayで利用可能です。



面白いですね。私はそれに応じて私の投稿を編集しますが、おそらく他の誰かがV-USBの詳細を手伝ってくれるでしょう。
David

@David-はい、VUSBは基本的にUSBをエミュレートします。あなたの投稿は一般的に正しいですが、特にATTinyファミリーはこの方法でUSBに接続できます。
Gustavo Litovsky 2013年

ご回答有難うございます。私は、USB Aヘッド(この1つのcomputerkabelversand.de/pictures/picturesbig/…など)が搭載された単一のボード上にプロジェクトを構築するつもりであると考えるべきでし た。基本的には一般的なUSBスティックのように見えます。ケーブルはなく、もう一方の端は3ピンジャックになっています。これが私が「モジュラー」と呼んだ理由です。このようにして、ATtinyを個別にプログラムし(取り外し可能)、異なるセンサー/デバイスを3または4(まだ使用していないRX)の左ピンに接続することができます。
エース

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