Superb Garbages 2

千野純一(chinorin)のはてなダイアリーの続きです。

あちゃんでいいのがほんとにいいの

  • Arduino互換機「あちゃんでいいの」とArduino UNOを賞賛する記事を書いたのですが前半の文章が一部なぜか消えているのに気づいてなんとなく非公開にしましたがまあ別に置いといても構わんか。なんか気が向いたら壊れた箇所をもう一度書きます。悲しい⋯。

 

  • ちょっとATtiny13Aとか85(どっちもDIP-8)とかではピンが全然足りない感じのことをやっていて、ATtiny44(DIP-14/秋月で110円)とかATtiny2313(DIP-20/秋月で190円)あたりを視野に入れつつ、とりあえずArduino UNOの思想に敬意を表して、「プログラムとテストを終えたATmega328P(DIP-28/aitendoで230円)をArduinoから外して単体で実装する」ってのもやってみないとなーと思ったわけなんですよ。
  • [ここからが消えてた箇所。ATmega328PなArduinoの変わった互換機をいくつか検討したが、安いからという理由のみで「あちゃんでいいの」にした。本家のArduino UNOを買ってやれと思うがあれは高くて⋯。]
  • [「あちゃんでいいの」はこれはこれでよくできてる。5ピンのUSBシリアルを持ってるなら一番おすすめの互換機かもしれない。]特筆したい点はこれだけと言っても過言ではないが、とにかくスリム。細い系マイコンボードの標準的な幅が600mil(0.6インチ)のところ、あちゃんでいいのは500mil。これはほんとに最小限の数字でありまして、DIP版ATmega328Pをはじめとする「細い方のIC」が300mil幅で、そこから左右にブレッドボードの穴1個分ずつ広げただけなのよ。
  • そんでこのサイズなのにちゃんとリセットボタンと2つの角型LEDがのっかって、Arduinoとして必要な受動素子*1や16MHz*2のクリスタルは裏面に実装する。ピッチはぜんぶ2.54mm(100mil:0.1インチ)だから普段のユニバーサル基板とかと同じなんだけど、部品が詰まってたり表裏別のものをつけたりするのでちゃんと順番を考えてはんだづけしないといけないっつーのは一応要注意。
  • いやー、500milの何がいいかって、ブレッドボードにセンター合わせで刺せることなのですわ。片側5穴のボードだと左右それぞれ3穴使える。600milのは、何かしようと思ったときまず最初に右寄りに刺すか(使える穴が左3右2)左寄りに刺すか(同じく左2右3)で毎回2時間くらいは悩むからね。*3

 

  • Arduino UNOの元々の思想は本当によくできていると思う。Arduinoが出現する前はマイコンというのはきっともっと特殊なもので、PCに直接繋げて制御するなんてことは当然できず高価なROMライタを買う必要があったり、コンパイラはフリー版があっても機能が制限されてたりするのでちゃんとやりたい場合は高価なコンパイラを買う必要があったりした。そしてマイコンボードは試作や実験や評価に使うものなので、実装するときは実装用のチップ(MCU)を新たに用意しなければならず、それにプログラムを書き込む手間も当然ある。
  • まとめると、
     1. PCとの接続がめんどくさい問題
     2. コンパイラがめんどくさい問題
     3. 実装のために新しいチップを買ってこなきゃ問題

    Arduino UNOは、この3つの問題に対して明確な回答を用意したボードなのであった。
  1. Arduino UNOのメインMCUといえばATmega328Pだが、それと同じくらい優秀なMCUがもう1枚実装されているのをご存じだろうか。その名はATmega16U2。*4 こいつは基本的にUSBインターフェースとしての役割しかしない。こいつが載ってるからArduino UNOはUSBでPCに直接繋げることができるってわけ。
    • ちなみにファームウェアアップデートのためなのか、ATmega16U2のプログラムを書き換えるための仕組みもUNOのボード上にちゃんと存在する*5。それを使ってATmega16U2を普通のマイコンとして扱うことも可能らしいが、ちゃんとやらないとボード全体のUSB接続機能が喪失するので、まあそのへんは単なるおまけって感じ。
  2. Arduinoの開発統合環境Arduino IDEは無料で配布されており、C/C++⋯⋯じゃなかったArduino言語のコンパイラも全機能が無料で使える。まあこのへんは時代の流れを見るに当然とも言える展開かもしれない。
  3. 通常仕様*6Arduino UNOに搭載されているATmega328PはDIP版、すなわち古来より伝わる「ふつうのIC」と同じ形をしている。こいつはそもそも基板に直接はんだ付けするということをあまりしないパッケージなのだがUNOもその例に漏れず、基板にはICソケットがはんだ付けされていて、ATmega328Pはそこに刺さっているだけ。つまりこれを取り外して別の場所に単体で実装することができる。
    • もちろんATmega328Pを取り外したUNOは何の役にも立たないただの板になってしまい*7、また新たにDIP版のATmega328Pを買ってこなければ再利用することはできないのだが、それはまた用事のあるときに買ってこればよいのであって実装においての邪魔になることではないし、なにより⋯⋯例えばUNO以外のボードとか、UNOの表面実装版だと、そもそもチップを取り外すことすらできない上、チップ単体にプログラムを書き込むにもそれなりの工夫あるいは道具がいる。
    • ただねえ⋯⋯Arduino状態のATmega328Pを単体で動かすには16MHz(あるいは3.3Vで動かすなら8MHz)の外付け水晶振動子が必要で、それを簡単に内部クロックモードに移行させるような仕組みがArduinoIDEにあればよかったのにな、とは思う。そのへんを変更するにはフューズビットとか、そういうArduinoっぽくない部分を自分で触らなきゃいけないんだよね。あ、いや、ブートローダかも。まだやってないからよく知らない。
    • でもまあ、16MHzの水晶振動子なんてすんげえ安く売ってるし、内部クロックにすると動作周波数自体が遅くなる(8MHz)のでArduinoとしては推奨しないのかもしれないけど。
    • 水晶だけに。

*1:抵抗器とコンデンサ。それぞれ表面実装

*2:あるいは3.3Vで使うなら8MHz

*3:しかもどうせ足りなくなってボードで隠れてる穴からも配線しなきゃいけなくなったりするので左右どちら寄りに刺しても同じ。でも悩む。

*4:古いArduino(R2以前)はATmega8U2だったらしい。さらにそれより古いArduino DiecimilaやArduino Duemilanove等ではAVRではなくUSBシリアルICを載っけてたようだ

*5:USBの後ろにあるICSP(2x3のピンヘッダ)がそれ。

*6:表面実装(TQFP-32)のATmega328Pがボードに直接はんだ付けされているArduino UNO SMDというバージョンもある。意味ねぇ~って思うけど、まあきっとあの部分の容積を稼ぐことでシールドの裏側に何か実装したいとか、そういう理由があるのだろう⋯

*7:それでも上記の通り、ATmega16U2が残ってはいるが。w