<<
Arduino UNOからATmega328P-PUを外して単体利用する †
回路とスケッチが完成し、パッケージングする際にUSBやシールド用コネクタを使用するといった事情がなければ、Arduino UNOをそのまま使用するのは非常にコストパフォーマンスが悪いです。
そこでATmega328P-PUと最小の部品構成で動作テストを行ったのでメモしておきます。
動作 †
スケッチは13番ピンのLEDを1秒おきに点滅させるといったもので、LEDと抵抗が1個ずつ。
必要なもの †
- ATmega328P-PU:Arduino UNOでスケッチを書き込み済み(参考1)(参考2)(230~350円)
- 16Mhz水晶発振子(参考)(50円)
- 22pF積層セラミックコンデンサx2個(参考)(10円x2個)
- 1MΩ抵抗(5円)
- 0.1μF積層セラミックコンデンサ(参考)(10円)
- 5Vスイッチング電源(参考)(600円)
- 2.1mmジャック(参考)(25円)
- ブレッドボードとジャンプワイヤ
- (コスト:約1000円+ブレッドボード&ジャンプワイヤ代)
周波数の違う水晶発振子を使用するとdelay()などのタイマ系関数の処理が指定した値通りに動作しなくなるので注意。
回路図 †
基本的にはArduino公式で公開されているArduino UNOの回路図(PDF)を参考にしました。
ちなみに「こちら」を参考に、「ここで公開されているPDFファイル」をATmega328P-PUに貼るといちいちピンを数えなくてすむので楽です。
回路図は以下のとおりです。
電源周りや水晶発振子周りのコンデンサと抵抗はArduino UNOの回路図のままです。これで通電した瞬間からスケッチが動作します。
AVCC、AGND、AREFはADコンバータ用のピンで、AVCCとAGNDは使用しないなら開放したままでも良さそう(動作はした)でしたが回路図のとおり、それぞれVCCとGNDに接続しました。
リセットスイッチが不要の場合は開放したままだと微妙なので、5Vのプルアップだけは接続しておいたほうがよさそうです。(写真の方は開放したままですが気にしないで下さい;;)
水晶発振子に接続しているコンデンサ容量は公開されているPDFには値が載っていません(EAGLEの方を見れば載っているかも?)。ググッてみるとだいたい22pFを指定しています。「こちら」ではなぜ22pFなのかについて議論されていますので興味のある方はどうぞ。(とある投稿のArduino使うなら精度は気にするな、が真理かも…)
Arduino UNOのライターとしての使い勝手を手軽に良くする †
ATmega328P-PUを単体利用する場合、プログラムを書き込むために何度もArduino UNOと基板やブレッドボードを往復するシチュエーションに出くわすことがあり、取り外しが非常にダルいです。
幸いなことにArduino UNOからATmega328P-PUに書き込むだけだったら必要なピンは左側(1~14ピン)に収まっていますので、28ピン用ICソケット(参考)と同じく28ピン用ゼロプレッシャーICソケット(参考)を装着すると取り外しが楽になります。
素直にICSPを実装したほうが楽なこともありますので、そこはケースバイケースで。
ATmega8U2搭載USB-シリアル変換ボードを使用してブレッドATmega328-P-PUに直接アップロードする †
SparkFunからArduino UNOのUSB-シリアル変換機能のみピックアップしたボード(ATMEGA8U2 Breakout)が販売されています(公式)(参考)。これと前述の回路を組み合わせるとほぼArduino UNOと同等になります。そのままパッケージングするなら()特に価格的にあまり意味が無いような気がしますが、あとで取り外すこと前提で使用するならArduino IDEから直接使用できるライターになるのでメリットは大きいと思いますので、似たような使用方法を考えている方は一枚持っていると便利かと思います。
(回路図)
変換ボードは購入した状態でそのまま使用できます。自分は6x1と3x2(ICSP用)のヘッダピンをハンダ付けしました。ICSP用のピンは使用方法を試行錯誤*1しているときに付けただけですが、ライターを持っていれば中身を書き換えてUSBデバイスを作成したりと色々遊べるらしいです。
接続は変換ボードの「DTR」「RX」「TX」をそれぞれ、ATmega328Pの「RESET(1ピン)」「TX(3ピン)」「RX(2ピン)」に接続するだけです。ポイント(というかハマったところ)は「RXとTXはクロスさせる」ことと「RESETピンは5Vでプルアップしておく」ことです。あとは抵抗とセラミックコンデンサも忘れずに。(自分は用途の関係上、ピンヘッダを使って3線のクロスケーブルを作りました)
変換ボードのVCCからは5Vが取り出せるので、ブレッドボード側の電源として使用することも可能です。(逆にブレッドボード側の電源とかち合わないように注意<これもハマった)
Arduino IDEから書き込む方法や設定はArduino UNOと同様です。
参考 †