2026年9月3日木曜日

Arduinoで作るんじゃなくて、Arduinoを作る(互換機自作①)

元記事を読みながら考えこんでいる私

「Arduinoで自作するのではなく、Arduino を自作します」。2015年のおっさん記事の書き出しがこれで、一瞬なにを言われているのか分かりませんでした。マイコンボードを使って何かを作る話だと思って開いたら、マイコンボードそのものを作る話でした。

理由は身も蓋もなくて、安いからです。試しに作ってすぐバラすなら Arduino UNO で十分だけれど、解体せずに作品として残していくと、UNO が1枚ずつそこに据え置きになっていきます。互換機なら一台数百円で作れて、余計な部品を省けばかなり小さくなる、と書かれています。

今回はシリーズ全4回の導入編なので、まだ何も作りません。手を動かす前に「そもそも何と何が互換なのか」を決める回です。

→ 元記事:「Arduino 互換機を自作する(1):導入」(tech.andhandworks.com)

完成品イメージ:マイコンチップを載せた自作の小さな基板

「互換」が指しているものが、実は2つある

元記事いわく、「Arduino 互換」には次の意味があります。ひとつはソフトウェア的互換=Arduino IDE でそのまま書き込めること。もうひとつはハードウェア的互換=ピン配置が UNO に合わせてあって、既成のシールドが挿さること。今回目指すのは前者だけです。

後者については「配線の取り回しと半田付けを頑張れば何とかなると思います。(たぶん)」と書かれていて、この(たぶん)に電子工作のすべてが詰まっている気がします。

ちなみに元記事は「次の3パターンの意味があるようです」と前置きしてから2つしか挙げていません。11年前の記事に言うことではないのですが、私もレポートでよくやります。「以下の3点について述べる」と書いてから2点で力尽きるやつです。

UNOの真ん中に鎮座している黒いやつ

Arduino UNO の基板中央に、でかでかと居座っているチップがあります。ATmega328P というマイコンで、互換機を自作するというのは要するに、このチップを主役にして最小限の周辺部品だけを足す作業です。

逆に言うと、UNO の基板に載っている残りの大部分は「USBでパソコンとつなぐ」「電源電圧を整える」ための回路だということになります。計算しているのは真ん中の1個だけ。UNOを1枚買うたびに、使っていない便利機能まで一緒に買っている——そう考えると、数百円で済ませたくなる気持ちが分かってきました。

8MHzで済ませるか、16MHzを載せるか

ここが導入編のいちばんおいしいところでした。ATmega328P は8MHzの発振回路を内蔵しているので、その内部クロックで動かせば部品点数を減らせます。水晶振動子もコンデンサも要りません。

一方で、外に 16MHzの水晶振動子 を付けて外部クロックで動かすこともできます。元記事の表現は「16MHzの高速(!)な水晶振動子」。この(!)が2015年だなあと思うのですが、速さの話としてツッコむのは野暮です。大事なのはそこではありませんでした。

元記事が挙げている判断基準は速度ではなく精度です。例として出てくるのが赤外線リモコン。赤外線リモコンは38kHzで点滅させた光に信号を乗せていて、送信するだけなら内部クロックで十分。でも受信は誤差が出るので、一発で正しく受け取りたいなら外部クロックがおすすめ、数回受信して平均を取るなら内部クロックでも大丈夫、と書かれています。

内蔵の発振回路は温度や電源電圧でわずかに揺れます。1秒2秒の話なら誤差のうちですが、38kHzの山と谷を数えるような仕事だと、そのわずかが効いてくるわけです。「内蔵で足りるかどうかは、何を作るかで決まる」。部品を1個減らす判断が、作るものの中身と直結しているのが面白いところでした。

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

2026年の選択肢を考えている私

正直に書くと、「安く小さく量産する」という目的だけなら、いまはチップ単体から組みません。Raspberry Pi Pico 2(公式ボードは5ドル、Amazon で手に入るのはピンヘッダ実装済みの取扱品です)や ESP32-C3 の開発ボード は、USB端子もクロックも電源回路も載った完成品で、Arduino IDE からも書き込めます。2015年に「部品を削って数百円」と言っていた到達点に、既製品のほうが先回りしてしまった格好です。

※ATmega328P 単体も、16MHzの水晶振動子も、2026年現在ふつうに新品が流通しています。廃番になって手に入らない、という話ではありません。

それでも、この記事の価値が消えたとは思いませんでした。既製品を買うと、全部の答えが最初から埋まった状態で手元に来ます。クロックがどこから来ているのか、リセット回路は何をしているのか、ブートローダーとは何なのか——ぜんぶ「もう入っている」で済んでしまう。

それに、2015年は互換機の作り方を調べるのに記事4本ぶんの手間がかかりましたが、いまは Claude に聞けば手順が数秒で出てきます。ただ、出てきた手順を読んでも「なぜ16MHzなのか」は自分で考えないと分かりません。答えを出す速さと、選ぶ理由が分かることは、別の能力なんだなと思いました。

導入編なのに、いちばん長く考えた

この記事、部品はまだ1個も買っていないし、回路図も出てきません。それでも読み応えがあるのは、作り始める前に「何と何が互換なのか」「精度は要るのか」を先に決めているからだと思います。

私はだいたい逆で、とりあえず動くものを作ってから、あとで意味を調べます。動いてしまうと調べないこともあります。……次回は部品選定だそうなので、ちゃんと最後まで追いかけます。

今回の用語メモ

  • ATmega328P:Arduino UNO の中央に載っている8ビットマイコン。Arduino互換機の自作は、このチップに最小限の周辺部品を足す作業です。単体でも売られています。
  • ソフトウェア的互換 / ハードウェア的互換:前者は Arduino IDE でそのまま開発できること、後者はピン配置が UNO と同じで既成のシールドが挿さること。自作でまず狙うのは前者です。
  • クロック / 水晶振動子:マイコンが処理を進めるテンポを刻む信号と、その源になる部品。水晶を使うと精度が高く、内蔵の発振回路を使うと部品が減ります。
  • 内部クロックと外部クロック:ATmega328P は8MHzの発振回路を内蔵しているのでそれだけでも動きます(出荷時の設定では分周されて1MHzで起動します)。外に16MHzの水晶を付けると速く、そして正確になります。
  • 38kHzキャリア:赤外線リモコンが使う点滅の周波数。この速さで光を明滅させて信号を乗せるため、受信側にはクロックの正確さが要求されます。
  • ブートローダー:マイコンに書き込まれた小さなプログラムで、パソコンから送られてきたスケッチを自分自身に書き込む役目を持ちます。自作の第3回で登場します。

関連アイテム

0 件のコメント:

コメントを投稿