なんなのコレ?
最近のスマートフォンは色んなセンサーが内蔵されています。
このセンサーをビジュアルプログラミング言語Scratch1.4内で利用するためのAndroidアプリケーションです。
ワイアレス(要LAN接続)で下記の値をScratch1.4に送ることが出来ます。
- スマートフォンの横方向の傾き
- スマートフォンの縦方向の傾き
- スマートフォンの高さ
- 明るさ
- 音
- 方角
- スライダー(ボリュームキーの上下で値が変わります)
- 距離
- 気圧
Android 2.2にも対応しています(一部のセンサーが動かない場合もあります)ので、押し入れの中の古いスマートフォンでもお使いいただけます。
使い方
- 下記からAPKをダウンロードします
- Scratchの「遠隔センサー接続」を有効にします
- PCのファイアーウォールの設定を変更、若しくは一時的に無効にします(使用している場合)
- 無線LANで接続します (Smartphone)
- アプリから接続します
- Scratchで利用します
アプリをダウンロードする
Scratchの「遠隔センサー接続」を有効にします
- Scratch 1.4を起動します(公式のScratchを使用してください。S4AなどカスタムされたScratchでは正常に動作しない事があります。Scratch 2.0 オフラインエディタには対応しておりません。)
- 調べる→スライダーセンサの値→右クリック
- 「遠隔センサー接続を有効にする」をクリックします
ファイアーウォールを一時的に無効、若しくはScratchを許可
非常に重要です!接続できない場合恐らくココが問題です。
– Windows
上記の「遠隔センサー接続を有効にする」を押すと下記のメッセージが出るので「アクセスを許可する」を押します(Windows標準のファイアーウォールの場合)。
標準のファイアーウォールを使用していない場合(ウィルスバスターやマカフィーなどを使用)で、ルールの追加方法がわからない場合は、このプログラムを使用している間のみ一時的にファイアーウォールを停止して下さい。
上記をキャンセルしてしまった場合、他のセキュリティ製品をご使用の場合はこちらをご覧下さい。
- プログラムに Windows ファイアウォール経由の通信を許可する
http://windows.microsoft.com/ja-JP/windows/communicate-through-windows-firewall
- ESET Smart Security firewall
http://kb.eset.com/esetkb/index?page=content&id=SOLN2149
– Mac OS
下記の「特定のアプリケーションにアクセスを許可する方法」を見て、Scratchを許可してください。
– Linux / raspberry pi (ファイアーウォール使用している場合)
ターミナルを起動しポートを開けます。
- add /etc/network/iptables
-A INPUT -i eth0 -p tcp -m tcp –dport 42001 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp –dport 42001 -j ACCEPT
PCをLANに接続しIPアドレスをメモする
Scratchが入っているPCを有線や無線LANで接続しIPアドレスをメモします
– Windows
- スタートメニューを押し、検索欄にcmdと入力しエンターキーを押します
- コマンドプロンプトが開くので「 ipconfig /all 」と入力しエンターキーを押します。IPv4アドレスとなっている右側があなたのIPなのでメモをします。
コマンドプロンプトが苦手であれば、下記の方法でも調べられます(XP,Vista,8,8.1)
- IPアドレス確認方法(elecom)
http://qa.elecom.co.jp/faq_detail.html?id=4401
– Mac OS X
- IPアドレス確認方法 (elecom)
http://qa.elecom.co.jp/faq_detail.html?id=4072
– Linux
- ターミナルを開きます
- ip a と打ちます
アプリを起動し接続します
- 最下部のConnectを押します
- 先ほどメモしたScratchが起動しているPCのIPアドレスを入力し、Connectを押します
- 正常に接続できれば下記のような表示になります。接続できないときは下記の「接続できないとき」をご覧下さい。
Scratchから利用する
調べる→「スライダー▼センサーの値」の「スライダー▼」をクリックし使いたいセンサーの値を選択します。
センサーが入っている場合、下記の値を使用できます。
- compass(方角。真北が0)
- 距離
- 明るさ
- スライダー(ボリュームキーの上下で値が変わります)
- 音
- tiltx(スマートフォンの横方向の傾き)
- tilty(スマートフォンの縦方向の傾き)
- tiltz(スマートフォンの高さ)
それぞれ一度でも値が変わらないとScratch上には出てきません。
スマートフォンで値が変わらない場合はセンサーが無いとあきらめてください(古い機種では明るさ、音が反応しない場合があります)
「○○センサーの値」ブロックを○の付いているブロックに入れると使用できます(○歩動かす、x座標を○にする、大きさを○ずつ変えるなど)
Scratchに接続できない
下記の2点をご確認下さい。
- PC、スマートフォン共に同じLAN内で接続していますか
- ファイアーウォールは無効、若しくはScratchは許可してありますか
こちらをもう一度ご確認下さい。
複数台のスマートフォンで使う
もし複数台のスマートフォンをお持ちであれば、それぞれから1台のScratchに接続することが出来ます。
メニューキー → Setting → Prefix
Prefix欄には任意の文字が入力可能ですが「半角英数」を入力してください。
prefixがついた情報が送られます。例の場合であれば、他方にprefixを”no02-“とするとScratchで01,02両方の値を使うことが出来ます。
分からないので質問したい
Android Marketの評価欄では無く、下記コメントフォームに入力してください。
こんにちは、Scratchとの接続が出来ると言うことで、試してみたのですが、Android側でConnectできてすぐは、Scratch上でセンサーの値が変化するのが見てわかるのですが、数秒すると変化が止まってしまいます。Windows VistaのデスクトップとWindows8.1のノートPCで試してみて両方とも同じでした。何かヒントがありましたら、ご教示ください。
楽しいアプリを有難うございました。
TILTが 一ケタの値。…10倍しても一ケタの精度。
LIGHT が10,100,1000と変わります。
DISTANCEがうまく出ない感じです。
スマホの問題かと思いますが、もし勘違いなら教えてください。
ちなみにスマホは GALAXY SII WIMAX
PCは DELL の INSPIRON
です。
TILTが一桁なのは仕様です。
内部では小数点以下1桁で取れているのですが、子どもでもざっくりと使えるようにと1桁に変換しています。
「x座標をtiltx×24にする」、「y座標をtiltx×18にする」とすると画面一杯にコントローラの様に使えると思います。
galaxy s2はLIGHTセンサーが10,100,1000になるみたいですね。解決方法も見つかりませんでした。
http://forum.xda-developers.com/galaxy-s2/help/light-sensor-problem-t2231133
DISTANCEはスマホの設定でOFFになっていませんか?下記を参考に設定を確認してみてください。チェックが入っているようであれば、スマホ上部に手をかざしてみて下さい。
http://www.youtube.com/watch?v=LAhHDX_grJs
kenです。私が試していたのは、Arduinoと接続して使ったS4Aでした。その後、Scratch1.4をインストールして使用したところ、正しく動作しました。ありがとうございました。
こちらでも原因が分からなかったので良かったです。S4Aはそのへんいじってるのですかね。
動いて良かったです。
こんにちは。
最近スクラッチを知り、子供といろいろ遊んでいましたら
たまたまネットでフィジカルセンサーを見つけ
これは面白いと思いメールをさせていただきました。
さて、現在スクラッチ2のオフラインエディターを使っているのですが
1.4でなくても動作しますか?というのも2.0で作ったゲームを1.4で動かすことができないためです。
また、iiConnect2Scratchの使い方を日本語にして頂けると非常に助かります。
よろしくお願いいたします。
あおしま
あおしまさま
残念ながら、これで使用するプロトコルが1.4にしか入っていないため、2.0オフライン版では使用できません。RaspiのScratch1.4、iPadのpyonkeeでは使用できるようです。
iiConnectはWiiのリモコン持ってないので難しいです。ごめんなさい。
そうですか。。。わかりました。
ありがとうございました。
こんにちは。
最近子どもとScratchを始めたところなのですが、スマホとScratchを連動させて面白いことができそうなアプリですね。
Scratch 2.0 では Remote Sensor Protocol をサポートしていない様なので、自前で Extension と Helper App を実装して、このアプリからのデータを Scratch 2.0 で受け取ろうとしています。
その際、ひとつわからなかった点があったので質問させて下さい。
Remote Sensor Protocol では、先頭4バイトがデータ長でその後にデータ長分のペイロードが続くデータ列がセンサー側から送信されると思いますが、アプリからTCPで送信されるデータを見ると必ず最初に1バイトの0データが送信された後、次のChunkで残りのデータが送信されている様でした。
これは何か理由があってアプリの方で意図的にそのような送り方をしているのでしょうか?
もしお時間があれば返信いただけると幸いです。
アオシマさん
scratch2のファイルをPCに保存すると、SB2と言うファイルなるのですが、1.4の方のファイル(SBというファイル)に変換するシステムがあるそうです。「SB2をSB」で調べると出てきます。です、1.4でしよう出来ないブロック(定義など)を全て1.4でしようできるブロックにしないとエラーになります。
Physical for Scratchを愛用しています。
スマホを交換したら、いつの間にかGoogle Playから入らなくなってしまいました。
また、古いバージョンを探してきて入れようとしても駄目でした。
最近のAndroid用にコンパイルしたバージョンを出されたりはしないですかね?
武藤さま
ご愛用ありがとうございます。残念ながらこのアプリは古い規格で作られており、最新のAndroid用にはコンパイルできません。
最新のAndroidに対応させるためにはすべて作り直し&ScratchもWebでの使用が一般的(ver3)となってしまったため、
申し訳ありませんが現在のところは作り直す予定はありません。
Google Playへのリンクが切れていたため、先ほどapkを直接ダウンロードできるようにしました。