注意:私は素人です。また、本務に追われ、なかなか内容を更新できず、記事の内容はまだまだ不完全です。
他のサイトを参考にしてください!
自作の Arduino を使う †
なぜ自作の Arduino を使うのか †
- 安い
今時、ネットブックと呼ばれるノートパソコンが3万円程度でも買えます。ノートパソコンではモニターできる環境、電源のバックアップ、ネットワークインターフェースにキーボード、等など、様々な装備が充実しています。そんな中、マイコンボードが数万円してどうするのだろうか?と思います。数万円のマイコンボードで何かするくらいなら、パソコン自身を利用した方がよいのでは?。
逆に、よりずっと安価なマイコンであれば使う意味があります。大量に展開できる可能性があるからです。そして、可能な限り徹底的に安くすべきだと思います。秋月電子では、AVR マイコンで Arduino に利用できる ATmega 168P を 14 個以上購入すると、1個あたり 210円になります。
- USB ポートは必要ない
標準的な市販品の Arduino では、USB ポート部分(シリアル変換機能)を持っていることで値段が高くなっている部分があります。
ところが、実際にスタンドアローンで稼働させる場合、USB ポートをつけながら動かす必要はありません。パソコンからプログラムを送る時だけ接続していればいいのです。
だから、USB 通信部分と本体部分は別々に作るべきです。
ネットを見ると、Arduino を自作するにも様々な種類があります。ここでは、Duemilanoveと似たものと、USB直結タイプを作ります。
Arduino を自作する −Duemilanoveタイプ− †
- 部品
- 1つずつ必要なもの
- 複数個のためにまとめて買うもの
- シリアル変換部で使うもの
- ブートローダを仕込むために必要なもの
- 作る
- ATmega168P にラベルを貼る。
ラベルは、このサイトにあるPDFファイルをダウンロードし、使わせてもらう。
貼らなくてもいいけど、貼った方が間違いが少ないと思う。
なお、ICチップのルールとして、切り欠き(半月状に凹んだところ)を左側にしたときに、
左下のピンを1番とし、反時計回りに番号をふっていくルールがある。この番号はここでも使うので確認しておきたい。
また、1番ピンの近くには、丸いくぼみもある。これもルールとして覚えておきたい。
プリントされたくぼみの部分を合わせて合わせてラベルを貼るようにする。(つまり、1番のピンに rst、 28番のピンに ai5 が対応する。)
- 本体部分の構成
写真のように配線する。左下の白いボタンは「タクトスイッチ」、左上は10kΩの抵抗。青い部品は0.1μFのコンデンサ。銀色のものは水晶発振器。
銀色の水晶発振器は、9番ピン(xt1)と10番ピン(xt2)の間につなぐ。
ここで、公開されている設計図との違いについて説明する。将来、動作が不安定になったらここを疑う。
○ 水晶発振器とグランド(GND)との間のコンデンサ(それぞれ22pFの)を省いた
○ 両側のGNDは内部で接続されているようなので両者の間の接続を省いた
- USBシリアル変換部
パソコンからのUSBケーブルを接続する部分を写真のように組み立てる。
基盤に書いてある文字はピンの間に書いてあって紛らわしい。下に当たるピンが該当する。
抵抗はどちらも1kΩ、コンデンサは0.1μF。
変換モジュール側 | 間に挟むもの | Arduino 本体側 |
Vcc | | Vcc(7番)あるいは AVcc(20番)あるいは上段 |
DTR | コンデンサ 0.1μF | rst(1番) |
TxD | 抵抗1kΩ | rxd(2番) |
RxD | 抵抗1kΩ | txd(3番) |
GND | | gnd(8番、22番)あるいは下段 |
※ RS-232C のシリアル通信の場合、主従関係が無い。一方の RxD は他方の TxD につなぐ!
- ドライバ・開発環境
Arduino のプログラミング環境を整えるを参照してドライバとArduinoIDE(統合開発環境)を入れる。
※ Arduino IDE の変更について
ここの追記3のような情報はあるが、Arduino 017 では hardware/tools/avr/etc/avrdude.conf の変更は不用なようである。
- ブートローダ
- 準備1 : AVRISP mkII の接続
これを Windows パソコンに接続して、ハードウエアを検出させてから付属の CD を入れる。
ドライバが CD に入っているので、ここを指定してドライバを導入する。
- 準備2 : AVR Studio を CD から導入する。
- 準備3 : AVR Studio を起動する。
起動直後に立ち上がる Window は Cancel で消去する。
小さなチップに"Con-"と書かれたアイコンをクリック。Platform-> AVRISP mkII と Port-> USB を設定して Connect。
初回はいろいろと言われるが、適当に処理する。
- 接続 :
武蔵野電波のデジタル式FMラジオを参照して、AVRISPmkIIと本体とを接続する。
AVRISPmkII | Arduino本体 |
1番 | d12 (18番) |
2番 | Vcc (7番あるいは上段) |
3番 | d13 (19番) |
4番 | d11 (17番) |
5番 | rst (1番) |
6番 | gnd (8番、22番あるいは上段) |
AVRISPmkIIとは別に電源を確保する必要がある。そこで、USBシリアル変換部をUSBケーブル経由でPCに接続する。
- ブートローダを書き込む
再び武蔵野電波のデジタル式FMラジオを参照して、ブートローダを書き込む。
ただし、上の記述は内臓のクロックを使うものである。そこで、
Program : ATmegaBOOT_168_diecimila.hex
Fuses : Extended 0xF8 High 0xDD Low 0xFF
Lock bits : 0xEF
とする。(ちゃんと確かめていない…)
※ なお、未使用ビットの表し方が arduino と AVR Studio とで異なるという重大な事実がある(参考URLはこちら)。
- うまくいかないとき
次のようなメッセージに随分悩んだ。(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
特に extended は、ブートローダの大きさを指定している。また、上書きされないように、Lock bit も正しく。
資料 †
- 履歴
- 配線は完了。2009-07-31 (金) 16:35:45
しかし、ブートローダを仕込んでいないので動かない。
- とりあえず動く。2009-08-25 (火) 16:16:44
とりあえずうまく動いた。この辺は改めて整理する。
- なんとかまとまる。2009-09-07 (月) 18:01:45
- 参考 URL :
Arduino を自作する −USB直結タイプ− †
- 部品
- 1つずつ必要なもの
- 複数個のためにまとめて買うもの
- 配線
- ブートローダ
- 資源:
ここの USBaspLoader を用いる。
最新版は2009年03月20日版
資料 †
- 履歴
- 2010-05-21 (金) 17:38:40 配線してみる
- 2010-05-21 (金) 19:46:45 ブートローダを入れてみる。+接続してみる。
- 参考 URL :
- Make / USBasp (USB直結)
- O'Baka / Arduino Skelton