Top/Arduino/Arduino の自作/DuemilanoveTYPE

Arduino を自作する −Duemilanoveタイプ−

部品

  1. 種別規格価格(円)まとめ買い時の個数URL
    パーツ
    AVRマイコンATmega168P21014個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/
    コンデンサ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/
    シリアル変換部
    USBシリアル変換モジュールFT232RL9501個http://akizukidenshi.com/catalog/g/gK-01977/
    ジャンパワイヤ〜20いくつか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/
    ブートローダの仕込み
    マイコンライタ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シリアル変換部
    パソコンからのUSBケーブルを接続する部分を写真のように組み立てる。
    USB232.jpg
    基盤に書いてある文字はピンの間に書いてあって紛らわしい。下に当たるピンが該当する。
    抵抗はどちらも1kΩ、コンデンサは0.1μF。
    Arduino_USB.jpg
    変換モジュール側間に挟むものArduino 本体側
    VccVcc(7番)あるいは AVcc(20番)あるいは上段
    DTRコンデンサ 0.1μFrst(1番)
    TxD抵抗1kΩrxd(2番)
    RxD抵抗1kΩtxd(3番)
    GNDgnd(8番、22番)あるいは下段
    ※ RS-232C のシリアル通信の場合、主従関係が無い。一方の RxD は他方の TxD につなぐ!

ブートローダ

  1. 準備1 : AVRISP mkII の接続
    これを Windows パソコンに接続して、ハードウエアを検出させてから付属の CD を入れる。
    ドライバが CD に入っているので、ここを指定してドライバを導入する。
  2. 準備2 : AVR Studio を CD から導入する。
    なお、最新版は ATMELのホームページからダウンロードできる。
    また、導入方法は組み込みマイコン初歩の初歩などにも解説されている。
  3. 準備3 : AVR Studio を起動する。
    起動直後に立ち上がる Window は Cancel で消去する。
    小さなチップに"Con-"と書かれたアイコンをクリック。Platform-> AVRISP mkII と Port-> USB を設定して Connect。
    初回はいろいろと言われるが、適当に処理する。
  4. 接続 :
    武蔵野電波のデジタル式FMラジオを参照して、AVRISPmkIIと本体とを接続する。
    AVRISPmkIIArduino本体
    1番d12 (18番)
    2番Vcc (7番あるいは上段)
    3番d13 (19番)
    4番d11 (17番)
    5番rst (1番)
    6番gnd (8番、22番あるいは上段)

    AVRISPmkIIとは別に電源を確保する必要がある。そこで、USBシリアル変換部をUSBケーブル経由でPCに接続する。
  5. ブートローダを書き込む
    再び武蔵野電波のデジタル式FMラジオを参照して、ブートローダを書き込む。
    ただし、上の記述は内臓のクロックを使うものである。そこで、
    Program   : ATmegaBOOT_168_diecimila.hex
    Fuses     : Extended 0xF8 High 0xDD Low 0xFF
    Lock bits : 0xEF
    とする。(ちゃんと確かめていない…)
    ※ なお、未使用ビットの表し方が arduino と AVR Studio とで異なるという重大な事実がある(参考URLはこちら)。


うまくいかないとき~

  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
      特に extended は、ブートローダの大きさを指定している。また、上書きされないように、Lock bit も正しく。

資料

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

トップ   新規 検索 最終更新   ヘルプ   最終更新のRSS