#topicpath ** Arduino 互換(もどき)を自作する −Duemilanoveタイプ−[#g8dc9d66] -- Duemilanove と同様に FTDI(FT232RL)を経由して PC と通信します。~ パソコン側に導入するドライバなどが多くなることを考えても、[[USB直結タイプ>../USBTYPE]]をお勧めします。~ *** 部品 [#y5e32a7f] ++ |種別 |部品 |規格|価格(円)|まとめ買い時の個数|URL|h | | | | | | | |本体パーツ | | | | | | | | | | | | | | |AVRマイコン| ATmega168P | 210| 14個|http://akizukidenshi.com/catalog/g/gI-03033/ | | |ブレッドボード| EIC-301 | 150 |1個 | http://akizukidenshi.com/catalog/g/gP-00313/| | |ワイヤ|KQE0.5mm 50m|〜0 |50m|http://www.sengoku.co.jp/mod/sgk_cart/search.php?code=4ASM-KMLX| | |水晶発振器|16MHz|50|10個|http://akizukidenshi.com/catalog/g/gP-00545/| | |コンデンサ|0.1μF|10|10個|http://akizukidenshi.com/catalog/g/gP-00090/| | |コンデンサ|22pF|18×2|100個|http://www.sengoku.co.jp/mod/sgk_cart/search.php?multi=RPE2C1H220J2K1Z01B| | |抵抗|10kΩ|1|100個|http://akizukidenshi.com/catalog/g/gR-25103/| | |タクトスイッチ| |7|100個|http://akizukidenshi.com/catalog/g/gP-01282/| | | | | | | | | PCとの通信部分 | | | | | | | | | | | | | | |USBシリアル変換モジュール|FT232RL|950|1個|http://akizukidenshi.com/catalog/g/gK-01977/| | |ジャンパワイヤ| |〜100|いくつか|http://akizukidenshi.com/catalog/g/gP-02933/| | |抵抗|1kΩ|1×2|100個|http://akizukidenshi.com/catalog/g/gR-25102/| | |コンデンサ|0.1μF|10|10個|http://akizukidenshi.com/catalog/g/gP-00090/| | | | | | | | | ブートローダの仕込み | | | | | | | | | | | | | | |マイコンライタ|AVRISP mkII|4000|1 | http://akizukidenshi.com/catalog/g/gM-02582/| ※ 別途電源が必要である。~ ※ シリアル変換部分、ブートローダを書き込むためのライタを除けば、500円程度でできてしまう。~ プログラムし終えて動かすだけの段階になれば、シリアル変換・ライタは不要なので、実働部分は500円程度ということになる。 *** 作る・配線 [#lf52e417] ++ ATmega168P にラベルを貼る。~ ラベルは、[[このサイト>http://todbot.com/blog/2009/05/23/arduino-chip-sticker-label/]]にある[[PDFファイル>http://todbot.com/blog/wp-content/uploads/2009/05/arduino-atmega-sticker.pdf]]をダウンロードし、使わせてもらう。~ 貼らなくてもいいけど、貼った方が間違いが少ないと思う。~ CENTER:&ref(Arduino/Arduino の自作/ArduinoLabel.jpg,,400x300);~ ~ LEFT:なお、ICチップのルールとして、切り欠き(半月状に凹んだところ)を左側にしたときに、~ 左下のピンを1番とし、反時計回りに番号をふっていくルールがある。この番号はここでも使うので確認しておきたい。~ また、1番ピンの近くには、丸いくぼみもある。これもルールとして覚えておきたい。 ~ ~ プリントされたくぼみの部分を合わせて合わせてラベルを貼るようにする。(つまり、1番のピンに rst、 28番のピンに ai5 が対応する。)~ ~ ++ 本体部分の構成~ 写真のように配線する。左下の白いボタンは「タクトスイッチ」、左上は10kΩの抵抗。青い部品は0.1μFのコンデンサ。銀色のものは水晶発振器。~ CENTER:&ref(Arduino/Arduino の自作/ArduinoWired.jpg,,400x300);~ LEFT:銀色の水晶発振器は、9番ピン(xt1)と10番ピン(xt2)の間につなぐ。 ここで、公開されている設計図との違いについて説明する。将来、動作が不安定になったらここを疑う。 ○ 水晶発振器とグランド(GND)との間のコンデンサ(それぞれ22pFの)を省いた ○ 両側のGNDは内部で接続されているようなので両者の間の接続を省いた ++ USBシリアル変換部~ +++ 変換部をブレッドボードに載せる。~ パソコンからのUSBケーブルを接続する部分を写真のように組み立てる。~ 抵抗はどちらも1kΩ、コンデンサは0.1μF。~ 基盤に書いてある文字はピンの間に書いてあって紛らわしい。文字の下のピンが該当する。~ 左下から 1番目(TxD), 2番目(DTR), 5番目(RxD)を使う。~ // CENTER:&ref(Arduino/Arduino の自作/USB232.jpg,,300x200);~ CENTER:&ref(USB232C_2.jpg,,320x240);~ ~ +++ Arduino 側と接続する。~ ※ RS-232C のシリアル通信の場合、主従関係が無い。一方の RxD は他方の TxD につなぐことに注意。 // CENTER:&ref(Arduino/Arduino の自作/Arduino_USB.jpg,,400x300); |変換モジュール側|間に挟むもの|Arduino 本体側|h |Vcc| |Vcc(7番)(あるいは 20番上段)| |GND| |gnd(8番)(あるいは22番,下段)| |TxD| 抵抗1kΩ|rxd(2番)| |DTR| コンデンサ 0.1μF| rst(1番)| |RxD| 抵抗1kΩ|txd(3番)| ~ ※ワイヤーハーネスのようなものを作っておくと便利。~ CENTER:&ref(WireHarness.jpg,,320x240); &ref(Connection_2.jpg,,320x240); ~ *** ブートローダ [#e8182b60] ++ 参照先~ 「[[ブートローダを仕込む>../ブートローダを仕込む]]」参照 ++ Duemilanoveタイプの場合の設定 Arduino IDE の中に各種ブートローダが含まれている。その中からATmegaBOOT_168_diecimila.hex を探し出し、それを指定する。 Program : ATmegaBOOT_168_diecimila.hex Fuses : Extended 0xF8 High 0xDD Low 0xFF Lock bits : 0xFF とする。~ ~ *** 電源電圧 [#z9175eca] ++ 今後の課題~ 以上の話は、5Vの安定した電源が USB 経由で得られている場合の話である。~ 実際にパソコンから切り離して単独で動かす場合、どのように5Vの電源を確保するか、~ また、どの程度の許容度があるか、などは、まだ検討中(正確には検討前) *** うまくいかないとき [#wa80ef9f] ++ 次のようなメッセージに随分悩んだ。(Windows の場合のエラーメッセージ) avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51 次のような対応を考えるべき。~ ~ +++ シリアルポート~ Tools > Serial Port で指定するシリアルポートを正しく設定する。ケーブルを抜いて消えたデバイス名。 +++ ボード~ Tools > Board で指定するボードを確認。 +++ 配線~ よく確認する。特に、USBシリアル変換器 の (RxD, TxD) は、Arduino の (TxD, RxD) と、クロスして接続することに注意。 +++ Fuse Byte~ 正しく。 +++ 何かのタイミング~ Arduino IDE を立ち上げ直してみる。 // ++ 準備2 : [[ここ>http://isi.kicks-ass.net:8080/isi/bakilog-2.0/isiduino-168p]]を参照して、bootloader のソースに手を加える。→ コンパイルできなかったので、意味がなかった。2009-07-31 (金) 18:32:16 // ++ 準備3 : boards.txt も編集する。168p のエントリを作る。 // ++ ブートローダを仕込む方法 : 当面は、[[このページ>http://arms22.blog91.fc2.com/blog-entry-219.html]]に書いてある方法が一番楽。 // まず、スケッチをダウンロードする。そして編集。 // enum { atunknown=0, atmega8=0x7, atmega48=0x5, atmega88=0xa, atmega168=0x6, atmega168p=0xb }; // ~ // case atmega168: の後に続けて、case atmega168p を加える。 // ~ // #define PULSE_SCK(level) { *sckport |= sckbit; delayMicroseconds(10); *sckport &= ~sckbit; delayMicroseconds(10); } // …うーむうまくいかない。なぜだろう。2009-07-31 (金) 18:32:16 ~ *** 資料 [#ocadf2a0] ++ 履歴 +++ ホームページ改変 2010-06-02 (水) 19:50:45 +++ なんとかまとまる。2009-09-07 (月) 18:01:45 +++ とりあえず動く。2009-08-25 (火) 16:16:44~ とりあえずうまく動いた。この辺は改めて整理する。 +++ 配線は完了。2009-07-31 (金) 16:35:45~ しかし、ブートローダを仕込んでいないので動かない。 ++ 参考 URL : --- [[武蔵野電波のデジタル式FMラジオ>http://pc.watch.impress.co.jp/docs/column/musashino_proto/20090806_307235.html]] --- [[Duemilanoveの回路図>http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf]]~ --- [[秋月 FT232RL(AE-UM232R)のマニュアル>http://akizukidenshi.com/download/20090514ft245rlmodule_manual.pdf]]~ --- [[「はじめてのArduino」>http://isi.kicks-ass.net/blog/isi/bakilog-2.0/categories/arduino]]の写真~ --- [[「ブレッドボードでArduino」>http://zampoh.cocolog-nifty.com/blog/2008/04/arduino_b87f.html]]の写真