arduino開発環境

arduinoを約4年半使ってみたが開発環境を見直すことにした

arduinoを使った開発では普通に作るとプリント基板が2段重ねになった物が出来る
下側は買ってきたarduino(自作機でも似たような物だ)、作った物は上半分のシールドという構成になる
この2段重ねから抜け出しarduino言語を使ったatmega328の開発がやりやすい環境を作る
PCとの通信機能が必要な場合は装置が大きくても問題ないので2段重ねで良い

いろいろ改善したい点:
・arduino言語は良く出来ている。ハードは目的によっては使いにくい。小型化は出来ないし消費電力も大きいのでバッテリ駆動にも適していない
 完成後の姿は基板一枚の構成にしたい。変なピン配列のハードはいらない。arduino言語を使ったatmega328ボードの開発がやりたい
・プログラムを書き込むためのZIFソケットが欲しい。量産するときやブートローダーを書き込むときに便利だ
・電源を切りたい。USBケーブルを慌てて引っこ抜くのでは無くスイッチで切りたい
 抜くのが面度で通電したまま回路をいじるのでパソコンが時々ご機嫌斜めになる
・3.3V環境に対応させたい。最近3.3Vデバイスが増えてきている
・ピンソケットはピンヘッダを差し込むための物でブレッドボード用の配線コードを差し込む物では無い
 これはarduinoによって広まった悪い習慣だ。少し緩いし2列に分かれたソケットがブレッドボードとの距離を必要以上に長くしている


2014-06-13

通常はブレッドボード上にI/Oだけの回路を組みarduinoのI/Oピンとブレッドボード間をジャンパー線で接続する
この方式はI/Oが少ないときは良いがLCDや7セグメントLEDのようにI/O数が多い装置の場合はarduino<->ブレッドボード間の配線が非常に多くなる

そこで以下の図のようにブレッドボード上にatmega328を乗せI/Oはブレッドボード上のatmegaに配線する
ArduinoISPサンプルスケッチを使ってターゲット上(ブレッドボード上)のatmega328にスケッチを書き込んでやればブレッドボード上のatmega328がスケッチを実行してくれる
arduinoボードは単なる書き込み機として使用されスケッチを実行するのはブレッドボード上のそれになる
この方法により配線総量が減るわけでは無いが

利点:
・書き込みに使われている緑、青線を取り去った時にブレッドボード上の回路が正しく動作するなら回路が単独で動作することを確認出来る
 後はユニバーサル基板に同じ回路を組み直せば2段重ね開発から抜け出す事が出来る
 1枚基板は安上がりで大量生産に向いている
・抜けやすいarduinoのピンソケットにブレッドボード用の抜けやすいジャンパー線を差し込まなくて済む
方法:
・配線は図の通り
・arduinoにはArduinoISPというサンプルスケッチを書き込んでおく
・ブレッドボード上のatmega328にスケッチを書き込むためには「ファイル」-「書き込み装置を使って書き込み」を実行
 書き込みが終わるとスケッチが実行される。書き込まれるのはスケッチだけでブートローダーは含まれない(ブートローダーは必要ないはずだ)
・スケッチの代わりに「ツール」-「ブートローダーを書き込む」を実行すればブレッドボード上のatmegaにブートローダーを書き込むことが出来る
 この操作ではブートローダーだけが書き込まれる。これはarduinoを複製するための機能
欠点:
・シリアルモニターが使えないのでデバッグがやりにくい
 Serial.wrie や Serial.println によるデバッグはかなり便利な機能だ
・3本だけなのでそれほど困った問題にはならないはずだが書き込みに使っているピンは他の用途で使えない
・毎回定型回路をブレッドボード上に組むのは面倒だ
 実験回路なら1回きりの配線なので問題ないがブートローダーを書き込んだり、量産時の書き込み時は不便に感じる
 ユニバーサル基板で組み立てた回路にバグがあったときも同様だ
 予めこの回路を基板で組んでしまえば解決できる。ソケットはもちろんZIFソケットにする

arduino_unyo_isp.png

USBとarduinoボード上のatmega328はRX,TXのたった2本のピンだけで接続されている
2(RX),3(TX)番ピンだけを切断するかatmega328をソケットから抜き以下のように配線すればブレッドボード上のatmega328がarduinoになる

この方式は
・上記の方法より書き込みに使われるピンが1本少なくて済む
・スケッチの書き込み手順は通常のシールドを使った開発と同じく「マイコンボードに書き込む」ボタンを押すだけとなる
 ブレッドボード上のatmega328にはブートローダーが書き込まれている必要がある
・RX,TXが接続されているので Serial.wrie や Serial.println によるデバッグが可能

2,3番ピンをスイッチで切り離せるように改造してしまえばソケットからatmega328を抜かずに済む。この方式の方が便利だがブートローダーを書き込むために上の回路も必要になる

arduino_unyo_boo.png

上記2つの配線に対応させたarduino開発ボード。回路はDuemilanoveを改造した物なのでatmega328に書き込むファームウェアもDuemilanoveの物になる

devkitimg.jpg

ターゲットボードで開発しているときはarduino上のATmega328Pは動作していない。ターゲットボード上のATmega328Pがarduinoとして機能している。ターゲットボードへの書き込みはTX,RXによる通信なのでSerial.printなどの機能も使える。配線はこのページの上から2番目の物と同じ。RX/TXスイッチはEXTの位置、PWR_BB_SWはONになっている

R0021324.jpg

ブートローダーを書き込む

R0021328.jpg

書き込んだATmega328をターゲットボードに挿して開発

ターゲットボードとは合計5本の電線で繋がっている

R0021343.jpg

ZIFソケットも使えるようレイアウトしてある

R0021325.jpg

部品表 秋月電子だけで部品はそろいます
注意!! スライドスイッチは2回路用が必要です。秋月電子ならIS-2235です(IS-1250は1回路なので使えません 6本足ですが1回路です)

buhinhyo.png


基板は売店で販売しています
現在販売中の物は以下の問題が改善されたパターンになっているので手作業の修正箇所はありません

製造間違いで矢印の箇所に修正が入っています。手作業で修正したので
若干不細工ですが電源ICを実装すると見えなくなります。絶縁のためエポキシ樹脂を塗ってあるため僅かにこの部分が盛り上がっています。電源ICを半田付けした後に基板のベタパターンと電源ICの出力ピン(C6に近いほうの端子)がショートしていないかテスターで確認してください。ショートしていたら不良です

R0021341.jpg
回路図 & EAGLEファイル
ファイル ファイルタイプ 添付ファイルの解説
devkitsch.PNG PNG 回路図
arduinoDevKitEAGLE.zip EAGLE EAGLE V4.16用 基板の製造間違いの部分は修正済みです