Superb Garbages 2

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

マイコンというものを説明してみる試み

  • 確かになんつーか、このblogにおけるここ数ヶ月の文章を読み返してみると、全体的によくわからないことが書いてあるなと感じる。文章がへたくそなのも原因のひとつなんだけど、何よりできるだけ正しく誤解の生まれにくい表現をしようとするとどんどん意味のわからない接続詞みたいなのが増えていってしまうんだ。まー自分のために書いてるから最終的には自分がわかりゃーそれでいいんだけどな。
  • でもまあ少しは反省のような態度を見せつつ、最近よく扱ったり扱わなかったりしているものを基礎から説明してみようか。ほんとにできるんだろうか⋯。
  • ということでまずはマイコンそのものについて。ブラウザによっては、注釈の「*n」はマウスカーソルを乗せるだけでも表示されたりします。

 

  • 最近よくいじってるのはワンボードマイコンというジャンルのコンピュータです。ワンボードマイコンにはCPUとメモリとストレージ*1をワンチップに集積したマイクロコントローラ(ちぢめてマイコン。以下Micro Control Unitの頭字語でMCUと呼ぶことにする)という種類のICあるいはLSIが搭載されており、ボードの中心となるそのチップを活用するためのハードウェアと言えます。
  • そもそもMCUが何のためにあるのかというと、主に組み込み用途です。家電やPCの周辺機器をはじめ、電卓や時計などの各種デバイスやおもちゃ類、小型の多葉式無人ヘリコプター(いわゆるドローン)やラジコンカー、それらを操作するためのリモコンなどなど、電気信号によって動作するあらゆる製品MCUが組み込まれており、その制御を担っています。
  • 様々な用途に使えるMCUですが、前述の通りCPUとメモリとストレージを集積したものに過ぎません。実際に動作するためにはプログラムが必要です。プログラムの制作はWindowsMacintoshLinux等のPCで行いますが、MCU自体はICあるいはLSIの形状をしているので、そのままではPCと接続するのは困難だし、実際の製品の回路設計においても不便です。
  • そこで、PCと接続するためのUSB端子をつけたり、ICやLSIの足(端子)から導線を引っ張って人間が扱いやすいように並べたりしたものがワンボードマイコンです*2。ワンボードマイコンの商品名として「開発ボード」とか「評価ボード」*3といったものをよく見かけるのは、実際にそのような工程で使われるものだからでしょう。
  • 一方、これをホビー用途で購入し、いじくり回して遊ぶ輩が昔から一定数います。例えば誰のことを指しているかは言わなくてもわかるな。また、最近はプログラミング学習だなんだで教育用としての需要も増しているようですね。

 

  • 代表的なワンボードマイコンとしてArduino*4を紹介しておきます。今日はこの名前だけ覚えて帰ってください。
  • Arduinoは、イタリアのメーカ*5から発売されているワンボードマイコンのシリーズで、最初の機種が登場したのは2005年。ホビーや教育分野において一世を風靡した感があり、今なお売れ続けているワンボードマイコンデファクトスタンダードと言えましょう。
  • Arduinoは基本的に、Atmelという会社が作ったAVRという種類のMCUを搭載しています。例えば現在手に入る最もベーシックなモデルArduino UNO R3に載っているMCUATmega328Pです。8ビットのRISCアーキテクチャなチップで、16MHzで動作します。*6
  • そのほか、USBキーボードやUSBマウスなどが簡単に作れるArduino Leonardoや、コンパクトさがウリのArduino Mini/Nano/Microといったもの、拡張性を重視したArduino Mega 2560などなど様々なArduinoが発売されていますが、残念ながらWi-FiBluetoothを搭載した近年のモデルは日本において技適マークを取得しておらず、電波を出すのが違法となるので日本ではほとんど流通していないみたいです。
  • Arduinoの最大の特徴はオープンソースハードウェアを謳っていることだと思います。回路図などは全て公開されており、一定の条件の下、誰もがArduinoを製造し販売することが可能です。かの有名な電子工作の聖地秋月電子などでATmega328Pさえ買ってこれば俺でもそれっぽいものが作れますし、安価な互換機が大量に出回っていることもユーザー層の拡大や技術力の底上げに一役買っているものと思われます。
  • また、Arduinoで動くプログラムを書くための統合開発環境Arduino IDE*7も無料で配布されており、これを使うことでコーディングからコンパイルMCUへの書き込みまで全て行うことができます。対応しているプログラム言語はC/C++に少々アレンジを加えたArduino言語⋯⋯ということなのですが、初心者でも書きやすいように工夫されているだけで実質C/C++そのものと言っていいと思います。ちなみに、Arduino言語で書かれたソースコードスケッチと呼びます。*8
  • このArduino IDEの仕様も公開されていて、定義ファイルやライブラリなどを用意することによってどのようなボードでもArduinoと同じようにあるいはArduinoとして開発ができるようになります。*9 実際、公式/非公式は様々ですがArduino IDEで開発ができるマイコンボードはとてもたくさんあって、やれないボードを探す方が難しいくらいです。*10

 

  • 以上、マイコンというものを説明してみる試みでした。次回はなぜPCではなくマイコンで遊ぶのか、あたりを説明できればいいなと思いますがほんとにできるんだろうか⋯。

*1:パソコンで言うとHDDとかSSDとかにあたる。最近のマイコンでは主にFlashROM(例えばUSBメモリの中に入ってるやつ)が使われてることが多い

*2:言葉としては「シングルボードコンピュータ」と似てるけど別物。違いは、例えばワンボードマイコンはOSが不要

*3:「評価」というのはおそらく開発に先立ってMCUの性能や機能を試し、これから作ろうとしているi製品に相応しいMCUなのか確かめるみたいな意味

*4:アルデュイーノあるいはアルディーノと読む。日本では自信なさげにその中間的な発音をする人が多いらしい

*5:メーカ名も「Arduino

*6:マイコンは基本的にRISCが多い。当てはまらないのはZ80系とか8051系とかのいかにもレガシーなやつと、特殊なやつでたまーーーにx86系を見かけるくらいかな?

*7:Windows版、Macintosh版、Linux版各種揃ってまっせ

*8:スケッチはなぜかCっぽく書くのが普通らしく、C++っぽく書かれたものはほとんど見かけない

*9:あるボードをArduino IDEに対応させることを俗に「◯◯のArduino化」みたいな言い方をすることがある

*10:言い過ぎかも