RAPIRO(ラピロ)をMk-IIにする(Raspberry Pi B+からRaspberry Pi 2へのアップデート)

th_raspi_update_1

これまでラピロの頭部には消費電力優先でRasbperry Pi B+を使用していましたが、ちょっとPi 2に変えてみたらどうなるかなーと思う案件が出てきたのと、ラピロの胴体にArduino基盤の放熱用の穴を開けたくなったのが重なったので、これを機にPi B+からPi 2に乗せ替えることにしました。ラピロがラピロMk-II(マークツー)へと変わるときが来たということです。

Raspberry Pi 2へ環境を移行するにあたって、一からまた同じ環境を組み上げるのは工数的にかなりキツイので、これまでPi B+で使っていたSDカードの中身のOS(Raspbian)を、Pi 2でも動かせるようにアップデートすることにします。以下の記事を参考にさせていただきながら進めたいと思います。

では、さっそく。

何はともあれ、まずは現在のSDカードの中身のバックアップをとります。これは本当に大事。失敗してデータが吹っ飛ぶと、ラピロをいじるモチベーションが一気に下がります(経験済み)。

Macでのバックアップの取り方については、過去に一度やっているので、こちらを参考にします。

バックアップがとれたら、作業開始です。SDカードを元のPi B+に差し込んで、Pi B+を起動し、以下を順に実行していきます。詳細については、元記事を参考いただければと思います。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get install raspberrypi-ui-mods
$ sudo shutdow -h now

upgrade, dist-upgradeはちょっと時間がかかるかもしれません。

ここまで出来たら、Pi B+の電源を落として、一度SDカードを抜きます。

こちらの方とかこちらの方の手順だと、ここまでで完了・無事起動しているようですが、自分の環境はNOOBSを利用して組み上げたものなので、このままPi 2にSDを挿しても起動しません。元記事に記載されている、もう一手間が必要です。

この作業はPC(自分の場合はMac)で行います。ここから”NOOBS Lite”のZIPを落としてきて解凍します。元記事には、「中に入っているファイルの内、”recovery.cmdline”以外を全部SDカードのトップディレクトリにコピーしな!」と書かれているのですが、SDカード上には、少なくともMac上では”BOOT”と”RECOVERY”の2つのパーティションが見えます。この2つのパーティションの中を見ると、”RECOVERY”の方がコピー元とファイル構成がほぼ同じようなので、”RECOVERY”の方のトップディレクトリに指定されているファイルをコピーします。

ここまでできたら、SDカードをPCから抜いて、Pi 2に挿入。無事に起動が確認できました。ついでに、

$ sudo rpi-update

でファームウェアのアップデートもしておきました。

 

ちなみに、Pi 2で処理性能が上がったのは良いのですが、それに伴う発熱がちょっと心配なので、自分はこんな感じのヒートシンクを貼り付けています。

どれぐらい効果があるのかはわかりませんが、何の対策もしないよりかはマシかと思います。

 

さて、ソフト・アップデートは無事終わったので、あとはラピロの本体の穴開けです。これはPi 2への交換とは全く無関係の作業なのですが、せっかくPiの載せ替えで配線やらいろいろ外してしまうので、この機に一緒にやってしまいます。

そもそもなんでこんなことをやろうとしているのかというと、ちょっとXBeeドア開閉センサの検証のためにラピロの電源を昼夜入れっぱなしにするのを一ヶ月ほど続けていたのですが、そしたら(サーボへの電源供給は行っていなくても)Arduino基盤の入っている胴体部分が随分熱くなっていて、自分の精神衛生上よろしくないなあと思ったことによります。

というわけで、穴あけ開始です。穴の開け方はスピーカーのときと同じなので省略です。

th_raspi_update_2

こんな感じで、後ろ側を全体的に通気性を良くしてみました。

th_raspi_update_3

それから、ラピロの頭の中に熱がこもるとイヤだなあと思って、とんがりの後ろにも大き目の穴を開けてみました。。。だんだんやることが大胆になってきました。

th_raspi_update_4

合わせると、こんな感じです。

 

以上で改修作業は完了です。早速ラピロの電源を入れて諸々チェックしてみたところ、一箇所うまく動かないところがありました。(センサ用の)Arduinoとの通信や8x8LEDマトリクスの接続に利用しているI2Cが有効になっていないというエラーです。

これについてちょっと調べると、最近のRaspbianはI2Cの有効化の方法が従来から変更になっているということでした。有効化の方法はさして難しくないので、以下を参考にしていただければと思います。

自分はraspi-configを使う方法でやりました。

ソフト的な不具合はここだけで、あとはちゃんと動いてくれました。使ってみると、諸々の動作が速くなっているのが明らかにわかるので、『これぞMk-II!』という感じで嬉しくなります。特にnode.jsが随分速くなりました。

 

。。。が。

 安定性は今のところ、Pi B+を使っていたときよりも悪くなっています。Webサーバ×2+音声認識サーバ(Julius)+Julius処理用プログラムを同時に一気に立ち上げると、落ちます。また、スピーカーを鳴らしながらGPIOで多色LED光らせたりラピロのサーボを動かしたりしていると、落ちます。

結構頻繁に落ちるので、Raspbian のPi 2対応が完了して動作確認ができた時点で、一度改めてバックアップをとることをオススメします。データが吹っ飛んでもう一回アップデートするのも面倒だと思いますので。

消費電力の問題なのか、放熱の問題なのか。そんなに難しいことをさせないのであればPi 2を使うのが断然オススメですが、パラレルに色々安定して動かそうとすると、諸々調べる必要がありそうです。こういう、使いこなしが難しいところも、なんというか、Mk-II!って感じがします。

ということで、次回はRaspberry Pi 2で安定してラピロを動かすための工作を行います。