2026年9月5日土曜日

空っぽのマイコンに、最初のプログラムを焼く(互換機自作③)

ブレッドボードに挿した石とArduinoを配線している私

部品は前回そろえました。いよいよ組み立て……と思いきや、おっさんはここで手を止めます。買ってきたATmega328Pは、そのままではArduino IDEからスケッチを受け取ってくれません。先に「ブートローダー」という小さなプログラムを焼いておく必要があります。

第1回の用語メモに「ブートローダーは自作の第3回で登場します」と書いたのは、この回のことです。マイコンが自分自身にプログラムを書き込むための、いわば受付係。これが入っていない石は、パソコンから話しかけても無反応です。

→ 元記事:「Arduino 互換機を自作する(3):ブートローダーを書き込む」(tech.andhandworks.com)

完成品イメージ:ブートローダーを書き込んだマイコン

焼かなくていい石と、焼かないといけない石

2015年の記事はまず、そもそも焼かなくていい場合があると教えてくれます。スイッチサイエンスで売っているATmega328Pには内部クロック用のブートローダーが書き込み済みなので、そのまま使うなら何もしなくていい。一方、Amazonなどで素の石を買った場合や、外部に16MHzの水晶を付けて動かす場合は、自分で焼く必要があります。

第1回で「8MHzで済ませるか、16MHzを載せるか」と迷った選択が、ここで作業量として跳ね返ってくるわけです。設計の判断が、そのまま手間の請求書になって届く。電子工作でいちばん実感しやすい因果関係かもしれません。

ZIPを解凍してフォルダに放り込む手順は、もうありません

2015年の手順はこうです。Arduino公式サイトからBreadboard1-5-x.zipを落とし、マイドキュメントのArduinoフォルダにhardwareというフォルダを自分で作り、解凍したフォルダをそこへ放り込む。しかも内部クロック用と外部クロック用で、手順が別々に書かれています。

2026年は、この工程がまるごと消えました。いまの標準は MiniCore というボード定義で、Arduino IDEの設定に次のURLを1行貼るだけで入ります。

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

あとはボードマネージャからインストールして、ツールメニューでATmega328を選ぶだけ。内部クロックか外部クロックかは、別手順ではなくドロップダウンの選択肢になりました。2つに割れていた作業が、メニュー1つに畳まれたわけです。ついでにMiniCoreはバージョン3から、書き込まれるブートローダー自体もOptibootからUrbootに変わっています。より小さく、より速く、通信速度を自動で合わせてくれるそうです。

ちなみに「書き込み装置」で Arduino as ISP を選んで「ブートローダーを書き込む」を押す、という最後の2手は11年前と同じでした。ここは変わっていません。

「Arduino UNO を使います」が、いま素直に通らない

元記事はこう書いています。「一台も Arduino を持っていない状態で Arduino を自作する方はあまりいないと思いますので、今回は Arduino UNO を使います」。第2回のタイトルにした「Arduinoを作るのにArduinoが要る」という話です。

ところが2026年、この一文には落とし穴があります。いま「Arduino UNO」として売られている UNO R4 Minima(3,949円)は、商品名にはっきり「Renesas RA4M1」と書いてあるとおり、中身がAVRではありません。ArduinoISPはAVR時代の道具なので、R4を書き込み機にしようとすると素直には進まず、公式フォーラムにも詰まった報告が並んでいます。

罠に2階ができていました。Arduinoを作るのにArduinoが要る、しかも今売っているArduinoでは要件を満たさないことがある。確実なのはAVRのUNO R3系で、ELEGOOのUNO R3スターターキット(5,099円)ならブレッドボードもジャンパー線も一緒に入っています。

2026年の私が同じことをやるなら

2026年の手順を確認している私

Arduinoを書き込み機に仕立てるのはやめて、USBaspのAVRライタを買います。1,480円。ISPアダプタとケーブルが付いて、この値段です。

これを選ぶと連鎖がまるごと消えます。ArduinoISPを書き込む手順も、UNOとブレッドボードの配線も、R4かR3かの心配も要りません。USBに挿して、MiniCoreを入れて、書き込み装置でUSBaspを選ぶだけ。2015年に「最初だけはブートローダー書き込み済みのArduinoを調達する必要があります」と書かれていた前提が、1,480円で解けます。

石はATmega328P-PU(1,129円)、外部クロックでいくなら16MHzの水晶振動子(720円)と22pFのセラミックコンデンサ(750円・30種セット)、リセット用の10kΩ抵抗(695円)。前回そろえた部品のままです。

元記事が貼ったリンクは、もう生きていません

細かい話をひとつ。元記事は「スイッチサイエンスさんのATmega328p」にAmazonリンクを貼っていて、そのリンクは11年後もクリックできます。ただし飛んだ先は在庫切れで、表示される商品名もスイッチサイエンスのものではなくなっていました。

ASINという商品の背番号は使い回されることがあるので、リンクが生きていることと、その先に当時の商品があることは別問題です。私も毎週アフィリエイトリンクの生存確認をしていますが、「404にならない」は「まだ正しい」を意味しません。11年前の自分が貼ったリンクが、いつの間にか別の商品を指している。手順書より先に、リンクのほうが腐るんだなと思いました。

今回の用語メモ

  • ブートローダー:マイコンに最初から入れておく小さなプログラム。パソコンから送られてきたスケッチを、自分自身のメモリへ書き込む役目を持ちます。これが無い石は、書き込み機を直接つながないと反応しません。
  • ISP(In-System Programming):マイコンを基板に載せたまま、専用の数本の線を通してプログラムを書き込む方式。ブートローダーを焼く作業はこれで行います。
  • MiniCore:ATmega328Pなどを素の石のまま扱うための、有志によるボード定義。クロックの選択やブートローダーの種類をメニューから選べます。
  • Optiboot / Urboot:ブートローダーの実装。小さいほどスケッチに使える容量が増えます。MiniCoreはバージョン3からUrbootに切り替えました。
  • ASIN:Amazonの商品につく識別番号。商品が消えたあと別の商品に振り直されることがあり、古いリンクが無関係な商品を指す原因になります。

関連アイテム

0 件のコメント:

コメントを投稿