2018年6月15日金曜日

pi-top v2を購入してStretch系列のpi-topOSで使ってみた

0. はじめに

Raspberry Piを組み込んだノートPCであるpi-topの新しいバージョンが2017年10月に発売されたのですが、なかなか買う気になれずにスルーしてきました。

pi-topに関しては2015年10月頃に発売された旧バージョンを入手し、いくつかブログ記事を書いてきました。
この旧バージョンを使った上で、ちょっとひどいなと思ったのは下記の二点です。
  • とにかくキーボードのクオリティが低すぎる。なかなか反応しないキーがありノートPCとしては使い物にならない。外付けでUSBキーボードをつなぎたくなるレベル
  • なんらかの原因でバッテリーが突然使用不能になる。私の場合、使用時にはACアダプタの接続が必須となってしまいました
キーボードのクオリティの低さについては過去にブログに記しました。バッテリーが使用不能になる件については今回初めて記しますが、ネットで検索すると、同じ問題に当たった人がかなりいらっしゃるようです。Li-Poバッテリーのように過放電すると以後バッテリーが使えなくなる、という症状に似ているように思えます。

旧バージョンでそんな体験をしていますので、決して安くはない価格でまた似たようなクオリティの製品だったら嫌だなあと思い、なかなか手を出しにくかったのです。

しかし、発売後しばらくたってもこの新バージョンが旧バージョンと比べて進化しているのかどうかなど、私が知りたい情報があまり入ってこないので、諦めて購入して自分で確かめてみることにしました。

1. 外観

そんなわけで購入したpi-top v2の外観です。

pi-top v2の外観

旧バージョンに比べると、マウスのタッチパッドの位置が一般的なノートPCと同じ位置になり、洗練された印象を与えます。サイズは一般的なノートPCと比べるとかなり大きく持ち運びには向かないのですが、これは旧バージョンからそうですので割り切るしかないでしょう(ちなみにサイズは34.5x22x4cm、重さは1.5kg)。

なお、OSは公式サイトからStretch系列のpi-topOSをダウンロードして用いました。付属のOSインストール済SDカードには、古いJessie 系列のpi-topOSが入っていたためです。
なお、付属のSDカードはSanDisk Ultra 8GBでしたが、このSDカードは動作中に瞬間的に動作が固まる現象(プチフリ)が多いように思われますので、別のSDカードを用意した方が良いと思います。

Stretch系列でもいつも通り、起動時にスプラッシュスクリーン動画が流れ、Dashboardというアプリケーションが自動起動するのですが、これを無効にするには、下記の2コマンドをターミナルで実行すればOKです。
sudo systemctl disable pt-splashscreen.service
sudo systemctl disable pt-os-dashboard.service
さらに、ターミナルソフトウェアが最大化して開くのを抑制したければ、「Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた」の設定を参考に.config/openbox/lxde-pi-rc.xmlを編集してください。

組み立て時の写真は撮っていませんが、基本的にはRaspberry Piを組み込むだけですので、旧バージョンより組み立ての難易度は低めです。ただし、はめ込みのかみ合わせが合いにくかったり、ねじ穴の位置が微妙にずれていてねじが締めにくかったりなどの問題があり、慎重な作業が必要になりますので、小さな子供に任せられる作業ではないと思います。

2. キーボード

さて、問題のキーボードですが、結論から言えば旧バージョンのpi-topのものに比べると、大幅にクオリティアップしています。

pi-top v2のキーボード

pi-top v2内蔵のキーボードとマウスだけで作業をしても、まったく苦にならないレベルです。
何を当たり前のことを、と思うかもしれませんが、旧バージョンは普通の作業を内蔵キーボードとマウスで行うだけでもストレスを感じる作業だったのです。

ただし気になる点もいくつかあり、例えば図からもわかるように、
  • 左Shiftキーが小さく、その右隣に<、>キーがある
  • Enterキーの右隣にHome、Endキーなどがある
などの問題が挙げられます。これらは慣れないと何度もミスタイプします。不満と言えば不満ですが、この程度の特殊な配置のキーボードはノートPCにはよくあるので、まあ許容範囲かな?

3. キーボードをスライドさせる

pi-top v2の目玉の一つはキーボードをスライドさせてGPIOにアクセスできることでしょう。

緑色のプラスチックに触って下図のようにスライドさせると、素材のおもちゃっぽさを感じずにはいられないものの、仕組み自体はなかなかよくできていることがわかります。

pi-top v2のキーボードをスライドさせた様子

スライドにより、図のようにRaspberry PiおよびHUB2.0というメイン基板が露出されます。その横にさらにブレッドボードが見えますが、これはpi-topPROTO+という電子工作用のモジュールで、今回これが標準搭載されています。

旧バージョンのときはpi-topPROTOは別売りで、さらにpi-top本体の発売後しばらく入手可能にならないという問題がありましたので、今回これが標準搭載されたのは良い点だと思います。

旧バージョンのpi-topでのpi-topPROTO

なお、このpi-topPROTO+からRaspberry Piの全てのGPIOにアクセスできるのですが、今回そのピンがArduinoなどと同じメスピンになっているのですね。

個人的には、Raspberry Pi本体と同じくオスピンの方が混乱が少なくて良いと思うのですが、メスピンの方がショートのリスクが小さい、などと配慮した結果なのかもしれません。

ただまあ、そもそもHUB2.0のすぐ隣で電子工作をするというのはかなりリスクが高いですよね。手がすべってHUBを壊してしまったらそれでpi-topが使えなくなってしまいますから。

なお、キーボードをスライドさせると、Raspberry Pi本体に取り付けたSDカードが見えるようになりますが、これを手で取り外すのは困難です。

そのため、SDカード取り外し用の器具が添付されており、下図のようにSDカードをひっかけて引き抜けるようになっています。

SDカード取り外し用の器具の使い方

世の中には、Raspberry Pi本体からSDカードを取り出すことを全く考慮していない商品もありますので(例えば公式のディスプレイケース)、このような対処法が用意されているのは(必ずしもスマートな方法ではないとは言え)好ましいことだと思います。

4. 各種端子へのアクセス

USB端子2つ、LAN端子、およびイヤフォンジャックへは下図のように背面からアクセスできるようになっています。

USB端子2つ、LAN端子、およびイヤフォンジャック

旧バージョンでは、これらの端子へのアクセスが悪く、下記のようにUSBハブやヘッドフォン用の延長ケーブルを用いるなどの工夫が必要でした。LAN端子に至っては本体に固定するためのねじを取り外せばなんとか使えるかも?というレベルでした。

旧バージョンのpi-topでのUSB端子とイヤフォンジャックの利用

このように、これらの端子へのアクセスは旧バージョンから比べるとかなり進歩したところです。

ただし、残念な点もあります。下図のように公式カメラモジュールを接続する端子が銀色のカバーに塞がれており、実質公式カメラモジュールが使えなくなっているのです。銀色のカバーは、GPIOとHUB2.0との接続や、CPUのヒートシンクの役割をしているものです。

銀色のカバーを取り付ける前にあらかじめ公式カメラモジュールを取り付けておけば恐らく使えるでしょうが、銀色のカバーは頻繁に取り外すものではないので、公式カメラモジュールの使用を諦める方が多いのではないでしょうか。これは、非常に詰めが甘いと感じた点です。

公式カメラモジュールを接続する端子がふさがれている

5. バッテリー

バッテリーについては、今後使用していく上でどうなるか検証していきたいと思います(個人的にはあまり期待していませんが…)。

恐らく、「過充電、過放電しないよう気をつける」という方針で使うことになりますので、すぐ利用不能になることはないのではないでしょうか。

6. まとめ

そんなわけで、旧バージョンのpi-topを体験した方ならば、その欠点の多くがpi-top v2で解消されていることに驚くのではないかと思います。2015年当時からこのクオリティで出ていれば…と思いますが、ものづくりはそんなに甘くないということなのでしょう。

なお、この出来の良さだけに、公式カメラモジュールが使えないという詰めの甘さは残念なところです。

さて、ここまでpi-top v2について比較的高めの評価を与えてきましたが、これはあくまで旧バージョンのpi-topと比較してのことです。

Windows PCの代替にしようとか、子供にはじめて与えるPCにしようとか、という用途に用いるのは慎重になった方が良いと思います。大手メーカーの製品のように「正常動作し、なおかつ保証があって当然」というものではありませんので。
(そもそも英語キーボードの時点で、人を選ぶ商品ではあります)



「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。

2018年6月2日土曜日

2つのmicro:bitで無線コントロールカーを作ってみた

0. はじめに

小中学生へのプログラミング教育用教材について興味があり、これまで下記のエントリを書いてきました。


どちらも Raspberry Pi 上の Scratch 1.4 を用いて物の制御を行う、という内容になっています。

しかし、この方法では以下の問題があり、やや敷居が高いのが難点です。

  • Raspberry Pi を初めて触る方にとっては物品の準備やOSのインストールから始めなければならないこと
  • Raspberry Pi 上ではScratch の新しいバージョン2が動作するものの、Flashベースのため動作が遅く、さらに電子工作に必ずしも適していないという点から、古いバージョン1.4を使わざるを得ない場面が多いこと

そこで、今回は目先を変えてBBC micro:bit をプログラミング教材として用いた場合に何が可能かを試してみました。BBC micro:bit とは、イギリスの英国放送協会 (BBC) が小学生の教育用に開発したマイコンボードです。

用いたのは以下のものです。


下図が完成状態です。
micro:bitを2つ持っていなかったので、コントローラー用の1台は、スイッチサイエンスにより開発されたmicro:bitの互換機であるchibi:bitを用いました。もちろん、chibi:bitでなくmicro:bitを用いても同じです。

chibi:bitには、スマートフォン用のモバイルバッテリーを電源として用いてます。


今回作成したのはタイトルにもあるように無線コントロールカーです。完成品の動画が下記になります。

2台のmicro:bitがBLEで通信して、バギーカー上のmicro:bitが車体を動かしています。


1. プログラム

プログラムはmicro:bitの公式サイトでプログラミング用のブロックを組み合わせることで作成します。

まず、受信側(機体側)のプログラムです。


送信機から 0 (静止)、1(前進)、2(左折)、3(右折)に対応する数値が送られてきますので、それに応じて2つの連続回転サーボを動かしています。

(P1, P2)のピンに対し、(90, 90)を出力すると静止です。
(0, 180)は全速で前進、(180, 0)は全速で後退、
(0, 0)は全速で左回転、(180, 180)は全速で右回転です。

上記のプログラムでは後退を用いず、左回転と右回転は速度を遅めにするためそれぞれ(80, 80)、(95, 95)と設定しています。これらは好みやモーターの特性によると思いますので、お好みで調整します。

次に、送信側のプログラムです。


こちらはあまり美しいプログラムにはなっていません。

micro:bitには「ボタンが押されたら」というイベントハンドラはあるのですが、「ボタンから指を離したら」というイベントハンドラがありません。

そのため、そのままでは「ボタンAを押したら」、「ボタンBを押したら」、「ボタンAとBを同時押したら」という3パターンしか動作を作れません。

このプログラムでは前進、左回転、右回転、静止、の4つの動作を作りたかったので、上記のプログラムではイベントハンドラを用いず、200msごとにボタンの状態をチェックすることにしています。

さらに、そのままでは最悪200msごとに通信が行われてしまいます。それを避けるために、現在のボタンの状態を表すstateという変数を導入し、stateの値が変化した場合のみ通信を行う、ということをしています。

上記を実現するため、「もし~なら~でなければ」の分岐命令を4重に組み合わせることになり、プログラミングの講義ではあまり教えたくないようなプログラムになってしましました。

2. まとめ

最後に、この題材の良いところと悪いところを列挙します。

良いところ
  • 普段使っているPC(Windowsなど)でブロックによるプログラミングができる
  • BLEによる通信が簡単
  • PCから切り離してもスタンドアロンで動作するプログラムが簡単に書ける(Raspberry Piでそれをやろうとするとそれなりに大変)
  • 連続回転サーボは標準のブロックだけで制御できるのでmicro:bitと相性が良い
悪いところ
  • 作ってみればわかりますが、:MOVE miniの機体の組み立てが、見た目ほどフレンドリーではない
  • 「ボタンを離したら」というイベントハンドラがないので表現できる状態が少ない
そんなところでしょうか。

どんな環境を用いる場合も当てはまりますが、後は用意する題材の工夫次第で十分面白い講義ができるのではないかと思いました。



「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。