Arduino(特にAtmega328)が何故すごいのか
Arduinoって何?って人のために
昔は、電気電子の工作といえば、アンプのキットやらの高級なやつ(私もLuxmanのAシリーズ作りましたねぇ、一度手放しましたが再び買い戻してます)とか、電子ブロック(これも実は買い戻して、なぜか2セットあります)でした。
でも今は、もっと実用的な、もっと良いものがあります。
何種類かありますが、その一つがArduino。
これとRaspberry piがこの市場を開拓してきた、と言っても過言ではないです。
※大人の科学ムックでも、これのサブセットなjapaninoが入ってるセットがあります、今風に使うためのノウハウはこちら。
このムック、かなり入門には優秀な内容なので、もしどこかで手に入れられるならぜひ。
元々Arduinoは、イタリアが大元。
当時大学に在学中だったエルナンド・バラガン氏の修士論文プロジェクトがきっかけと言われています。
そこではアーティストやデザイナーのような人たちが作品を制作するときに電子工学の知識がなくてもマイコンを扱うことができるよう、複雑なしくみを抽象化することで本来の目的(作品制作等)に集中できるようにすることを目的として研究が進められたのです。
それから2年後。
彼の指導教官だったマッシモ・バンズィー氏が仲間とともにこれを元にして新しいプロジェクトを始めます。それがこのArduinoです。
当時の世界的風潮だった「メイカームーブメント」に見事に乗っかって、また値段も格安ということもあり世界で一番普及したマイコンボードと言われるまでになります。
Raspberry piと何が違うの?
実はRaspberry piとはここが大きく違うところで、Raspberry piはどちらかというと教育用端末からはじまっている(のでOSが入っているしLANも基本的に繋げられるようになっている)のですが、Arduinoはもっと基本的な部分、そんな大げさなことをする必要がない部分で使えるようになっています。
たとえば、ちょっとしたLEDやモーターなどの制御、となると逆にRaspberry piのほうが難しい(というより可能だけどかなりややこしくなる)部分がありますが、Arduinoは比較的簡単に可能です。モバイルに単純な制御、となるとArduinoのほうが強いですね。実際私が今作っている小動物撃退器もArduinoベースで作っています。そんなものにLAN,キーボードや画面なんていりませんからね。Raspberryがマルチタスク指向で、リアルタイム系が組みにくい、というのに対してその逆でCPUをプログラムで専有でき、OSがない分メモリ量も節約でき、オーバーヘッドも少ないと言えます。
とにかくロングセラー
Arduinoは、最初の頃から、すでに20年近く経過しています。
(プロジェクト開始からは20年経過しました)
最初はAtmega8だったそうですが、Atmega168(japaninoのMCUもこれ)、atmega328(とAtmega1280/2560)、Coretex-M4となった今も売れ続けています。それだけ世界中の人たちに支持され続けているのがArduinoなのです。
応用性が広い
開発システム(Arduino-IDE)で開発できるMCUは多岐にわたる
これ聞いて皆さん驚くでしょうが、実はArduinoはソフトも優秀で、開発システムであるArduino IDEは、Arduinoだけじゃない色々なハードに対応可能です。
例えば今MSX0として注目されているM5Stackなんかもそうです。
MSXのコードが書かれていないM5Stackは、Arduino IDEで開発が可能です。
これのMCUはESP32と呼ばれるもの。つまりArduinoとは全く違うんですが、それでも作れてしまう汎用性の高さ。
これと前後してでてきた32ビットMCUを使うmbed、Windows IoTも行けちゃったりするのです。
更に応用して、Blue Pill/Black Pillと呼ばれる、小さな32ビットMCU搭載もいけます。
そしてついにArduino Uno R4は ARMベースになり、32ビットになりました。そこまで対応できるのです。
Atmega328を組み込み機器に応用できる
32ビットになったからといって、8ビットのAtmega328とかがなくなる、というわけではありません。
例えば、Arduinoのブートローダを仕込んで、プログラムを流し入れたものを専用ハードに組み込んで動かすことが楽になりました。
これは回路がオープンソースだからこその話。
回路自体オープンソースで公開されている上に、回路そのものが実にシンプルなので、あの形に拘らず色々組み込めます。それにブートコードさえ書き込めて、通信さえできればこっちのもの、というわけです。
組み込み用システムにハード/ソフト両面で革命を起こした
昔のZ80、6502(ファミコンのCPU)、680xシリーズのような8ビットCPUは、開発システムが高い上にややこしく、EPROMに焼いてはつけてデバッグ・・(もしくは高い値段のICE使ってデバッグ・・・)とまぁ機器は必要だわめんどくさいわ高いわだったのです。
それがこのArduinoで一気に個人レベルまで開発が可能になったのです。
おまけに(MCUはちょっとちがいますが)前述の8ビットCPUのROM代わりまでするようになりましたw
(Z80ーMBC2はEPROMなどを一切使っていません)
しかも、必要な機器は、Arduinoとそれに接続できるハード、そしてUSBケーブルと手持ちのパソコンでOK。ROMイレーサもROMライタもICEもいりません。最初に書き込まなきゃ行けないブートコードも、AVRISPとか、互換のUSBISP(安ければ1000円以内で手に入ります)、実はArduino本体があればそれでもいけちゃうという凄さ。
これを革命と呼ばずしてなんと呼びましょうか。
8ビットとばかにするなかれ
atmega328はたかが8ビットですが、性能的には昔の8ビットを凌ぐ性能と言われています。なのでちょっとしたハードウエアにはおすすめです。
たとえば何かを検知してランプを点灯させるとか、ICを制御するとかなら、これで充分でしょう。いやむしろやろうと思えばコンパクトにできるのでむしろおすすめ。
もしこの手の工作やプログラミングに興味があれば、コストはそんなに高くないのではじめて見るのも面白いと思います。頭の体操にもなりますし、小学生高学年以上の子供さんの自由工作にもおすすめですよ。