2014年12月29日月曜日

Cloud Pi お試し

 今日のネタは プラネックスさんが提供を開始した Cloud Pi (クラウド・パイ) です。
 このサービスが本稼働を開始したのは 12月26日からで、実はその1週間くらい前にベータ・テスターとして、プラネックスさんに招待を頂きました。通常、このサービスを利用するには、スイッチサイエンスさん等から、サービスコードの書かれたカードを購入する必要があります。自分はベータ・テスタとしてコードを一つもらっていますが、Raspberry Pi も複数あるので、もう一つ購入しました。



スイッチサイエンスさんでは「Raspberry Pi環境センサモジュール」というセンサーやLCDを搭載したボードの販売も予定されているようです。

 まずは、Raspberry Pi 側にサーバモジュールをセットアップする必要があります。こちらからダウンロードして、手順に従って cloudpi のサービスを開始します。また、サンプルとして、こちらをダウンロードして、手順に従って apatcheやMySQL等をセットアップします。

 購入したカードに書かれた20桁のサービスコードと自分で決めたパスワードを接続される側のRaspberry Pi の cloudpi.conf ファイルに記述して cloudpi サービスを起動し、Android側で Google Play からダウンロードした専用アプリに サービスコードとパスワードを設定して接続します。


 デフォルト(上の画面)では、Raspberry Pi のポート80 が クライアント側のポート8080 にマップされる設定です。接続して、クライアント側のローカルの8080 (http://127.0.0.1:8080)にブラウザで接続すると、Raspberry Pi 側のポート80に接続されて、前述のサンプル(を設定していれば)が参照できます。下記はスマホのLTE(外部インターネット)経由でサンプルアプリの画面を表示したところ。



 この後、以前にnode.js + WebSocket.io を使って動かしたLEGOの全方向移動ロボットを CloudPi 経由で動かしてみようと思いましたが、今のところまだ成功していません。LEGOの全方向移動ロボットではWebページを表示するポートと操作情報と状態を送受信するポートの2つの通信ポートを利用したのですが、Cloud Piで2つの通信ポートを利用する方法が見つかっていません。Cloud Pi の
 Androidアプリでは接続に使用するポートを任意に設定してその設定を複数保持できるのですが、実際に接続できるのはひとつの設定のみのようです。この辺りは今後調べていこうと思っていますが、まだ、始まったばかりのサービスでこちらにフォーラムもありますが、現時点ではまだ情報が殆ど無く、公式のドキュメント等もありません。今後、仕様等も公開されていくと思いますので、情報が入手できたところで、進めていきたいと思います。









2014年12月25日木曜日

Intel Edison を触ってみました。

 本日のがらくたは Intel Edison です。いまさらなところはありますが、以前に Intel Galileo を入手して使えなかった使いこなせなかったので、Intel のこの手のものはスルーしておこうと思い、Galileo2は無視しましたが、今回は自分で自分へのクリスマスプレゼントということで、入手してイジってみることにしました。まあ、おそらくは、少しだけイジって、飽きたらポイッってなるんですが・・・。

 Edison ですが、 Intelが作った組み込み向けモジュールでSDカードサイズ(には収まりきらなくて、一回り大きくなった)に Atom 500MHz のデュアルコアCPUと無線LAN、Bluetoothを搭載しています。



 Edisonのモジュール単体だけだと表面実装の特殊な高密度コネクタが出ているだけなので、電子工作を趣味でやっているような自分のような人には全く使い物になりません。そのため、Intel もIOをそのまま2.54ピッチに引き出すための Breakout board と Arduino 互換ボード の二種類の外付けボードを提供しています。Arduino 互換ボードは普通のArduino Uno の2~3倍の大きさがあるとGalileoでいい思い出がないので、今回は 単純にIOを引き出している Breakout board とEdisonモジュールのセットを購入しましたが、合わせて、スイッチサイエンスさんのEagletボードも購入しました。と、いうのも、この Edison はIOが1.8Vでこれまた、電子工作を趣味でやっているような自分のような人には大変使いにくくなっているのですが、スイッチサイエンスさんのEagletボードでは、とりあえず、I2CとUARTを3.3Vに変換してくれる回路が載っているためです。



 しかし、消費電力や小型化ということはあると思いますが、IOが1.8Vで結局外側にレベル変換ICを用意したり、USBで周辺機器をつなぐにしても外付けで色々用意しなければならなくて、結局、Arduino互換ボードみたいに大きくなってしまうなら、Raspberry Pi や BeagleBoneでいいじゃんとも思うのですが、x86アーキテクチャということで、デスクトップ版のLinuxのプログラムとのバイナリ互換性や処理能力をどのように生かせるか?というところなんでしょうが、自分的には、なんか、使う前から、Raspberry Pi + Arduino のが自分に合ってるなって感想なんですが・・・。

 さて、気を取り直して、まずは準備としてヘピンヘッダ等をハンダ付け。


  Edisonモジュールは Breakout Board から外して、スイッチサイエンスのEagletに装着。


 まずは、スイッチサイエンスさんのページを参考に初期設定をして無線LANで接続して、SSHログイン出来る状態にしました。初期設定がすんだら、まずは、Lチカをしないといけないので、開発環境を準備します。このサイトの情報を参考にして、開発環境を準備します。と、いっても、このあたりからダウンロードして解凍すれば、EclipseでのC/C++環境がそのまま解凍されて出来上がり。

 ダウンロード&解凍した開発環境にはLチカも含めて、いくつかのサンプルプロジェクトがはじめから存在しますので、このなかの 4_cpp_onboard_LED_blink を使って、Eaglet のLEDを点滅させようと思います。
 まず、パースペクティブを「Remote System Explorer」にして、Remote Systemペインに表示されている Local と Galileo の Galileo を選択して、プロパティの Host Name に Edison のIPアドレスを Name を edison 等に設定します。


 次に、パースペクティブを「C/C++」に戻して、Project Explorer から 「4_cpp_onboard_LED_blink」プロジェクトを選択して、ソース「4_cpp_onboard_LED_blink.cpp」を開きます。57行目あたりの Galileo じゃなかったら 「iopin = 13;」 の記述を 「iopin = 37;」に変更します。これは、EagletのLEDのピン番号です。


 Debag Configuration の画面で 「4_cpp_onboard_LED_blink.cpp」 の Connection を Local から Edison (先に適当にGalileoから変更した名前)をプルダウンで選択して、「Debug」実行します。


 これで、自分の環境ではLチカしました。ブレークをかけてステップ実行も出来るみたいです。




 








ロビクル 10~17号

 ロビクルがだいぶたまってしまったので、今回は、ロビクル 10~17号の組み立てです。


 10号は電池ボックスとLED等のテスト用の基板です。


 ロビやRoboXEROにもついてきたのと同じような(若干ネジ部とかが違いますが)もので、これにテスト基板をネジ止めしたマウンタを両面テープで貼り付けます。


 11号はリアパネル。スピーカとブレーキ?(方向指示?)ランプのLEDとDCコネクタを取り付けます。




 12号はリアフレームの組立て。


 13号は前輪左側のLEDを取り付けます。




 LEDの点灯テスト。


 14号は前輪右側のLEDボードを取り付け。


 15号ではリアフレームとハンドル(前輪)部分を接続します。





 16号は後輪左側のモータと車輪の取り付け。



 17号は後輪左側のモータと車輪の取り付け。



 このあとの18号では「仮に取り付けて・・・」みたいな記述があったので、この先しばらくは組立てずに部品をためて様子を見ようと思います。