Top / Arduino / Arduino の自作 / DuemilanoveTYPE

Arduino 互換(もどき)を自作する −Duemilanoveタイプ−

部品

  1. 種別部品規格価格(円)まとめ買い時の個数URL
    本体パーツ
    AVRマイコンATmega168P2001個http://akizukidenshi.com/catalog/g/gI-03033/
    ブレッドボードEIC-3011501個http://akizukidenshi.com/catalog/g/gP-00313/
    ワイヤKQE0.5mm 50m〜050mhttp://www.sengoku.co.jp/mod/sgk_cart/search.php?code=4ASM-KMLX
    水晶発振器16MHz5010個http://akizukidenshi.com/catalog/g/gP-00545/
    コンデンサ0.1μF1010個http://akizukidenshi.com/catalog/g/gP-00090/
    0.1μF4.8500個http://akizukidenshi.com/catalog/g/gP-02182/
    コンデンサ22pF18×2100個http://www.sengoku.co.jp/mod/sgk_cart/search.php?multi=RPE2C1H220J2K1Z01B
    抵抗10kΩ1100個http://akizukidenshi.com/catalog/g/gR-25103/
    タクトスイッチ7100個http://akizukidenshi.com/catalog/g/gP-01282/
    PCとの通信部分
    USBシリアル変換モジュールFT232RL9501個http://akizukidenshi.com/catalog/g/gK-01977/
    ジャンパワイヤ〜100いくつかhttp://akizukidenshi.com/catalog/g/gP-02933/
    抵抗1kΩ1×2100個http://akizukidenshi.com/catalog/g/gR-25102/
    コンデンサ0.1μF1010個http://akizukidenshi.com/catalog/g/gP-00090/
    0.1μF4.8500個http://akizukidenshi.com/catalog/g/gP-02182/
    ブートローダの仕込み
    マイコンライタAVRISP mkII40001http://akizukidenshi.com/catalog/g/gM-02582/
    ※ 別途電源が必要である。
    ※ シリアル変換部分、ブートローダを書き込むためのライタを除けば、500円程度でできてしまう。
    プログラムし終えて動かすだけの段階になれば、シリアル変換・ライタは不要なので、実働部分は500円程度ということになる。

作る・配線

  1. ATmega168P にラベルを貼る。
    ラベルは、このサイトにあるPDFファイルをダウンロードし、使わせてもらう。
    貼らなくてもいいけど、貼った方が間違いが少ないと思う。
    ArduinoLabel.jpg

    なお、ICチップのルールとして、切り欠き(半月状に凹んだところ)を左側にしたときに、
    左下のピンを1番とし、反時計回りに番号をふっていくルールがある。この番号はここでも使うので確認しておきたい。
    また、1番ピンの近くには、丸いくぼみもある。これもルールとして覚えておきたい。

    プリントされたくぼみの部分を合わせて合わせてラベルを貼るようにする。(つまり、1番のピンに rst、 28番のピンに ai5 が対応する。)

  2. 本体部分の構成
    写真のように配線する。左下の白いボタンは「タクトスイッチ」、左上は10kΩの抵抗。青い部品は0.1μFのコンデンサ。銀色のものは水晶発振器。
    ArduinoWired.jpg
    銀色の水晶発振器は、9番ピン(xt1)と10番ピン(xt2)の間につなぐ。
    ここで、公開されている設計図との違いについて説明する。将来、動作が不安定になったらここを疑う。
      ○ 水晶発振器とグランド(GND)との間のコンデンサ(それぞれ22pFの)を省いた(手元に無かったので)→ 購入したので省く必要がなくなった。
      ○ 両側のGNDは内部で接続されているようなので両者の間の接続を省いた
    
  3. USBシリアル変換部
    1. 変換部をブレッドボードに載せる。
      パソコンからのUSBケーブルを接続する部分を写真のように組み立てる。
      抵抗はどちらも1kΩ、コンデンサは0.1μF。
      基盤に書いてある文字はピンの間に書いてあって紛らわしい。文字の下のピンが該当する。
      左下から 1番目(TxD), 2番目(DTR), 5番目(RxD)を使う。
      USB232C_2.jpg

    2. Arduino 側と接続する。
      ※ RS-232C のシリアル通信の場合、主従関係が無い。一方の RxD は他方の TxD につなぐことに注意。
      変換モジュール側間に挟むものArduino 本体側
      VccVcc(7番)(あるいは 20番上段)
      GNDgnd(8番)(あるいは22番,下段)
      TxD抵抗1kΩrxd(2番)
      DTRコンデンサ 0.1μFrst(1番)
      RxD抵抗1kΩtxd(3番)

      ※ワイヤーハーネスのようなものを作っておくと便利。
      WireHarness.jpg Connection_2.jpg

ブートローダ

  1. 参照先
    ブートローダを仕込む」参照してください。
  2. Duemilanoveタイプの場合の設定 Arduino IDE の中に各種ブートローダが含まれています。その中から
    arduino-018\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_diecimila.hex
    を探し出し、それを指定。
    ヒューズ(フューズ)とロックについては次のようにする。
    Fuses     : Extended 0xF8 High 0xDD Low 0xFF
    Lock bits : 0xFF
    とする。

パソコンへの接続

  1. USB ケーブルでパソコンと USBシリアル変換部 とを接続する。すると、ドライバを入れるように促される。
    → 「FT232R USB UART」「USB Serial Converter」の二つを指示にしたがって導入する。
    (初回のみ)

電源電圧

  1. 今後の課題
    以上の話は、5Vの安定した電源が USB 経由で得られている場合の話である。
    実際にパソコンから切り離して単独で動かす場合、どのように5Vの電源を確保するか、
    また、どの程度の許容度があるか、などは、まだ検討中(正確には検討前)

うまくいかないとき

  1. 次のようなメッセージに随分悩んだ。(Windows の場合のエラーメッセージ)
    avrdude: stk500_getsync(): not in sync: resp=0x00
    avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
    次のような対応を考えるべき。

    1. シリアルポート
      Tools > Serial Port で指定するシリアルポートを正しく設定する。ケーブルを抜いて消えたデバイス名。
    2. ボード
      Tools > Board で指定するボードを確認。
    3. 配線
      よく確認する。特に、USBシリアル変換器 の (RxD, TxD) は、Arduino の (TxD, RxD) と、クロスして接続することに注意。
    4. Fuse Byte
      正しく。
    5. 何かのタイミング
      Arduino IDE を立ち上げ直してみる。

資料

  1. 履歴
    1. ホームページ改変 2010-06-02 (水) 19:50:45
    2. なんとかまとまる。2009-09-07 (月) 18:01:45
    3. とりあえず動く。2009-08-25 (火) 16:16:44
      とりあえずうまく動いた。この辺は改めて整理する。
    4. 配線は完了。2009-07-31 (金) 16:35:45
      しかし、ブートローダを仕込んでいないので動かない。
  2. 参考 URL :

添付ファイル: fileConnection_2.jpg 1615件 [詳細] fileWireHarness.jpg 220件 [詳細] fileUSB232C_2.jpg 2370件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-03-02 (水) 18:54:00 (2459d)