2015年11月30日月曜日

Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた

はじめに

Raspberry PiをノートPC化するPi-Topが届いた」にて、Pi-Topに触って見ましたが、Pi-Top OSと呼ばれるOSを用いており、ログイン時にPi-Topサイトのアカウントでログインしなければならないことが不満でした。その主な理由は下記の通りです。
  • ログインした後は普通のユーザーpiなので、Pi-Topアカウントでログインする必然性がないこと(CEED universeというものと連携させたいのでしょうが)
  • ログイン時にインターネットに接続していなければならないこと
  • ログイン時に相手側サーバーがダウンしていたらログインできないこと
  • インターネット接続にProxy接続は許されないこと
そのようなわけで、通常のRaspbianのようにユーザーpiでログインできるようにしてみます。さらに、このPi-Top OSを通常のRaspbianに近い外観で使用できるようにもしてみましょう。

グラフィカルログイン方式、およびコンソールにログインしてstartxコマンドでXを起動する方式の両方でできました。


手順

LXterminalを起動し、.xinitrcを無効にします。
$ mv .xinitrc .xinitrc.bak
さらに、X起動時に自動でdashboardというアプリケーションが起動してしまうのを以下で抑制します。
$ mv .config/lxsession/LXDE-pi/autostart .config/lxsession/LXDE-pi/autostart.bak
最後に、下記のコマンドでスプラッシュスクリーンを無効にしましょう。後で解説しますが、これは45秒間の動画を流しているだけです。
$ sudo mv /etc/rcS.d/S01nasplashscreen /etc/rcS.d/K01nasplashscreen
あとは再起動すれば、ユーザーpiのデスクトップで起動すると思います。

バッテリー残量表示のアイコンがありませんが、以下のコマンドで残量が表示できるのでそれほど問題にはならないかなと思います。
$ battery
コンソールログインが良いという方は次の作業も行なってください。なお、このページの末尾にはこのPi-Top OSを普通のRaspbian風に用いる方法も記していますので、必要に応じて最後までご覧ください。

コンソールログインしたい場合

コンソールにログインしたいという方は、下記に従います。

まず、ユーザーpiのパスワードを念のため確認しておきましょう。 Pi-Top OSにログインし、LXTerminalを起動して、
$ su - pi
というコマンドによりユーザーpiにログインしてみてください。パスワードは「raspberry」ではなく「pi-top」であると思います。そのことを確認できたら次に進みましょう。

再びLXTerminalを起動して下記のコマンドを実行します。
sudo raspi-config
そこで「3 Enable Boot To Desktop/Scrach」→「Console Text console, requiring login (default)」を選択して再起動しましょう。これでコンソールへログインする形式になります。

このとき、ユーザーのIDとパスワードは先ほど確かめた通り、
  • ID: pi
  • パスワード: pi-top
です。

ログイン完了時に
Cannot open display "default display"
というエラーがでますが、これは気にしないことにします。多分.bash_profile内に書かれたコマンドのせいだと思うのですが、これを消すと別のエラーが出るためです。 あとは必要に応じてstartxコマンドでXを起動してください。

何をしたのか?

上の設定で何をしたのかですが、基本的には「ユーザーpiのログイン時にdashboardというアプリケーションが起動されるのを抑制した」だけです。

dashboardを通常通り起動すると、「ユーザーpiのデスクトップが起動→dashboardというアプリケーション(Pi-Top OSのログイン画面)が起動」という流れが見えてしまうので、Pi-Top OSでは45秒間の動画(/home/pi/.pi-top/media/splash.mp4)を流してそれを隠している、というわけです。しかし、45秒間待たされるというのはユーザーにとってはメリットは何もないわけで、ちょっとお粗末だなと思います。

通常のRaspbianのように使ってみる

以下、このPi-Top OSを通常のRaspbian風にする設定を列挙します。

LXTerminalが最大化されて起動されるのを防ぐ

.config/openbox/lxde-pi-rc.xmlをleafpadなどのテキストエディタで開き、下記の部分を見つけます。
  <application name="lxterminal">
    <maximized>yes</maximized>
  </application>
この「yes」の部分を「no」に変更してからXを再起動すると、LXTerminalが最大化された状態で開くのを抑制することができます。なお、leafpadも最大化されてい開くかもしれませんが、こちらは、一度小さくしてから終了するとそのサイズが保存されます。

パネルの位置を上に

パネル上で右クリックして「パネルの設定」を開き、「ジオメトリ」→「位置」→「端」→「上」

タスクバーのアイコンに文字を出す

タスクバー上で右クリックして「タスクバー(ウインドウのリスト)Settings」→「アイコンのみ」のチェックを外す

メニューボタンのアイコンをRaspbianのものに

メニューボタン上で右クリックして「メニューSettings」→「アイコン」を/usr/share/raspberrypi-artwork/raspitr.pngに

壁紙をRaspbianのものに

壁紙上で右クリックして「デスクトップの設定」→「外観」で「壁紙のモード」を「原寸大のまま中央に配置する」に、「壁紙」を/usr/share/raspberrypi-artwork/raspberry-pi-logo-small.pngに、「背景色」を赤214、緑211、青222に。

以上で、Pi-Top OSが通常のRaspbianにこの程度近づきました。


こちらもどうぞ



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


2015年11月27日金曜日

Raspberry PiをノートPC化するPi-Topで電子工作(LチカとI2C通信)してみた

はじめに

前回のエントリ
にて、Pi-TopではRaspberry PiのGPIOが全てふさがれている、と述べました。そのままではRaspberry Piの特徴の一つである電子工作との親和性の高さが失われてしまいます。

ただし、内部の左側にあるHubという基板にはGPIOから引き出されたと思われるメスピンがあり、その仕様がわかれば電子工作ができると思われました。

その仕様はいずれ公式に発表されるだろうと考えて放置していましたが、どうにも公開される雰囲気がないので、テスターを用いて自分でピン配置を調べ、実際に簡単な電子工作を行なってみました。

下図は定番のLチカを行なっている様子です。


ピン配置

※注:ここから先の情報を試す場合、操作を誤るとPi-Topが破壊される恐れがありますので、全て自己責任でお願いします。

まず、下図のようにfront/back/upper/lowerを定義します。



そうしたとき、Pi-TopのHub基板のピン配置は以下のようになっていました。各GPIOとGNDはRaspberry Piと直結されています。

3.3V/5V/16Vのピンは、Pi-Topの電源やバッテリー側から供給されています。どれくらいの電流を流すことができるかわかりませんので、あまり負荷をかけないほうがよいでしょう。


Raspberry PiのGPIOのピン配置と注意深く比較すると、全てのピンが引き出されていることがわかります。重複しているGNDは一つのみ引き出されています。

注意点を以下に述べます。
  • SPIに関わるピンは既にPi-Topに使われています。具体的には、.pi-top/sys/hub-controller.pyというPythonスクリプト内で、HUBとの通信(スクリーンの明るさ制御、シャットダウンボタンの命令受信)に使われています。動作検証の際、SPI CE1 (GPIO 7)でLチカしてみたところ、Pi-Topが強制的に再起動され、冷や汗をかきました
  • 試していませんが、UART RXD/TXDのピンはシリアルコンソール用に使われているはずです
  • ID_SDとID_SCはRaspberry Piにもあるピンですが、使ったことはありません
  • I2Cのピンは、下図のように0x0bのアドレスを持つPi-Top Hub基板上のデバイスによってバッテリー状態の取得に使われています。具体的には、/usr/local/bin/batteryというシェルスクリプトがそれを実行します。ただし、I2Cは複数のデバイスを接続できるので、問題にはなりません


そのようなわけで、SPIとUARTのピンを使わなければ一般的な電子工作は行なえそうです。

Lチカ

まずは定番のLチカから試してみます。 冒頭のLチカの図を再掲します。上のピン配置でGPIO番号を持っているピンのうち、UART/SPI/I2Cに関わるピン以外の全てでLチカができることを確認しました。下図はGNDピンとGPIO 4を使っています。


用いた回路とプログラムは「Raspberry Piで学ぶ電子工作」の4章で紹介したものを流用しています。

まず、回路はこちら。

そしてプログラムがこちら。
import RPi.GPIO as GPIO
from time import sleep

LED = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

try:
    while True:
        GPIO.output(LED, GPIO.HIGH)
        sleep(0.5)
        GPIO.output(LED, GPIO.LOW)
        sleep(0.5)

except KeyboardInterrupt:
    pass

GPIO.cleanup()
これをled.pyという名前で保存した場合、ターミナルで下記のコマンドにより実行できます。
sudo python led.py

I2C通信によるLCDの利用

次に、I2C通信によりLCDに文字を表示してみました。下図のようになります。3.3V/GND/I2C SDA/I2C SCLの4ピンを使っています。


LCDをより大きく撮影した様子がこちら。


これは、「Raspberry Piで学ぶ電子工作」の7章で紹介したプログラムを以下のコマンドで実行した様子です。詳細は書籍をご参照ください。
sudo python 07-02-LCD.py 'Hello,  Pi-Top!'

おわりに

そのようなわけで、SPI通信以外のピンは通常のRaspberry Piと同様に利用できることがわかりました。

なお、本エントリを記述した後にRaspberry Piのピン配置を復活させるためのpi-topPROTOという商品が発売されたので、これを購入すると、実は本ページの内容は不要だったりします。下図は、pi-topPROTOとpi-topSPEAKERを接続した様子です。


では、このPi-Topは電子工作に向いているかというと、「ちょっと怖い」というのが正直なところです。

例えば、手がすべるなどしてジャンパーワイヤをPi-TopのHub基板に落としてしまうと、なんらかのショートがおこり基板を壊してしまうことがあり得ます。写真を見ていただくとわかりますが、いかにも何かを落としてしまいそうな位置に基板があるのです。

壊れたのがRaspberry Piならば交換できますが、Pi-TopのHub基板となると交換はちょっと厄介そうです。決して安いものではありませんので。

そういう意味では、Raspberry Pi公式タッチディスプレイの方が、壊しにくい位置に基板があるという点で電子工作向きかな、と思います。あるいは、Pi-Topに続き資金調達に成功したpi-topCEEDでも良いかもしれません。

こちらもどうぞ



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


2015年11月5日木曜日

Raspberry PiをノートPC化するPi-Topが届いた

はじめに

2014年10月頃、Raspberry PiをノートPC化するPi-Topがクラウドファンディングで資金を調達するというので話題となりました(参考:Techcrunch)。

その後、資金調達に成功し、2015年2月頃には一般向けに販売を開始しました(参考:fabcross)。

当時は2015年5月頃の発送を予定していたようですが、延期が重なり、2015年11月に実際に送られて来ましたので組み立てて使ってみました。

こちらが通常のRaspbianが動作している様子です。

価格

価格は下記の通りです。

  • Raspberry Pi 2 込みで299.99ドル
  • Raspberry Pi 2 なしで264.99ドル

さらに、日本までの送料が85ドルかかります。価格が高すぎるということはクラウドファンディング時から言われていましたね。
(追記:さらにFedExから関税として3,500円の請求がありました)

なお、Raspberry Pi 2は筐体の中に固定され、取り外しも面倒なので、Pi-Top専用のRaspberry Pi 2を用意するのが無難だと思います。私はPi 2込みのものを注文しました。

開封から組み立てまで

箱がこちら。結構大きいです。


箱を開けた瞬間、緑の天板が目につき、その予想外の大きさに圧倒されました。内容物は何段かにわかれて収納されています。


組み立てに必要なパーツを全て取り出したのが下図です。緑色のUSBのドングルはWifiデバイスですが、技適は通っていないと思われるので、お手持ちのものを利用するのが良いと思います。

また、Pi-Top OSと呼ばれる独自OSが入ったmicroSDも付属します。後述するように、通常のRaspbianでも制限はありますが動作します。

なお、短くて柔らかいHDMIケーブルが付属するのですが(下図で上から3番目のケーブル)、これ単体で売って欲しいと思いました。


組立自体は説明書の通りに行えば難しくないのですが、細いケーブルを取り扱う部分があるので、注意は必要です。

なお、下図のStep 3-3はスクリューを付属の六角レンチで回すのですが、どこかにねじ込んでいるわけでもなく、意味があるのか疑問でした。


また、Step 8-5でキーボードをBall Head Screwsにはめ込むのですが、ここでキーボードの下に来るケーブルをうまくまとめないと、キーボードが上に盛り上がって非常に不格好になります。

それを直すためにキーボードをBall Head Screwsから外すのはそこそこ大変なので、ここは組立中で最もストレスを感じました。

なお、このキーボードの盛り上がりを完全になくすのは難しいのでは?という気がしています。組み立てた方ならわかると思いますが、本ページのPi-Topの写真は、キーボードの中央部が若干盛り上がっています。


起動

組み立て終わったら、付属のPi-Top OSの入ったmicroSDで起動してみます。


起動画面の後、ログイン画面になるのですが、ここでできるのは、下記の通りです。
  • Wifiのセットアップ(Viewでパスワード入力可)
  • ネットワークログイン(Pi-Topサイトのアカウントでログインできるらしい)
  • ユーザーの作成
  • ゲストアカウントでのログイン(Read Onlyで、設定ファイル等変更できない)
Pi-Topサイトのアカウントでログインできるようなのですが、実際にログインしようとすると、下図のように「logging in」の状態のまま先に進みません。

なお、ネットワークに接続していない状態では、Read Onlyなゲストアカウントでの作業になりますので、実用的ではありません。Raspbian wheezyベースであることはわかるのですが、いつものユーザーpiでのログインはできませんでした。


色々試行錯誤した結果、以下の方法でPi-Topサイトのアカウントでログインできるようになりました。あらかじめPi-Topサイトのアカウントを持っていることが条件です。
  • まず、Wifiに接続します。Viewボタンをクリックするとパスワードを入力できたと思います
  • 右下の設定アイコンをクリックし、Create Accountにより、アカウントを作成します。その際、ユーザーネーム、パスワード、メールアドレスは適当に設定します(このアカウントは最終的には使われなくなります)
  • すると一時的にログインできますが、そのまま再起動すると、またログインできなくなってしまいますので、再起動はしないようにしましょう
  • そこで、ターミナルを起動し、下記のコマンドを実行し、OSを更新します
  • curl -sL https://www.pi-top.com/download/patch1 | sudo bash -
  • コマンドを実行すると、自動的にログアウトされ、もう一度ログインを求められます。この段階で、Pi-Topのアカウントでログインできるようになっています
ログインしてみるとわかるのですが、Pi-Topのアカウントは認証に使われるだけで、ログインすると普通のRaspbianと同様、ユーザーpiなのですね。ですので、OS更新前に一時的に作成したアカウントのデスクトップがそのまま引き継がれていたりします。

それなら最初からユーザーpiでログインさせてくれれば良いのに、と思いました。

そこで、実際にユーザーpiでログインできるよう設定した結果をこちらのエントリにまとめました→「Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた」。Pi-Top OSを普通のRaspbianに近い状態で使う方法も記しております。

なお、このPi-Top OSを用いるメリットは下記の通りです。
  • バッテリーの残量がわかる
  • キーボードでディスプレイ輝度を調節できる
  • 電源ボタンの長押しでシャットダウンコマンドが実行された後に電源が切れる

通常のRaspbianで使うには?

Pi-Top OSが付属するからといって、通常のRaspbianで使えないわけではありません。以下、Pi-Topを通常のRaspbianで使う際の注意を記していきます。NOOBS 1.4.1 (wheezy)とNOOBS 1.4.2 (jessie)で試しました。

まず、デフォルトでは画面端に黒い帯が現れて画面の広さが狭くなってしまいます。Overscanの設定をDisableに設定すると改善することができます。以前からあるraspi-configを用いる場合は「8 Advanced Options」→「A1 Overscan」から、NOOBS 1.4.2 (Jessie)からの新設定アプリケーションでは「System→Overscan」からDisableに設定できます。

なお、通常のRaspbianを用いると、
  • バッテリーの残量がわからない
  • キーボードでディスプレイ輝度を調節できない
  • 電源ボタンを長押しするといきなり電源が落ちる
という問題があります。Pi-Top OSからこれらの機能を移植することも可能でしょうが、どちらかというと、Pi-Top OSをRaspbian風にするほうが簡単かもしれません。「Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた」にその方法を記しております。

なお、通常のRaspianを終了するときは
  • 「sudo poweroff」を実行→シャットダウンプロセスが終わったら電源ボタン長押し
として電源を切るのが良さそうです。

感想など

Raspberry PiをノートPC風に使うということに関し、以前「Lapdock for Motorola Atrixを使ってRaspberry Pi 2をモバイルPCにしてみた」というエントリを書きました。その方法に比べると余計なケーブルが必要なく、とてもシンプルなのは良いと思います。

ただ、気になる点もいくつかあります。

まず、サイズがおよそ340mm×210mm×47mm (最厚部)程度と大きく、実際に目にするとかなりの迫力です。

また、キーボードのクオリティがやや低いです。押しても反応しにくいキーがあり、私の場合、「k」キーを押した際に 7/10 くらいの確率でしか入力されませんでした。まあこれは慣れである程度はカバーできるだろうとは思います。


また、下図のようにRaspberry Piの40ピンのGPIOが全て塞がってしまうのが気になります。下図の左側の基板から、34ピンだけ引き出せそうなのですが、現時点ではその仕様が公式には公開されていないようです。この点はかなり気になったので自分で調べてみました。結果を以下のエントリにまとめました→「Raspberry PiをノートPC化するPi-Topで電子工作(LチカとI2C通信)してみた」。


個人的には、Pi-Top OSと名乗って、ログイン法を通常のRaspbianから大きく変えてしまったのは残念でした。通常のRaspbianにボード制御用アプリケーションを追加インストールする形式で十分だったように思います。

とは言え、触っていくほど愛着の湧く面白いおもちゃであるとも思います。やや高価な価格に納得できる方なら試してみても良いでしょう。

なお、Pi-Topからキーボード、タッチパッドを取り除いた、pi-topCEEDと呼ばれるものも資金調達に成功しており、こちらは送料等を除いて99ドルとお得になっています。今ならこちらの方が良いかもしれませんね。

追記(2016.1.14)

…と、2015年11月に上記のエントリを書いたのですが、実際のところ、私のPi-Topはほとんど使われることなく積まれた状態でした。何が問題かというと、やはりキーボードの性能が低すぎるのが致命的です。

ブラウジングメインで用いるためのパワーが足りないのはRapsberry Pi 2の現状での限界なので仕方ありませんが、サーバーにリモートで接続するための端末として用いようとしても、Ctrlキーの押下が認識されたりされなかったりでは使い物になりません。

どうにかならないかと考え、ロジクールのワイヤレスキーボード&マウスであるMK240を購入したところ、Pi-Topが非常に快適に使えるようになりました。キーボードの足を起こしてPi-Topに載せると、Pi-Topのキーボードに干渉しないので良い感じです。唯一の不満はキーボードに電源スイッチがないことですが、まあこれはしょうがないかな。

そのようなわけで、今度こそPi-Topを使ってみようと思います。


こちらもどうぞ




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