「technology」カテゴリーアーカイブ

Koshian & WICED で開発

Koshianを使って開発をするとき、Konashi 2.0とかに載せたりして、JavaScript/Objective-Cで開発をすると思うけど、搭載されているBroadcomのWICED SMART SIP BCM20737Sを直接使って開発も出来る。GPIO/I2Cとかが使えて、Bluetoothのサービス・キャラクタリスティックをサクサクと追加して簡単に使える。なにより、このサイズ・薄さでCortex M3, BLE(アンテナ付き)が使えるのは嬉しい。もちろんKonashi互換でJS/Objective-Cも使えて単品で1,000円くらいだし、コスパもめちゃ良い。

DSC_0107

こんな感じでとりあえずはLチカこと、LEDの点滅回数をiPhoneからいじる物を作ってみる手順。KoshianとWICEDでの事例がググっても日本語の情報がサッパリ無いから参考までに。
基本的にはこのページにある、Getting Startedを見れば出来ると思うけど、少し詳細に書いてみる。

こんな感じの物をサクっと作ってみる感じ。入力した値分だけチカチカする。

(注)以下はBroadcom謹製のWICED SDKのCで直撃でアプリ&ファームを書く手順です。Konashiのファームに上書きしてすると戻れなくなる。直接書いても関係無いけどね(w)、とか単体で動かしたいぜ!!みたいな方にオススメです。Konashi上でまずはモックとして動かす場合は、JS/Objective-Cで書いた方が良いと思いまーす。

1. KoshianのDebug端子にハンダづけ
こっちに書いてあるみたいに、RX/TX/VCC/GNDの4カ所をはんだ付けする。接続先は自分の場合は、Sparkfunの3.3V FTDIを使っている。

2. WICEDをインストール
Broadcomのサイトにユーザ登録して、ここからWICED-Smart-SDK-2.2-IDE-Installerをダウンロードしてくる。Windows/Macでそれぞれ環境に合わせてね。インストールが終わったら立ち上げ。

3. Eclipseで開発の前にUARTの設定
立ち上げてみると分かると思うけど、ぶっちゃけEclipseそのまんま。右の緑のポチポチ(Make Target)が、左のアプリのソース(Project Explorer)と関連している。真ん中はもちろんエディタ。んで、最初にMakefileを読むとオプションが色々と書いてあるけど、自分の場合は[WICED-Smart-SDK]->[Properties]->[Build]にあるBuild commandに”UART=/dev/tty.usbserial-AD01U3Y8″を追加している。
WICED8
これは書いたアプリをUART経由でUSBでの書き先の指定で、指定しなくても何気に勝手に見つけてくれる。ただ、一応書いておいた方が良さげ。Windowsの場合はCOM12とかって感じで。

KoshianとUARTを接続して、右ダイアログの緑なMake Tragetの中から適当にダブルクリックするとアプリがBCM20737Sに書き込まれる。実験で何か適当に選んでやって、iPhoneとかから接続してみると良いかも。otaアップデート(Over the Air:無線経由でのファームアップ)とかは、[WICED-Smart-SDK]->[Apps]->[ota_firmware_upgrade]->[peerapps]->[Windows]以下にWindows向けのexeがあるから、PCにBluetoothドングルを挿して書き込むアプリを指定するとotaアップデートも出来ちゃったりした。

ちなみに、自分はiPhone6からKoshianに接続する時はLightBlue Beanってアプリを使っている。元々はLightBlue Bean向けのだけど、これが便利でなかなか良い。

4. Lチカ作ってみるぽ
Lチカ用のアプリを作ってみる。まぁ、割と簡単に出来ちゃったりする。UIで適当にポチポチやって、”generate code”ボタンで最初の簡単なスケルトンを用意してくれて、あとは書き足すだけ。めちゃ簡単、ほぼノリで行ける。

まずは、[File]->[New]->[WICED Smart Designer]をポチル
WICED_1

次に、適当にプロジェクト名を付ける。ここでは適当にledと。
WICED_2

んで次はKoshianの設定。とりあえず、LEDの所にポチっとチェックボクスを入れてあげる。
WICED_3

次は、Characteristicの設定。下のタブから”Characteristic”を選んで、”Add Service”から”Vender Specific Service”を選んで+ボタンを押すとこんな感じに。Service Nameは適当に”led blink”って変えている。
WICED_4

Servicesの所で、led blinkを選ぶと画面の下に”Add Optional Characteristic”のセレクトボックスが出て来るから、”Vender Specific Characteristic”を選んで+ボタンを押すとこんな感じに。
とりあえず、Size(bytes)の所が0になっているから、1に変更。
WICED_5

そして次は、”Properties”のタブをポチって、”Write”のチェックボックスをオンにする。このSize(bytes)を1にして書き込みプロパティを付けるのは、KoshianにiPhoneから接続してLEDをチカチカさせる回数を書き込む先として、1byte分の回数(max255)を確保している。
WICED_6

そして最後に下にある”Generate Code”ボタンを押すとコードが生成される。画面の右の緑な所にも、ビルドターゲットで”led-BCM92073TAG_Q32 download”が追加されている。これをポチルと書き込まれる訳だけど、その前にLEDをチカチカさせるコードをちょいと追加する。

まずは、led_db.c のこの部分。P0をLEDに割り当てるように書き換える。

const BLE_PROFILE_GPIO_CFG led_gpio_cfg =
{
    {
        GPIO_PIN_WP, 
        0,            // <- ここね
        -1, -1, -1,
        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 
    },
    /*.gpio_flag =*/
    {
        GPIO_SETTINGS_WP,
        GPIO_SETTINGS_LED, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
    }
};

次は led.c のこの部分。BCM20737SのNVRAMに書き込む前に、iPhoneから送信された値を保存してLEDをチカチカさせる。

    ble_trace1("write_handler: handle %04x", handle);

    changed = __write_handler(handle, len, attrPtr);

    // この部分
    if ((len == 1) && (handle == HDLC_LED_BLINK_LED_VALUE)) {
    	led_hostinfo.generated.led_blink_led_client_configuration = attrPtr[0];
    	if (led_hostinfo.generated.led_blink_led_client_configuration != 0)
    	{
    	    bleprofile_LEDBlink(250, 250, led_hostinfo.generated.led_blink_led_client_configuration);
    	}
    }
    // 

    // Save update to NVRAM if it has been changed.
    if (changed)
    {
		writtenbyte = bleprofile_WriteNVRAM(VS_BLE_HOST_LIST, sizeof(led_hostinfo), (UINT8 *)&led_hostinfo);
  ・・・・・・

これで終わりで、Koshianに書き込んでLEDをブレッドボードに上手い具合に挿してチカチカー。端子はここのGetting Startに書いてある感じで、9の端子がアノード、1がカソード(GND)で上手くKoshianをブレッドボードの上に置いて、LEDでキュッと挟むようにすると上手く固定されると思われ。

KoshianのVCC/GNDにコイン電池を付けて動かすも良し、センサーを繋げるのも良いし、ビーコン端末にするのも良し、このサイズ感を保ったまたファームというかアプリを書ける。
まぁ...Eclipse使いは多いと思うから、ぶっちゃけノリで行けると思われ。あとDocを見るとAPIの使い方が書いてあったりするけど、サンプルが大量にあるから読めば大丈夫だと思う。

KoshianとWICEDでサクサク開発

Nordicに夢中になっていたけど、mpressionで980円で売っている、ユカイ工学さんのKonashi互換のKoshianを触り始めた。

スペックはBroadcomのBluetooth Smart SiP BCM20737(ARM Cortex M3, Bluetooth 4.1, アンテナ付き)が載っている。ぶっちゃけこれだけで、十分すぎるほど使える。めちゃ小さいし、お手頃感が半端ない。Konashiはこんな感じ。
pic1

Konashi互換という事で、JSとかSDKからも普通に触れる。小型拡張ボードとくっ付けるて、ブレッドボードに挿した感じは。

IMG_6565

良い感じに収まりますな。これでブレッドボードを使った遊びもサクサクできるし、これはこれで便利。
ただ、Konashiの他にもBroadcom WICEDを使ってFirmwareを直接変えて使えるというのが、この子の素敵なところ。方法はこちらのGetting Startに書いてある通りで、何の問題もなく使える。

唯一センシティブなのが、debug用の端子にハンダする時は、めっちゃ小さいから上手くやる必要がある。どんどん物が小さくなってきて、手がちょっとプルプルするよwww

IMG_6566

こんな感じでdebugの端子にはんだ付けして、自分はsparkfunの3.3V FTDIがあったからそこに挿して使える。元の拡張ボードに挿しても良い。ただ、Firmwareを上書きすると元のKonashiには引き返せなくなるという点は注意が必要。

んでWICEDのSDK(というかEclipse)を使って、直接BCM20737に書き込んで使える。コードは普通のC言語だから誰でも書けるはず。iPhoneから接続した図。LightBlue Beanのアプリが確認では便利に使えるかも。全然別の物向けだけどねw

10408485_10152617747623244_8033186520693387076_n

“ipv6 over bt”って見えるのがKoshian(BCM20737)。この上でIPv6を動かす暴挙をしようと(現時点では6LoWPANをKoshianの上ではまだ動かせていないです。ipv6 over btプロジェクトを作ってみたものの、WICED 2.2 SDKにある、l2capライブラリが6lowpanのpacket flow controlに対応していないようで、なんとか自作しないと現時点ではサクッとは無理ですねぇ)。うまくいったら、Nordic側とIPv6でBluetooth上で疎通できたらオモシロという謎の事をしようとしている。まぁ、恐らくチップ間での相互互換とかどうせ発生するだろうし、発生しなくても繋げられたら面白いじゃん!!ってことで。最終的には、ケータイ(iPhone/Android)にアプリを入れて、ケータイをGatewayにしてIPv6網に抜けていく感じを想定している。Koshianと6LoWPANで疎通するのは、Nordicの時に作ったVM上のUbuntu

RPi Kernel for Nordic IoT SDK 6LoWPAN

NordicのIPv6 over Bluetoothの6LoWPAN側のrouter側(RPi)はカーネルが提供されている。6LoWPANの実装は”net/bluetooth/6lowpan.c”でIntelがコミットしていた。既にLinuxのカーネルツリーに入っていて、Nordic提供のRPi用Kernel 3.17.4ではinsmodして使える。

ただね…Nordic提供のKernelを使うと、ネットワーク周りのフィルター、具体的にはiptable NAT/masqueradeが動かなくなる。デフォのRasbianだと普通に使えるのにおかしくね?ってことで.config を見るとあれれ抜けてるよ…ということで、自分で最新のカーネルツリーを取ってきて、6lowpanとNETFILTER周りを有効にしたカーネルを作った。

具体的には6lowpanはmenuconfigの以下を有効にすればOK

kernel-image

作ったカーネルビルドはこちら。
config
kernel
moduleとfirmware

RaspberryPi向けの設置は、configはカーネルのビルド用、kernelはそのまんま/boot/に配置して元々のカーネルを上書きしてもconfig.txtで差し替え。moduleとfirmwareは/lib以下に展開。(バックアップはしてね)

これで普通にnetfilterのnatとかが使える。IPv6 over Bluetooth/6lowpanも動作確認済。
ちなみに、Nordicの.configは参考にしたけど、継承しないで最新のkernel 3.18.3(nordicのは3.17.4で古い)を使っている。一応、ちゃんと動いているからnordicのRaspberry Piのイメージでnetfilterでおかしいな?と思った時の参考まで。

ちなみに、恐らく予想だけど、nordicのnetfilterがおかしいのは旧カーネルのoldconfigする時に、いちいち新機能の差し替えが走るんだけど、そこで「エンター連打」をしてスッ飛ばしたからなんじゃないかと予想している。バージョン忘れたけど、どこかのカーネルのバージョンからNEWで連打ボーン!!すると、natとかがスルーされてしまう。たぶん、連打ボーンしてIPv6 over bluetoothじゃ使わないから気にしなかったんぢゃないかなーと。

とまぁ、そんなnetfilterなことより、Linuxのカーネルツリーに6LoWPAN(net/bluetooth/6lowpan.c)が既に追加されていて、普通にカーネル取ってきて自分でビルドすれば使えるというのが分かった。

かまくらプロジェクション

お正月休みで実家の雪積もる岩手に帰ってきている。ただ実家でぐーたらするのも面白く無いと思って、雪を使ってプロジェクターで投影しか無いべ!!と思って、つい最近買ったP2Eを持ってきた。

雪の壁とかに投影したらわりと楽しかったから、かまくらの中に投影することに。雪とプロジェクタを使った物だと、雪の造型物とか壁に投影する物は見た事はあったけど、かまくらの中に投影している物は見た事が無かったのもあって、レッツかまくらプロジェクション!!ってことでoFで適当にプログラムを組んで遊ぶことに。

まずはかまくら作り…久々に雪と格闘すること1時間…

IMG_6220

とりあえず大人3人くらいは入れる穴ができた。夜になるとこんな感じ。

IMG_6286

まずは単色で投影したりすると…こんな感じに。思ったより幻想的な雰囲気が出て良い感じ。

IMG_6268

IMG_6235

IMG_6260

IMG_6264

IMG_6271

雪というか氷が光をより際立たせてくれている感じがする。実家の子供達に見せてみたら、ワーキャー楽しんでくれて良い感じだった。

あとで単純なパーティクルを投影して、かまくらの中でグルグル動かすと割と面白いかしら?という事で、これも適当にやってみたら意外とたのしい。

位置合わせと素材を調整すればもっと面白いと思われ。
大変だったのが、かまくら作り。家の前に積もっていた雪にひたすら穴をあける作業はわりと疲れた…
あと、投影するからには夜だろうという事だけど、氷点下の中で設置したり位置合わせ、ちょっとしたプログラムの修正を外でするのは大変というか…とにかく寒い、寒すぎる。Macbook Airが氷のように冷たい中での作業で、とにかく寒い。けど、子供達に遊んで楽しんでもらえてよかったかな。

IoT的価値

来年は更にネットにつながるデバイス、いわゆるIoT端末というのが溢れてくると思われる。開発を行う拠点も、DMM.make Akiba品川産業支援交流施設SHIPTechshop(富士通)とか出来てきている。

モノ系スタートアップの支援や、Yahoo Japanも電通もIoTと言っている状況で、周りをざらっと見た感じだとIoTと言っている所が非常に多い。けど、ぶっちゃけ実際のモノ、IoTデバイスというカテゴリに類するもので出回っているのはまだそんなに無い。まさにこれから産声を上げていくといった感はある。

■ モノの価値
先日の展示で見せてきたポスト君もそうだし、AccessさんがBeacon端末を無料で配るというのもだけど、いわゆる原価がいくらで実際の売値がいくら?というのは、非常に考える点が多いと思っている。ネットに接続してあれこれやる、いわゆるIoTデバイスは、

・モノ
・ネットワーク
・サーバ

といった所がプレイヤーとして出て来る。ここで、モノは現物で売値がいくら?という点があって、ネットワークはWiFi/BTを使えばOK、そして最後のサーバ(WebAPとか)は何気に効いて来る。今までのモノは売っていくら?だったのが、そこにランニングとしてのサーバやWebAPが継続して乗ってくるわけで、いつまでサポートするの?サービスの継続期間は?とか考えると、初期の売値で回収すんの?売切りで良いの?って気がするわけで。モノの価値というのは、サービスのランニングも込みで決めないといけない。

■ モノは激安、広告・月額いくら?
初期の価格にサーバとかのランニングも載せるというのは現実的ではないし、じゃあどうすんの?というと広告やアプリを介してサービスを利用する時に月額課金といった方法が考えられる。そして初期のモノの値段は激安で。原価がいくらだから最低限この値段で売らないと採算が…というのはいわゆる旧来の売り方から考え方が抜け切れていないと思っている。

そう、IoT、Internet of Thingsというネットのサービスを利用するのに、原価がいくらで?というのは要素の1つとして考えられる訳だけど、ネットサービスなのにそっちは考えてないの?というかサービスで対価を頂くんだよね?という点が抜け落ちているよーな気がする。

■ ネット・Webとの連携
モノを作るときはメーカー寄りの人だったり、実際にモノ作りに携わっている人との関わりが多いけど、IoTというシーンではネットやWeb側の広告や月額いくら?でサービスをやっている方との連携が必ず必要になる。それはモノの価値、値段決めという点においても。原価がいくらだから、この値段で売らないと…というよりも売値は押さえて、サービスで対価を頂くモデルが主流になると思う。

モノとサービスが主体になるIoTという形態では、作り手と同じくらいネット・Web側との連携、サービス作りが大切になると考えている。ネットにつながるからIoTデバイスで…というんじゃなくってね。サービスを提供して利用者にどんなメリットが?そして、その対価としてのサービス利用料や広告を出させて頂くといった、ネット・Web側で培われてきたノウハウというのが一体となって実現するのがIoTなる物だと考えている。

(追記) 上記のような、サービスモデル以外にも、Web側のデータ保全やIoT的端末からアクセス集中した時の冗長化、システムを落とさない為の運用…etc とか端末/ハードとは違う、ネット側で培われた知見は必要になってくる部分と思っている。ハードだけでもなく、Web側・ソフト側…といった様々な要素が必要になるでしょう。それはWeb側のサービスと、現実世界にあるモノとして使う人への最終的な価値の提供といった側面に反映されてくる部分でもある。
あと、このIoTというバズワードが自分的にWeb2.0とかビックデータといった歴代のバズワードに比べて現実味を帯びているのは、Web/ネット上の状態を表した言葉じゃなく、現実世界にあるモノ、目の前に現物として存在している状態という所が大きいような気がしている。

ポスト君

ポスト君という物を作りました。アナログな郵便箱を、電子メールのようにプッシュで通知して電子メールボックスとしての役割にしてくれる、IoT的なアイテムです。

– 通知方法
iBeacon(BLE)、またはメール。
メールの場合は、端末がWiFiに接続されている必要があります。

– 動作
1. 郵便箱にガジェットを入れて起動する。
2. 起動時に赤外線センサーで郵便箱の中の距離を一定時間測定する。
3. 監視スタート、たまに監視を行なってポストに郵便が投函されて、距離に変化が起きたら郵便が来たと判断して通知を行なう。通知はiBeacon、メールの何れか。
4. 郵便を取って、郵便箱の中が元の状態と同じ感じになったら、また監視を開始する。

– 利用シーン
1. 郵便が届いたらメールが来る。(WiFiタイプ)
2. 家に帰る途中で、郵便が届いていたら、ケータイに通知が来る(iBeacon)。
3. 空の郵便箱を開けて確認する必要が無くなる。
4. 家でゴロゴロしている時でも、郵便が来たら通知をしてくれる。

動作は非常に簡単で、こんなサイズの物を郵便ポストに入れておくだけ。普通の郵便箱に設置できます。
名称未設定

こちらはgugen 2014で展示してきた時のもの。
10354957_10152504126623244_5471968107727081321_n

よくあった質問としては…

– 電池ってどの位持つの?
デモの時はリアルタイムで監視をしていたので、すぐ電池が切れちゃうけど、郵便が来たかどうか?をリアルタイムで確認したい!!という高い欲求のある人はあまり居なくて、30分に1回確認をする位ならかなり電池が持ちます。逆に設定で、リアルタイムで確認をしたい!!という場合は、すぐ電池が無くなってしまいます。これはアプリ側から設定を行なって調整できるようにする感じですね。

– チラシとかも反応するんじゃ?
反応します。自分の場合は都内に住んでいるですが、チラシが全然来ないです。もちろん実家では来た事が殆ど無いですし、むしろチラシが来たら嬉しい位で、この点は受取手側の状態に依存します。また、チラシ状の封書であっても本当に欲しい郵便の場合もあるので、今の方法では判別不可能です。
そこでどうするか?というと、特注の郵便箱を作って、郵便が入ってきた時に、入って来た郵便物をスキャンして内容を確認するという方法で、来た物の属性を判断していく事も可能になるでしょう。つまり郵便箱の入ってくる口の部分をスキャナーのようにする、といった感じです。そこまでする必要があるかどうか?というのがポイントになります。

オムロン HVC-Cを使った開発

HVC-Cを使った開発について備忘録で記載しておきます。

一般的にはSDKについている通りに作れば良いんだろうけど、iPhone/Androidのコードだけなのでやっぱり色んな環境で動かしたいよね…ということで、とりあえずopenFrameworks上を使うことに。

あと、SDKを見てみると、特にソースはBluetoothとの通信のコマンドとかそのまま見れる。という事で…Edison + NodeJSでも動かそうとして書いてあったのもあったんだけど、今見たらrmしちゃったようで、存在が無くなっていた…orz 方法的には「インテルEdison + BLEで、konashi/SBBLEを動かしてみた。」を参考にnobleとかで作れる。

一般的な作りとしての参考情報はこちらを。
HVC-C iOS SDKサンプルプロジェクトの起動
集中力を測定するCencentMeter – べるべる研究日誌
OKAO Visionがやってきた!!(4)

んで自分のアプリの環境、構成は以下の通り。

– センサ
HVC-C
モバイルバッテリ

– iPhone側
Mac OS 10.9.5
Xcode 6.1
openFrameworks 0.8.4(ios)
MQTT Kit

– 光りモノ側
Spark Core + LED沢山
MQTT Client

– 全体構成
pic1

iPhone/Server/Spark間はもちろんWiFiで、それぞれのパーツが無線で通信する。最近、自分はMQTTが好きでよく使う。MQTTを利用するとセンサーの値をsubscribeしている端末(ここではSpark)のMQTT側にpublishできるから以下のような感じにも。

pic3

MQTTを利用するとセンサーデータをpublishすればあとは、そのデータをsubscribeしている方に処理をまかせる事が出来るから、センサーデータを使ったアプリをネットワークを介してリアルタイムで行いたい時にはとっても便利。例えばHVC-Cを使う場合、取得できる人の数・顔の位置・表情の状態…etc をpublishしておけばあとは使いたい方で、好きなような処理を行うことが出来るという感じ。
別にSpark Coreを使わなくてもOKで、MQTTで受けれる物であればAndroid/iPhone/Win/Mac…etcなんでもsubscribeしておけばpublishされたデータが一斉に流れてくる。iPhoneとServer間は矢印が一方通行で書いちゃったけど、もちろんここも双方向。

んで、次にopenFrameworks側との合体については以下のような感じ。HVCのSDKに入っているソースコードを一式持ってきて(多少修正は入るけど)、oF側からコールするだけ。

pic4

これを動かすとこんな感じ。表情で色を変えているだけの単純な物だけど。

んで、oF側も出来て端末側(HVC-C/openFrameworks)は完成。つぎにモノ側、SparkのMQTTの処理はこんな感じのコールバックを書くだけ。

void callback(char* topic, byte* payload, unsigned int length);
MQTT client("hogehoge.com", 1883, callback);

int faceflg = 0;
// HVC-Cからpublishされてきたデータ
void callback(char* topic, byte* payload, unsigned int length) {
    char p[length + 1];
    memcpy(p, payload, length);
    p[length] = NULL;
    String message(p);

    if (message.equals("SURPRISE"))         faceflg = 0;
    else if (message.equals("NEUTRAL"))     faceflg = 1;
    else if (message.equals("HAPPINESS"))   faceflg = 2;
    else if (message.equals("ANGER"))       faceflg = 3;
    else if (message.equals("SADNESS"))     faceflg = 4;
}
void setup() {
    RGB.control(true);
    RGB.color(0, 0, 0);

    // connect to the mqtt server
    client.connect("sparkclient");

    // subscribeする
    if (client.isConnected()) {
        client.subscribe("/HVC/spark");
    }
}

void loop() {
    if (client.isConnected())
        client.loop();

    // 表情で何らかの処理(LEDピカー!!とかサーボ動かしたりやりたい放題)
    switch (faceflg) {
    .....
}

ちなみに、iOS側のpublish側はSDKに付いている内容だと、こんな感じでサクッと。

                NSString *expression;
                switch(fd.exp.expression){
                    case HVC_EX_NEUTRAL:
                        expression = @"NEUTRAL";
                        break;
                    case HVC_EX_HAPPINESS:
                        expression = @"HAPPINESS";
                        break;
                    case HVC_EX_SURPRISE:
                        expression = @"SURPRISE";
                        break;
                    case HVC_EX_ANGER:
                        expression = @"ANGER";
                        break;
                    case HVC_EX_SADNESS:
                        expression = @"SADNESS";
                        break;
                }

                [client connectToHost:@"hogehoge.com"
                    completionHandler:^(MQTTConnectionReturnCode code) {
                        if (code == ConnectionAccepted) {
                            [client publishString:expression
                                          toTopic:@"/HVC/spark"
                                          withQos:AtMostOnce
                                           retain:NO
                                completionHandler:^(int mid) {
                                    NSLog(@"message has been delivered");
                                }];
                        }
                    }];

この部分はopenFrameworks側で処理をしても問題無い(というか、その方が分離という意味では良いと思われ)。普通のMacOS上でも多分、少し修正すれば動くと思うけど、NodeJS/nobleとかでチョコチョコっといじって動かした方が便利だと思う。

といった感じで全部構成完了という感じ。このMQTTを使うパターンは他でもわりと使っていて、何気に自分は好き。サクッと配信して使いたい・処理したい人だけsubscribeすれば良いからね。

Android 3D Sensor

We(SIProp) developed many Android/ARM platform with 3D Sensor Application. Here is our deveop history about the Android/ARM with 3D sensor 😛

– Nexus7(Android 4.4.2), DepthSense DS325 ToF Camera, OpenNI2, Point Cloud(with openFrameworks), 2014

– ODROID U3(Android 4.4.2), DepthSense DS325, OpenNI2, Point Cloud(with openFrameworks), 2014

– Pandaboard(Android 4.2), Kinect, OpenNI2, 2013

– Raspberry PI, Xtion Pro Live, OpenNI2, 2013

– Pandaboard(Android 4.0.x), Xtion Pro Live, OpenNI, 2012

– Auto Chasing Turtle(beagleboard-xM, Ubuntu 10.10/Android 2.2), Kinect v1, OpenKinect, 2011

– ofxkinectxandroid(armadillo/beagleboard-xM, Android 2.2), Kinect v1, OpenKinect, 2011

Koshianを使ってみる

ようやくKoshianを通電して遊んでみたら、面白かったから備忘録で。koshianは何かと言うと…この写真でmpressionと書いてある端末です。

IMG_5912

Bluetoothがついている端末とか小さい端末との比較の写真で、Arduino Pro Mini, Intel Edison, Aplix iBeacon, Light Blue Bean, Koshian, 8pinoですね。Koshianと8pinoの小ささが際立っている感じ。

このKoshianが良い感じなのが、このサイズでBT,アンテナ, Cortex M3が入ったSiPモジュールでKonashi SDK、JavaScriptからサクっと動かせるというイケてる感じ。Firmwareも書き換えOKだし、まぢでこれはヤバい。

んで、とりあえずLチカ。

DSC_0033

このサイズ感はヤバい…かなりヤバい。あとで8pinoと一緒に遊んでみよう。BTの応答も凄く良い感じ。サクっとiPhone&JavaScriptでLチカの使い方は、

1) konashi.jsをAppStoreからダウンロードしてインストール

2) Koshianと電源(単三2本で3V使った)は上の写真みたいな感じで接続。ピンは”Getting Started”のpdfに書いてある通り。

3) iPhoneのkonashi.jsを起動したら、konashiで検索。「forked: koshianでまずはLチカ(LEDチカチカ)」をクリック(さっきforkした)。
IMG_5907

4) 実行の再生ボタンをクリック
IMG_5908

5) “まわりにあるkoshianを探す”をクリック。(iPhoneのBluetoothはオンにしておく)
IMG_5909

6) ペロっと見つかったらクリックするとLEDがぴーかー
IMG_5910

JavaScriptのコードは元のがPI02を使う感じだったので4にしているだけ。JSを見てもらうと分かると思うけど、むちゃ簡単に使える。ちょっと難しいかも…と思うのがブレッドボードに挿す場合、ピンヘッダをハンダしないといけないけど、ピンがちっちゃいから上手くやる必要がある。まぁ問題無いよね。

ということで…作る予定があったBLE物で使ってみようと思っているのもあるし、追加で2個ポチってしまった(w)。いやー、コスト(980円)とサイズ、スペックを考えると、お手頃感がたっぷり。

Intel Edison and Xtion & OpenNI2

IMG_5529


depth CPU Load Avg
edison-loadavg running about 30fps.

 

NiTE(User Tracking is running).
nite

めっちゃ簡単に動きます。と言うか…普通に動きます。方法は次の通り。

1. install libusb

opkg install libusb-1.0-0 libusb-1.0-dev

2. download OpenNI from here.

wget http://www.hirotakaster.com/download/OpenNI-Linux-x86-2.1.0.tar.bz2
unzip OpenNI-Linux-x86-2.1.0.tar.zip
tar -jxvf OpenNI-Linux-x86-2.1.0.tar.bz2
cd OpenNI-2.1.0
sh install.sh
source OpenNIDevEnvironment

3. reload udev rule and connect Xtion to Edison(use J16 Micro AB usb connector).

udevadm control --reload-rules

4. run SimpleRead

cd Samples/Bin
./SimpleRead