マイコン・ボードRaspberry Piを使う前に知っておきたいこと (1)
■Raspberry PiはLinuxとWindows10が動く
●マイコン・ボードは用途に合わせて選べるとよい
電子工作ではマイコンを使いたい場所が多くあります。
例えば、温度センサから読み込んだ値が「華氏」だったとしたら、日本で一般的な「摂氏」に直したいですね。電子回路で変換するのは、そうとうな技術が必要ですが、1個100円台の8ビット・マイコンならば、変換式をプログラムで書けます。式ではなく、換算表を作っておいて表から求めるというプログラムもたやすく書けます。
試作時間を短したいので、市販のマイコン・ボードを利用したいところです。マイコン・ボードを設計するのは敷居が高いです。なので、実績のあるマイコン・ボードを購入して、ソフトウェアの開発に集中しましょう。候補は次の3種類です。
- Arduino
- mbed
- RaspberryPi
大雑把に、開発するプログラムの行数で比較すれば、Arduinoは10行ぐらいから数百行のコンパクトなサイズに適しています。
mbedは10行程度から千行以上の小規模から中規模に適しています。
Raspberry Piは、10行程度から、頑張れば数万行のプログラムの開発ができます。何でもこなせます。ただしリアルタイムな仕事は得意ではありません。
もう一つ、マイコンは繰り返しが多い演算が得意ではありません。そういう用途にはFPGAが適しています。
まとめると、まず、Arduinoを使いましょう。
Raspberry Piは、Windowsを隅から隅まで利用するのに時間がかかったように、ゆっくり使ってなれることを最初の目的にしてもよいと思います。
●マイコン・ボードでOSが働くメリット
Raspberry Piでは、LinuxとWindows10 IoT Coreという二つのマルチタスク・マルチユーザのOSが動きます。
◆Raspbian Jessie
Linuxは、ベル研究所で配布していたUNIXと同様なシステムを、リーナス・トーバルズが作り始めたOSです。開発には多くのソフトウェア開発者が携わっていますが、利用するのに費用はかかりません。
サーバ向け、個人のPCとしての利用、機器組み込み用など、Linuxにはいろいろなディストリビューションや利用方法があります。スマホに使われているAndroidもLinuxカーネルを使っています。もう一つのスマホのiOSは、BSD UNIXの流れをくむものです。
Raspberry Piでは、いくつかのOSが動きますが、LinuxのなかのDebianというディストリビューションをベースにしたRaspbianが多く使われています。2016年1月現在、Jessieが最新バージョンです。
◆Windows10 IoT Core
マイクロソフトが企業で使う用途用OSにWindowsNTを作り、堅牢だったので個人(クライアント)用にもWindowsXPをリリースし、現在はWindows10になっています。同社のOSには個人用途とサーバ用途の2系統があり、個人用Windowsでもサーバ・アプリケーションを動かせます。異なるのは、TCP/IPの同時接続数で、マシンの能力の限界まで扱えるのがサーバ・バージョンです。個人用途では同時接続数が限定されます。どちらも有料のOSです。
2015年7月に、Raspberry Pi 2 model Bで動作するWindows 10 IoT Coreを出荷しました。無料で使えます。2015年12月には、Proバージョンをアナウンスしました。
マルチタスク・マルチユーザのOSは、OSの中でも規模が大きいものの一つです。数百人から数千人のユーザが一つのコンピュータを同時に利用できます。もちろん、1台のPCに利用したいときに家族がログインして、個人情報なメールやファイルを互いに見えない状態で利用することもできます。まったく一人がWebブラウザでyoutubeを見るだけに使うこともできます。
OSが動くと、いろいろな用途に利用できます。その代償として、たくさんのリソースが必要です。リソースとは、CPUの処理能力、大容量のメモリ、ストレージ、通信機能などを指します。それらのコストは年々下がってきていて、2015年に発表されたRaspberry Pi Zeroは5ドルです。
●OSがないと不便か
Raspberry Pi Zeroに搭載されているマイコンはブロードコムのBCM2835です。イギリスのARMがライセンスを出し、ARM11というプロセッサ・コアに、携帯電話などに必要な周辺機器を盛り込んだ32ビット・マイクロプロセッサです。マルチタスク・マルチユーザOSでは、MMUというユニットが必須です。MMUはMemory Management Unitの略で、仮想記憶OSのメモリを管理をサポートします。BCM2835には搭載されています。
たとえば、スイッチが押されたらLEDを点灯する、という電子工作を行うのに、Raspberry Pi は必要でしょうか。もちろん可能ですが、8ビット・マイコンでも実行できます。
8ビット・マイコンのArduinoUnoにOSはありません。I/Oポートを利用してセンサをつなげられます。ストレージとして利用できるSDメモリを、OSがなくても利用できます。
13番ピンの電圧を0Vにしろという命令を実行すると、13番ピンが、ディジタル出力に設定されれば、すぐにその命令は実行されます。
電気炊飯器の制御を行うマイコンにOSは必要でしょうか。なくても制御のプログラムを作れますが、シングルタスクOSがあったほうが開発しやすいでしょう。
●OSがあると便利か
RaspberryPiの入出力を行うGPIOピンの11番を0Vにしろという命令を実行しても、何も起こりません。GPIOはOSが管理するリソースの一つです。マルチユーザのOSですから、GPIOの11番を複数のユーザが独自に0Vにしろとか3.3Vにしろという命令を同時に実行させたら、こまるのです。
なので、一人のユーザしか使わないからといってリソースを独り占めしようとしても、却下されます。実際にプログラムを作るときは、調停を可能にしたライブラリを利用します。
便利なこともあります。RaspberryPiをネットワークにつないで、ほかのマシンからリモートで開発でき。隣のWindowsからSSHというプロトコルでつないでシェルを利用できます。同時に隣のMacからもSSHでつないで開発ができます。
RaspberryPiでWebサーバを動かします。Webサーバのインストールは1行コマンドを打つだけです。GPIOにつながった温度センサの値を読んできて、Webサーバが表示できるように設定すれば、ほかのマシンからも温度を読み取れます。
同様なことは、Arduinoやmbedでもできますが、どのユーザに読み取りを許可する、どのユーザにデータを書いてもよいなど、セキュリティの設定、Webで使うhttpsといったセキュアな通信などは、Linuxが得意です。
バックグラウンド
市販のマイコン・ボード;ArduinoUnoに使われているAVRマイコンや、同じ分野に使われるPICマイコンは、ブレッドボード上に回路を組んで動かすことができます。ただし、開発ツールのインストール、実行形式のプログラムの書き込みなど、なれると手間ではないが、ちょっと大変です。
ARM;金額ベースもしくは数量で比較するかで変わってくると思いますが、マイクロプロセッサは、インテルとARMの2社がダントツです。
ARMは、マイクロプロセッサを作っていませんが、ライセンス契約をした、ブロードコム、フリースケール、NXP、ATMEL、STマイクロ、ルネサス、アップル、サムソンなどが製造会社です。実際の製造は、自社工場もしくは台湾にある製造を専門に請け負うTSMC(Taiwan Semiconductor Manufacturing Company Limited)などに委託します。
インテルのマイクロプロセッサは、実行速度を追及しています。そのため、発熱量が多いです。ARMはスマホやモバイル機器に組み込むために消費電力が少ないことを最大の武器にしたマイクロプロセッサを用意しています。系列は2本立てです。
仮想記憶OS;この数年、パソコンのメモリがとても安価になりました。それまでは大変高価だったので、メモリを有効に使う工夫がコンピュータに組み込まれていました。実際に搭載したメモリの容量の数倍から数百倍のメモリを使える機構です(仮想記憶)。
- 仮想記憶OSが動くハイエンド
- 消費電力が少なく、従来の8ビット・マイコンにとって代わる組み込み分野
また、マルチユーザ対応のOSであれば、同時に複数のユーザ用のメモリ領域を確保しないといけないし、相互に干渉しないように管理をしなければいけません。それらの管理を支援するのがMMUです。
費用;LinuxのOS自体は無償です。インストールからシステムの構築を自分で行うこともできます。マルチタスク・マルチユーザのOSは、規模が大きいです。したがって、自前では解決できないことも起こります。そのため、RedHatなどは、サポートに対して費用を払うような料金体制になっています。サポートが不要なユーザは、ほぼ同じ中身ですがCentOSというディストリビューションを入手できます。