敷居が低すぎる?

ブレッドボーディングするのに簡単な回路図を作成するアプリをさがしていたのだが、目的にぴったりのWEB Serviceを見つけた。
最初はEAGLEというeCAD ツールを使おうと思っていた。 これ自体、配線板のラウティング機能もついた本格的なもので、しかも手のひらサイズの二層までの配線板なら無料バージョンで可能という秀逸品だが、 今回発見したのは
Circuitlab.com というWEBアプリケーション。 回路図の作成がこんなに簡単でよいのか?というくらいに簡単なDrag and Dropで作図ができる。 しかも回路シュミレーション機能がついている。 ホームページに簡単な紹介ビデオがあるが、 作成した回路図をWEB上でシェアすることもできるようになっている。 1週間に20分までなら無料。 商用に使わなければ1年間の使用料が$39ドル。 エディター使い放題でSPICE解析もできるといういことで いわゆる趣味の電子工作、電子回路の自宅学習には非常に便利と思う。
3分の紹介ビデオを見れば使い方はほぼわかるので是非お試しを。 こんなに敷居が低くてよいのか、と思わず思ってしまうのである。

American Piのほうが好きかもしれない。

というわけで、BeagleBone Black(以下BBB)である。 値段が$45ドル。Raspberry Pi (以下RasPi)の実勢価格が$42なので比較してしまうわけだが、あちらが英国製なのに対して、こちらはTIがサポートするコミュニティハードウエア・ソフトウエア。米国製なので、別名 American Pi  ハード的にはアームプロセッサも一つ格が上のグレード、そしてクロックも1Mhzと優位である。回路図を眺めるとちゃんとパワーマネージメントのICが実装されていて、Raspberry Piとは大違い。USBクライエントからの5Vととバレルプラグからの5Vの供給も別チャンネルでしっかり管理されている。(ICの仕様書では7V AC入力となっているんだけど、交流でも大丈夫ということか?)基盤上にはリチュームイオンセル用のパッドまで用意されている。 そのかわり、USBホスト側から5Vぶっこんで電源元にする、というRasPi では許されるいい加減なことがこちらではできない。RasPi に触発されてこの値段になったのは明らかで、前のGeneration (Beaglebone、以後BB)は90ドルくらいした。自由競争というのはいいことだ。  BBにはついていなかったHDMIソケットもBBBにはついていて、かつ2ギガバイトの内臓eMMCにはLinux が実装されているため、付属してくるUSBケーブルをPCに接続(してminiUSBソケットにPC側から電源を供給)するだけでとりあえずは始動する。 イーサネットを使わなければ、専用のUSBドライバーを組み込まないとWindowsとはお話しをしないが、Windows 8 ではコントロールセンターから第3者のドライバーを組み込むことを許可しないとWindows 側がインストールを拒否するので注意。 親機がLinuxの場合は専用ドライバは必要ない。何もしないでもUSB経由のIP接続が可能である。

eMMCに最初から組み込んであるLinuxはAngstromという組み込み系のもので、その起源を紐解けば、Free Zaurus などというものまで出てきて日本人としての因縁をかんじたりする。 自分の環境ではすぐにDebian Wheezy に書き換えてしまったが、これは単にRasPiのRaspbian がDebian そのもので、新しいディストロを覚える手間を省きたかったということが大きい。

で、これにNginx +mysql + php5を実装してWeb Serverを試してみた。 手順はRasPi のときとまったく同じなので、詳しく述べないが、ModX Revolutionという、バックエンドがかなり重いCMSをインストールしてみたところ、問題なく使える。 RasPi では、WEB作成画面の反応が遅くなって実用にならなかった。 RasPi でも少し軽めのModx Evolutionのほうは軽快に使えるので、それはそれで良いのだけれど、あらためて、パワーの違いを感じたわけで、 なんとなく、RasPiよりはBBBのほうになびくわけである。 ちなみに内蔵のeMMCメモリーへのアクセス速度は14MB/S と、RasPiでクラス10のSDカードを差した場合とほとんど変わらず、単純にプロセッサの能力の差がでているようだ。あとはramの違いかRAMの速度も400Mhzと同様。

その他に気が付くところとしては、
RTC が実装されている。
外に出ているIO ピンが 多い(実はそのうちの半分くらいはHDMIとeMMCの入出力ピンとして使われているので、全部使うにはこれらのデバイスを無効化する必要がある。が、それでもRasPiよりも多い。)。
このIOピンはメールコネクタヘッダになっていて、リード部品などそのまま差し込めるので、RasPiのヘッダーピンより使いやすそう。

パワースイッチ、リセットスイッチ、 そして、ブートをSDカードから行うためのスイッチ、とミニボタンスイッチが三つもついている。
パワーLEDのほかにユーザーがコントロールできるLEDが4つついている。
Shutdown -h now を実行すると、ちゃんと電源が落ちる。前述の電源コントローラICがついていることによると思われる。再起動はパワーボタンを押すだけ。
RasPiに比べて見劣りするのはUSBホストソケットが一つしかついていないことくらいか。
それとVideo Codecがハードウエア処理ではないので、HTPC用途ではRasPiに軍配が上がりそうだ。
BoneScriptというNode.js上で動くJavascript ライブラリがAngstromには実装されていて、これをやはり実装されているCloud9 というブラウザベースのIDE上で開発していく、ということらしいが、Debian で置き換えてしまったので、とりあえずはRaspiと同様、Pythonを使えばGPIOモヂュールを使って外部とのインターフェースも可能なようだ。(Adafruit.comに多くの教材がアップされている) BoneScriptもそのうちDebian/UbuntuをサポートするようなのでJavaScriptによる外部機器のコントロールのほうは少し待つとしようか。

Physical Computingとして、去年まで熱を上げてたArduinoはどうするよ、と自分に突っ込みをいれたくなるが、これが答えが出ていて、「両方とも使う」というもの。 Arduinoのスケッチ自体はサーバーとの通信とそれに基づく外部接続部品とのインターフェースに特化させ、つまり、簡略化したループを回し、難しいところはBBBでPytonなり BoneScriptを使って行ってシリアル通信でArduinoに指示をしたり、データを受け取ったりする、
従来はこのサーバーの側がPCでDelphiクローンのオープン版Lazarus。 いかにももったいない感じだったが、BBB/RasPiにすると見た目にも機能的にもバランスが取れると思う。

BBB とRasPi 比較表

Raspberry Pi を 頭を使わずに食べてみる(Eating Raspberry Pi Headless)

旅行から帰ってきたらRPi が届いていたので早速食べてみた。本来ならば、キーボードとモニターを接続して初期設定することになるのだが、最初から小規模のhtmlサーバーとして使おうと考えているのでモニターやキーボードは接続せず (いわゆるheadless)、EtherNetへの接続だけでの設定を試みた。 ネット上から拾ってくるオフィシャルOSであるRaspbian ”wheezy” (Debian LinuxのRPiポート)のイメージではsshが最初から組み込まれているのでこのイメージを展開したSDカードをスロットに挿入し、ネットワークケーブルを接続しておいてから電源を接続する。 RPiのLEDが華やかに点滅を始めるので、これが一段落したのちに、ラウターのDHCPテーブルを眺めてみるとRaspberrypiの名前でIPが設定されているのでこのIPに対してSSH接続を行う。自分の環境では192.168.1.122 に設定されていたので

 ssh pi@192.168.1.122

これをcygwin ターミナルから入力する。

最初の設定ではuser がpi, password がRaspberry と設定されている。
なお、母艦はWindows 8なのだが、巷で人気のあるPutty ではaptitude や、raspi-configなどAscii Codeでグラフィック表示を行うアプリでは表示が崩れるようなので、ここではcygwin からオプションでインストールしたSSHクライアントを使ってアクセスしている。

Putty terminal でrapsi-configを実行。

Putty terminal でrapsi-configを実行。

cygwin TerminalからのSSH アクセスで raspi-configを実行

cygwin TerminalからのSSH アクセスで raspi-configを実行


最初のログインでは「まずRaspi-configを起動して設定を行ってください」というような意味のメッセージが出る。 モニターとキーボードを使っていれば、自動的に起動するようだが、headlessではマニュアルで進めることになる。
sudo raspi-config

このraspi-config の設定画面、インターネットなどで見る設定画面とはメニュー構成が異なっている。バージョンが上がっているのだろう。 去年の今頃から発売開始になって以来、環境は日々進化しているようなのでネット上の情報は十分吟味する必要がありそうだ。ネットでみると大変そうな作業がツール側の対応が進んでいて実は簡単にできるようになっていました、というような事例が多々ありそうだ。

例えば、最初に使うOSのイメージは2GBなので、サイズの大きなSDカードを使っている場合、このRaspi-configの最初のオプションexpand rootfsを実行することにより、ファイルシステムのサイズをSDカードのサイズいっぱいまで拡大する作業、 は必須項目なのだが最初のころはこれも手作業でやっていたようなのだ。

次の項目、Change Password は、後々別のユーザーを追加するにしても、やっぱりやっておいた方がよい。
Boot to desktopは、モニターを使っていた場合、いちいちstartxとコマンドラインから立ち上げるのではなく、直接GUIを立ち上げてしまおう、というオプションだが、今回の使用目的とは関係ないのでスキップ。

Internationalized option ではkeyboard、locale,time zoneなどが変更できる。 Default ではUKのキーボード配列、使用場所英国になっているため、適宜変更。
Advanced option ではメモリースプリットやhostnameなどが変更できる。モデルBの512MBバージョンではGPUに64MBが振り分けられている。headless で使うということであまりグラフィック関係にメモリーは必要ない、と考えられるのでメモリースプリットにかんしては16MBに変更しておく、
OverClock は興味のある分野ではあるが、とりあえずはパス。 ちなみにつかうとRPi内部のフューズが切れて例えクロックを元に戻しても履歴がわかるようになって、保証対象外となるそうである。というのは古い情報で、Raspi-configで設定するオーバークロックはターボモードと称し、温度が85度以上になると自動的にステップダウンする仕組みになっているらしい。補償対象内の設定だそうだが、チップのばらつきにより、設定によってはブートしなくなる可能性あり。この場合、シフトキーを押しながらリブートしろ、とあるが、こちらはヘッドレスで動かしているので、復帰の仕様がない。
Enable Camera というのはそのうち出てくるPI カメラモジュールに関した設定。
Add to RasTrack はRPiのユーザーがそれぞれ自分のPiを登録し、それをマップで確認できるサービスで登録するのは任意だ。日本はまだ100個台の登録状況であるが、隠れユーザーはこの何倍もいるはず。 街のレベルまで登録するので、ご近所さんで食べてる人が何人いるか確認できてそれなりに楽しい。

Finish を選択するとリブートするか聞いてくるのでYESを選択。

ファイルシステムのサイズ変更にしばらくかかるので他の仕事をやりながら気楽に待ち、LEDの点滅が落ち着いたら、もう一度sshでログイン。 このタイミングでraspbianのアップデートも行っておく。

sudo apt-get update
sudo apt-get upgrade

(Update でデータベースのアップデートをおこない、upgradeで最新のモジュールに更新する。)

自分はDebian Base のUbuntuをデスクトップで使ったり、使っているNAS(Wester ditigal 製 Mybooklive)がDebian で動いているなどの経緯からDebian Linuxはある程度馴染みがあるのででほとんどストレスがなく設定できた。

ところでRPiには電源スイッチがない。電源を落とすにはプラグを抜くことになるのだが、その前にシステムをシャットダウンしておくのが利口なようだ。プラグを引っこ抜いてSDカード上のイメージが破損してしまった、というような報告がネット上に散見される。

sudo shutdown -h now

五個あるLEDのうち電源表示の赤いLEDだけの点灯になったら多分安全。 ここでプラグを抜くのだが、機械的ストレスをPRi本体に与えない、という観点からRPi側ではなく、電源プラグ側のコードを抜く。

電源だが、700mA以上必要、となっている。 携帯の充電器では 400mA定格が多いという記述もネット上で見ていたので、手持ちのスマホ携帯の定格を調べてみたがいずれも1Aとなっており、問題なさそうだ。

裸のままのRPiではケーブルをいくつも接続すると非常に不安定になる、のでケースは必須に思われる。ネット上では厚紙で作るケースの設計図なども落ちてはいるのだが 自分は見栄えに引かれてアクリルの透明なケースを買った。が、電源を入れっぱなしにしておくと、結構暖かくなる。 オーバークロックなどヘビーな使い方をするのであればヒートシンクを追加するか、最初からアルミのケースのほうがよいかもしれない。

次回は母艦からのGUIアクセスのためのTightVNCの導入、Wifi モジュールのインストールおよびIPアドレスの固定をおこなった後、nginx, php, mysqlの導入の顛末を述べる。

Raspberry Pi を注文してみた

去年の初めころからRaspberry Pi というクレジットカードサイズの電子モジュールのプロジェクトがMakerサイトなどで話題になっており、Arduinoと同じようなものかなあとぼんやり思いつつも、あまり趣味の幅を広めてもしょうがないので手つかずになっていた。

今年の初めに久々に手にした手作りPCの雑誌に80ドルでパソコンを作成、という記事があり、興味をもって読んでみれば、Raspberry Piを使ってLinux machine を作りましょうという記事であり、 これで初めてRaspberry Piのなんたるかを知ることとなった。(以下、Raspberry Piといちいち書くのが大変なのでRPiと略します)

さらにYoutubeでもこのRPiを32台クラスタ化してミニスーパーコンピューターをつくりました、ちなみに機械構造はレゴブロックです、という、なんともおいしそうな話がアップされていた。

で、ネットで調べてみると、ヘッダーでIOピンを直接接続できるということはさておいて、HMDI,SDカードソケット、USBソケットx2、EtherNetソケットX1と最初からコンピューターの周辺機器への接続が可能なようになっている。
それでもすでに自宅には3台のデスクトップパソコン、2台のノートブックとと2台のNASが稼働しているわけで、これ以上コンピューターを増やしてもしょうがないのでほおっておいたのだが…

昨日、他の方のBlogを見ていたら、RPiにWeb Serverを実装する云々、という記述を見つけた。 考えてみれば、 使われているハードの能力が初代のXBoxと同等または若干上、 実装されているRAMが512MB。 SDカードスロットから使うLinuxのImageが2GB程度ということなので、8GBくらいのSDカードを使えば WEBサーバーとして十分いけそうである。 電減が5V700ミリA以上の携帯用チャージャー(パワープラグがミニUSBなのだ)ということなので、520W電源のPCをサーバーとして常時つけっぱなしにしておくのに比べれば、電気代の節約になりそうだ。 ということで言い訳ができたので、さっそくAmazonを眺めてみれば現在主力で売られているmodel Bという機種は42ドルである。 従来見ていた雑誌などの記述では35ドルとあるが、最近ドルは弱いからねえ。

さっそく注文すると同時に、Raspberry PI User Guide というebookを購入した。 ebookのほうは即Nexus 7 Tabletにdownload できたので、現物が到着するのを待ちながら、こちらをぼちぼち読みだしている。

この書籍は2012年の6月頃に出版されており、実際のLinuxの導入などについてはすでに情報が古いと思われるが、この本を書いているEben Uptonという人がRaspberry Pi 産みの親であり、RPiを開発し、販売に至る経緯が詳しく載っていて非常に面白い。

この本を読んでわかったのだが、筆者の思い描くRPiの第一の使用用途は子供たちのコンピューター教育だ。 プログラミングができる若い世代が育っていないことへの危惧、それは現状を眺めてみればゲームを開発したいという希望を述べる高校生がいても実際に聞いてみれば学校”IT class”で習っているのは特定のOSのGUIをエンドユーザーとしてどう使うか、エクセルやワードの使い方や簡単なWEBページの書き方ぐらいで、肝心のプログラミングについては全く知らない。 自宅にある”コンピューター”と言えばxBox とかWiiで実際にプログラミングを勉強できる環境はなく、 例えパソコンが自宅にあったとしても、親が実用として使っていれば、パソコンを壊してしまう可能性が無きにしも非ずのプログラミング学習に避けるような状況でもない。

いわゆるデジタルデバイスの類は用途が固まりすぎていて、子供たちの創造意欲を掻き立てるようなツールにはなりえない。

筆者はプログラミングを教えることによって個人の能力がコンピューターばかりではなく、ほかの分野でも問題解決の思考に役立つという信念を持っていて 大学で教えた経験、そして実際の企業の開発部門の長としての経験から このような(英国の)現状を嘆いていた、ということが文面からひしひしと伝わってくる。

そんな状況で、実質25ドルくらいで10代の子供でも作れるようなプログラミング可能なコンピューターボードを作ってしまおう、という思いからこのプロジェクトは育っていった。 本人に言わせれば”25ドル”と言った覚えはなく、”教科書1冊くらいの値段で購入できる”ということをインタビューで述べたのが、レポーターが親切にドルに置き換えてくれたようで、本人は教科書はもっと高価だと思っていた節がある。
この「子供のために、裕福な家族でなくても出費がかさまないで、個人のパソコンが作れる」いう設計思想が、実機の仕様を決めている。
1)HDMIの出力のほかに古いTVにも接続できるようにRCA出力を備えている。
2)マイクロやミニのSDでは小さすぎて子供たちが扱えないので、普通サイズのSDカード。←古いカメラ類からリサイクルすればよい。
3)電源は巷にあふれているはずの携帯電話の充電器が使えるようにする。
などなど。
OSはフリーのLinux, 最初の試作機の時点ではハードの能力が低かったため、プログラミング言語はPythonに限定。(Raspberry PiのPIはPythonからきている)

ところで 筆者は最初RPi を ABCMicroと呼んでいたらしい。 これと現在発売されている機種がmodel A (Ethernetなし、USBx1)とModel B(Ethernetあり、USBx2) と命名されていることにピンとくる人は英国のパソコン事情に相当通じた人だ。 80年代にBBCが英国の子供たちのコンピューター教育を推進するためにBBCマイクロという構想を立ち上げ、これにコンペで参加したAcorn社のパソコンがその後大量に英国の学校で採用されたという経緯がある。 model A, Model B はその時のBBCMicroのモデル名なのだ。 さすがに英国人である。 茶目っ気がある。

筆者たちが最初にRPiを持って行ったのもBBCだったという。 ところが30年前とは環境が変わっていた。 法律が変わり、テキストブックの販売、教育番組のプロモーションと一緒にハードウエアをうるような以前のような行為は独占禁止の制限からBBCとしてはできない、ということがわかる。

そのかわり、テックジャーナリストが自分のブログに紹介ビデオを掲載してくれることになって、このプロジェクトの存在が知られるようになる(2011年5月)。 最初は数千個のバッチ生産で終わらせることになっていた計画が2011年のクリスマス時点でそれではすまないことが認識されはじめ、購入の意思表示をした人たちが2月29日の発売前にすでに10万人に達した。出荷までに10万台の部品を収集できるめどはなんとか立てたものの、オンラインオーダーの処理、梱包出荷の手間を考えるとプロジェクトの有志だけではいかんともしがたいことを悟り、英国のマイクロ専門業者2社が販売を代行するという合意をとりつけ、2月29日の発売にこぎつけた。
この2社(RS Components, Element14)のWEBサイトは両社とも発売当日注文が殺到したためにクラッシュしてしまい、接続できない状況が続いたという。 一人につき1台という制限がついていたのにもかかわらず、Element14のサイトではピーク時1秒間に7台のRPiが注文された。 この日のグーグルでは”Raspberry Pi”の検索数が”Lady Gaga”を上回った。

ではRPiで実際に何ができるか? 前述したようにIOピンが出ている(GPIO=>,SPI,I2C)ので、直接ハードウエアをたたけるようになっており、Pythonを使ってほかの機器の制御が可能。
メディアセンターとして使用。もともとメディアセンター用に設計されたワンチッププロセッサなのでビデオデコーディングなどに最適。
3Dグラフィックとマルチメディア機能があるので自作ゲームのプラットフォームに使える。
などなど。

実は30年以上前、自分が最初に手にしたコンピューターは英国Sinclair社のZX-80というものである。パーソナルコンピューターとして初めて200ドルを割ったものだった。当時日本から米国に駐在となった自分は日本でNECのTK-80がほしいなあと思いながら手が出せずにいた。米国ではほかにもタンディとかAtariとか売り出しはじめていたのだが、通信販売でSinclairを買った。箱を開けてみたら、何とも小さいおもちゃのような代物がでてきたのを覚えている。しかしながら、Z80のプログラミング、Basicの基本はこれで覚えた。多くのユーザーと同じように(RFIがあまりにもひどかったので)DIYでアルミの箱に基盤を移し、メモリを亀の子はんだ付けで2倍に増やし、メンブレーンのキーボードもフルキーボードに移植した記憶がある。 その後、フロッピー付きのTRS-80 に移行したが、Sinclairにはかなりの思い入れがある。 上記のユーザーガイドでもSinclairのZX-81 やspectrumに触れるくだりがあり、非常に懐かしかった。

今回購入したRPiについてはサーバーにしてしまうつもりだが、なんといっても30~40ドルの品物である。 もう一台買って少し遊んでみようか、と最初の一台が到着する前からいろいろ妄想を膨らませている。