2015年3月31日火曜日

Raspberry Pi の Scratch GPIO を iPad から操作する

Twitter で軽く触れたところ数人の方が
ふぁぼってくださったので取り上げてみます。

子どもにプログラミングを試してもらおうと思い、
iPad から Raspberry Pi の Scratch GPIO を使えるようにしてみました。

・・・が、結論から言うと駄目です。全然ダメ。
重い。操作性が悪い。文字が読みにくい。

せっかく作ったので一応方法だけご紹介します。

Scratch とは?


プログラミング言語を覚えなくてもプログラミングの考え方を
身に付けられることを目的として MIT メディアラボで
開発された学習環境です。

最近では Scratch で Romo 用アプリを
開発できるようになることが発表されて
微妙に話題になりました。

ちょうど先ほど、我が家にも Romo が
��台届きました。
開発用アプリが公開されたらレポートします。

ただ、開発用 iPhone アプリに対して Apple の
承認が下りなくて公開が延期されているんですけども。。。


これ、永久に承認されなくてもおかしくありません。
そもそもAppleのガイドラインに抵触している可能性が高いですし、
Scratch 本体の iPhone アプリについても Apple と色々あって
現在では AppStore から削除されているので。。。

※不正確な情報でした。追記をご参照ください。

話を戻します。
Scratch のおかげで子どもでも手軽にプログラミングに触れられるようになりました。
Raspberry Pi の GPIO ピンを扱えるように機能拡張されたものが Scratch GPIO です。

子ども用アカウントを作成する


pi 以外のユーザアカウントを作ります。
USER_NAME の部分は適当に。

pi@raspberrypi ~ $ sudo useradd -d /home/USER_NAME USER_NAME
pi@raspberrypi ~ $ sudo passwd USER_NAME


Raspberry Pi をリモートデスクトップサーバにする


通常、Linux でリモートデスクトップ的なことをする場合は、
手元の端末に X-Window 端末を入れるか、
VNC Server を使いますが、今回はどちらも NG です(でした)。

と言うのも、我が家にあるのは初代 iPad なので
X-Window のアプリが動きませんでした。
新しい iPad だと使えるのかもしれませんがよくわかりません。

一方、VNC は使えるのですが、どういう訳か VNC 接続した画面上で
Scratch が起動しません。

いまのところ、リモートから GUI に接続して Scratch を起動するには
リモートデスクトップを使うしかないようです。

リモートデスクトップサーバとして XRDP をインストールします。

pi@raspberrypi ~ $ sudo apt-get install xrdp
pi@raspberrypi ~ $ sudo vi /etc/xrdp/startwm.sh
pi@raspberrypi ~ $ cat /etc/xrdp/startwm.sh
#!/bin/sh

export LANG=ja_JP.UTF-8
. /etc/X11/Xsession


自動起動するように設定します。

pi@raspberrypi ~ $ sudo update-rc.d xrdp defaults
update-rc.d: using dependency based boot sequencing
sudo /etc/init.d/xrdp restart


これで一旦 Raspberry Pi の設定は終わって、
iPad でリモートデスクトップを使えるようにします。

我が家の iPad は iOS5.x までしか動作しない初期モデルです。
RDP Remote Desktop Connection というアプリが iOS5.x でも動作して操作も比較的マシでした。

こんな感じで設定します。
IPアドレス(192.168.~)の部分はご自身の環境に合わせて適当に。
RDP1.png

この状態で接続すると、なぜかデフォルトが VNC になります。
ものすごく操作しにくいですが、頑張って "seesman-X11rdp" を選択してください。
タッチ操作よりもソフトウェアキーボードの上下キーで選択した方が簡単です。

また、パスワードを毎回入力するようにするとこの操作も毎回やらないといけなくて
ほとんど使い物にならないのでパスワードは記憶させておいてあげます。
家庭内の iPad でもセキュリティが気になる人はご自由に。

RDP2.png

繋がるとこうなります。
まだ Scratch GPIO は入っていませんが。
RDP3.png

フォントの入れ替え


日本語フォントを読みやすくするためさざなみを入れます。

pi@raspberrypi ~ $ sudo apt-get install ttf-sazanami-gothic
pi@raspberrypi ~ $ sudo vi /usr/share/scratch/locale/ja.po
# Font to use on a Linux system
msgid "Linux-Font"
msgstr "Sazanami Gothic"


Scratch GPIO


上のキャプチャ画像に映っている Scratch GPIO をインストールするため、
再び Raspberry Pi 上の操作に戻ります。

現状の最新版はScratchGPIO7です。
http://simplesi.net/scratchgpio/scratch-raspberrypi-gpio/

今回は pi ではないユーザアカウントで使いますので、
そのアカウントにもサンプル等をインストールしておきます。

pi@raspberrypi ~ $ wget http://bit.ly/1wxrqdp -O isgh7.sh
pi@raspberrypi ~ $ sudo bash isgh7.sh
pi@raspberrypi ~ $ sudo bash isgh7.sh USER_NAME


で、これでインストール完了かと思いきや、
pi ユーザなら動作するにも関わらず、
作成したユーザだと Scratch GPIO が起動しません。

Scratch だけを管理者権限で起動する


Scratch GPIO を起動するには管理者権限が必要なようです。
そこで、作成したユーザで Scratch GPIO を管理者権限で起動できるようにします。


pi@raspberrypi ~ $ sudo vigr
users:x:100:pi,USER_NAME
pi@raspberrypi ~ $ sudo visudo
%users ALL=(ALL) NOPASSWD: /usr/bin/scratch,/scratchgpio7/scratchgpio7plus.sh,/scratchgpio7/scratchgpio7.sh
※末尾に追記


デスクトップの Scratch アイコンを sudo 実行するように変更します。

pi@raspberrypi ~ $ vi /home/USER_NAME/bin/scratchgpio7plus.sh
pi@raspberrypi ~ $ chmod 755 /home/USER_NAME/bin/scratchgpio7plus.sh
pi@raspberrypi ~ $ cat /home/USER_NAME/bin/scratchgpio7plus.sh
#!/bin/sh

/usr/bin/sudo /scratchgpio7/scratchgpio7plus.sh $@

pi@raspberrypi ~ $ vi /home/USER_NAME/bin/scratchgpio7.sh
pi@raspberrypi ~ $ chmod 755 /home/USER_NAME/bin/scratchgpio7.sh
pi@raspberrypi ~ $ cat /home/USER_NAME/bin/scratchgpio7.sh
#!/bin/sh

/usr/bin/sudo /scratchgpio7/scratchgpio7.sh $@

pi@raspberrypi ~ $ sudo -u USER_NAME vi /home/USER_NAME/Desktop/scratchgpio7plus.desktop
pi@raspberrypi ~ $ cat /home/USER_NAME/Desktop/scratchgpio7plus.desktop
Exec=/home/USER_NAME/bin/scratchgpio7plus.sh

pi@raspberrypi ~ $ sudo -u USER_NAME vi /home/USER_NAME/Desktop/scratchgpio7.desktop
pi@raspberrypi ~ $ cat /home/USER_NAME/Desktop/scratchgpio7.desktop
Exec=/home/USER_NAME/bin/scratchgpio7.sh


この状態で一旦 iPad の XRDP からログアウトします。
再ログインしてから Scratch GPIO のアイコンをダブルタップすると Scratch が起動します。

RDP4.png

そうです。ダブルタップです。iPad なのに。
冷静に考えれば当たり前ですが、パソコンを使えない子どもに
そんなことを説明しても理解できる訳がありません。

また、ドラッグ操作は iPad 上ではプレス後にドラッグです。
プレス&ドラッグって。

もちろん、子どもでも使い方を教えればその通りやるんですが、
プログラミングに興味を持ってもらうのが目的なのに、
関係ないところでやる気を削がれるような操作があるようでは駄目です。

という訳で、私の中で iPad & リモートデスクトップ & Scratch の案は却下しました。

【2015/03/31追記】
iOS版ScratchはPyonkeeという名前で再公開されているそうです。
https://itunes.apple.com/jp/app/pyonkee/id905012686?mt=8
また、Scratch2Romoが公開されない理由はScratch云々ではなく、
MFi認証なのでデバイス側の都合です。
古い情報ならびに短絡的表現になっておりましたのでお詫びして訂正いたします。
abee2さんご指摘ありがとうございます。

0 件のコメント:

コメントを投稿