USB直結Arduino互換ボード

Kimio Kosaka

 

make No.3


METALABMETABOARDの回路を模倣・修正してUSBに直結できるArduino互換ボードを作って見ました。



  1. 回路図
    oca_v20_sch_u

    Metabordの回路を変更してできあがったこの回路,どこかで見たことがあるような… もあさんの Gingerと似ています。


  2. まずブレッドボードで実験して見ます。

    回路図の赤枠で囲まれたUSBインタフェース部を小さなユニバーサル基板に組んでブレッドボード上に装着しています。

    セラミック発振子(セラロック)を用いています。しかし,セラミック発振子は発振周波数の誤差や温度による変動が大きいので USB通信用途には適していません。確実かつ安定して働かせたい場合は水晶振動子を用います。


    セラロックの実験

    この回路を1チップサイズの基板に押し込んだ「One-Chip Arduino ver. 2.0」 を作るとき実装面積小さくするためにセラロックの使用が不可避でした。しかし,「ソフトUSBにはセラロックは使えない」と聞いていたので,実際にはどうなのか実験して使用の可否を確かめてみました。

    秋月電子で売られているセラロック(16MHz)が16個ほど手元にありましたので,ひとつづつ実験ボードに差して3台のパソコン A(ThinkPad 2655-P3J + ubuntu 8.10),B(Intellistation 6225-2J9 + Win-XP),C(ThinkPad 2656-AJ3 + Win-XP) に接続してUSB通信の可否を調べました。

    結果はパソコンAでは16個中3個がUSB通信不可でした。パソコンB・Cではこの3個のうち2個は通信ができましたが,残り1個は通信できませんでした。 実験個数が少ないのと温度変化に対する実験をやっていませんので早計に結論は出せませんが,思っていたよりもセラロックは悪くないです。(半数はダメだろうと思っていました) しかし,セラロックを使用する回路でソフトUSBを行う場合は所謂「相性問題」が確実にあるので,事前に実験回路を複数のパソコンに接続し通信テストをして相性の良いセラロックを選別使用した方が安全です。実装面積に余裕のある場合は無条件に水晶振動子を用いた方が良いです。

    Morosanのこの同期方法を実装すればセラロック使用時でも確実にエラー無く通信できるものと思われます。


  3. ファームウエア

    ファームウェアにはUSBaspLoaderを用います。

    ファームウェアの書き込みには秋月のUSB-Serialコンバータを使ったFTDI Bitbang AVRライタを使いました。


  4. パソコンとの接続
    • Windows
      1. USBaspドライバのが必要なのでhttp://www.fischl.de/usbasp/ からusbasp.2009-02-28.tar.gzをダウンロードして展開し,win-driverフォルダを取り出しておきます。
      2. JP1をショートしてボードをパソコンのUSBポートにつなぎます。「USBデバイスが認識されません」と表示されますが無視します。 そのままの状態でリセットボタンを押すとUSBaspのドライバを要求して来ますのでwin-driverフォルダからドライバをインストールします。
      3. 動作確認します。

        一旦,ボードをUSBポートから外します。再度,USBポートにつなぎます。 「USBデバイスが認識されません」と表示されたら,リセットスイッチを押します。正しく動作していると,ボードはブートローダモードに移り 「USBデバイスが認識されません」の表示が消えるはずです。

      4. Arduino IDE へのボード登録はboard.txtにMetaboardのWebページのとおりに追加記述します。
        ##############################################################

        metaboard.name=Metaboard

        metaboard.upload.protocol=usbasp
        metaboard.upload.maximum_size=14336
        metaboard.upload.speed=19200

        metaboard.build.mcu=atmega168
        metaboard.build.f_cpu=16000000L
        metaboard.build.core=arduino

        ##############################################################
      5. Serial Portに既存のCOMポートをダミーで指定しておく必要があります。 実際の書き込みはUSBaspで行われますが,このCOMポートの指定がないとuploadでエラーになります。
      6. 最近のCOMポートを装備していないパソコンではダミーのCOMポート指定ができず困ったことになります。このようなときは仮想COMポートドライバをインストールすれば大丈夫です。[詳細を見る]   2010.01.17 追加
    • ubuntu Linux
      1. ドライバのインストールは不要です。
      2. USBaspポートをroot権限以外でも使用できるように属性設定する記述をしておきます。
      3. $sudo gedit /etc/udev/rules.d/60-objdev.rules
        SUBSYSTEM!="usb_device", ACTION!="add", GOTO="objdev_rules_end"
        # USBasp
        SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="users", MODE="666"
        LABEL="objdev_rules_end"
      4. Arduino IDEへの登録はWinと同じです。ダミーのポート指定も必要です。

  5. 実装例 その1

    ユニバーサル基板の廃材を加工してStickDuinoモドキを作って見ました。


  6. 実装例 その2

    さらにトリッキーな実装をしたのがOne-Chip Arduino ver. 2.0Skeleton Arduinoです。


  7. 実装例 その3

    Metaboardのレイアウトを大幅に変更した片面ボードを製作しました。

    デジタル・ソケットが1列ならばDiecimilaと同一サイズに収まります。


[もどる]

update 2010.01.17

upload 2009.05.31

Creative Commons License