脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

arduinoを最小構成で自作する(atmega328/8MHz/3.3V/内部クロック)

arduinoはいまや様々な種類が出ていて、かつ安価に購入できるので、IoTなどの分野でも幅広く利用されています
しかしarduinoを利用したシステムなどを量産する際に、更に小型化・省コストを狙う際にはarduinoのチップ(atmega328)を利用してarduino自体を自分の必要な構成で自作することが可能です

今回は以下の最小構成で自作します

  • 8MHz(既製品は16MHz)
  • 3.3V駆動(既製品は入力電圧:7V-12V, 駆動電圧:5V)
  • atmega328(既製品についているマイコンチップ)
  • 内部クロックを利用(既製品は外部クリスタルを利用)

必要なもの

  • atmega328
  • Arduino Uno(初期設定/FW書き込み用)
  • ジャンパーケーブル(初期設定/FW書き込み用)
  • ブレッドボード(初期設定/FW書き込み/確認用)
  • LED(確認用)

手順

1. ライブラリやIDEのダウンロード

以下のリンクのMinimal Circuitの項目にあるBreadboard-1-x-x.zipをダウンロードして解凍し、arduinoのhardwareフォルダに配置します
Arduino - ArduinoToBreadboard

  • 私の環境では”C:\Program Files (x86)\Arduino\hardware”にありました
  • ダウンロードするライブラリのversionですが、自分が使っているArduino IDEに対応したものをダウンロードします
    • 私は1.7.11を利用していますが、1.7用がなかったのでBreadboard-1-6-x.zipを使って問題なく動作しました
2. arduino ISPの書き込み

Arduino UNOへISPスケッチを書き込みます
サンプルにデフォルトで入っているので、Open > ArduinoISPを選択してそのままUploadします
f:id:portaltan:20180104125541p:plain

3. arduinoとatmega328の接続

以下の画像の通りarduinoとatmegaを接続します
f:id:portaltan:20180104125614p:plain

4. ブートローダー書き込み

atmegaを利用する際に、何も書き込まれていない素のままのTipを購入した際は一番最初にbootloaderを書き込まなければいけません
書き込み済みのものを購入した場合はスキップしてOKですが、16MHz用のブートローダーが書き込まれている場合は上書きしなければならず、その場合には外部発振子(水晶やセラロック)が必要になります。今回は割愛します

手順1でライブラリをarduinoのhardwareフォルダに配置している場合、boardの項目にAtmega328という項目が追加されているのでそれを選択します
f:id:portaltan:20180104130058p:plain

次にTools > Programmerの項目からArduino as ISPを選択します
(AVR ISPでもArduino ISPでもなくArduino as ISPです)

そうしたらTools > Burn Bootloaderを選択すればブートローダーの書き込みが行われます

5. スケッチ書き込み

ブートローダーは一度書き込めばよいので、不要なケーブルを抜き以下のようにスケッチ書き込み用の構成にします
f:id:portaltan:20180104130451p:plain
この際にArduino UnoについているAtmegaを外さないといけないのですが、これがとても固くて全作業の中で一番大変でした

あとはarduinoから通常のように書き込みをすればブレッドボード上のatmega328へ書き込まれます
試しにblinkを書き込んで動作確認をしてみました
f:id:portaltan:20180104131538j:plain

6. arduinoを外して確認

最後にスケッチ書き込み用のarduinoを外してちゃんと動作するか確認します
外部電源として3.3Vを供給しています
f:id:portaltan:20180104132535j:plain

外部発振子を利用する場合

  • BoardでArduino Pro or Pro Miniを選択
  • ProcessorでAtmeta328(3.3V, 8MHz)を選択
  • 1番ピン10kΩでプルアップ

f:id:portaltan:20180117160831p:plainf:id:portaltan:20180117160836p:plain