Arduinoで使うモータドライバ

よくArduinoでモータードライバといったら、東芝のTA7291Pあたりを買って…というケースが多いけれど、ふとROHMのBD6211F-E2イケんぢゃね?と思って使ってみたら…イケてるよ、これBD6211F-E2。

– TA7291PとBD6211F-E2の比較
まずは写真で見るとこんな感じ。一番左がTA7291P、真ん中がBD6211F-E2をSOP8にハンダしたもの、一番右がBD6211F-E2を実装したスイッチサイエンスさんのもの
pic1

まず思うのがサイズの小ささ。小さくていい感じ。そして何より安い。秋月さん価格で。
– TA7291P 300円/2個
– BD6211F-E2 100円/個
SOP8は9枚入りで100円だから、はんだ付けの手間くらいで、BD6211F-E2の方が良い。そして、TA7291PはVCC:4.5V-20Vなのに対して、BD6211F-E2:3.0V-5.5V。この3.0Vというのが自分的にはとっても魅力的。はんだの手間が面倒なら、スイッチサイエンスさん所からゲットしても良いと思う。

安い、小さい、3.0Vからという良いことづくめで使ってみることに。

回路や設定はこちら、BD62xxFモータードライバ(スイッチサイエンスさんのページから。)

よく利用されるDCモータのFA-130をつなげた感じはこんな感じ。

めっちゃ良い。良い。とっても良い。

スイッチサイエンスさんのを使うとこんな感じ。(BD6211F-E2のVREFがVCCに出荷時に接続されてあるから、もっと便利に)

良い。めっちゃ良い。これ好き。

小さいのは良い。何か実装しやすいし、めっちゃ良い。

ソレノイドを使う

モーターやサーボ、ステッピングモータに比べるとあまり情報がアップされていないソレノイド。大抵、12Vあたりで使われる事もあるみたいで、あまり使用頻度が高く無いのかも。

ちょっと使ってみようと思い、安い5Vで動くSparkfunのソレノイドをゲットした。

Solenoid – 5v (small)この子だけど千石さんでもゲットできる。

正式な型番はZHO-0420L/Sでゲットしたのはプッシュタイプ。戻りバネも付いているからサクっと簡単に使える。5Vな仕様だけど、19Vくらいまで流せるみたい。パワーが欲しい時は大きめで流しても良いかも。

んで、接続するとこんな感じ。

NPNトランジスタ(2SC3964), ソレノイドが戻る時に発生する電流制御用のダイオード(1N5818)を使って、5V電源はArduinoから利用する。コードはこんな感じ。

void setup(){
  pinMode(3, OUTPUT);
}

void loop(){
  digitalWrite(3, LOW);
  delay(1000);
  digitalWrite(3, HIGH);
  delay(100);
}

ちょっとコードは違うけど、こんな感じの動き。リズムを作れたりする。

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円くらいだし、コスパもめちゃ良い。

こんな感じでとりあえずは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″を追加している。

これは書いたアプリを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]をポチル

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

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

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

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

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

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

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

const BLE_PROFILE_GPIO_CFG led_gpio_cfg =
{
    {
        GPIO_PIN_WP, 
        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の使い方が書いてあったりするけど、サンプルが大量にあるから読めば大丈夫だと思う。

6LoWPAN Ubuntu VM Image

This is “How to use 6LoWPAN(IPv6 over Bluetooth) on VMware Player Ubuntu LTS image”. 6LoWPAN is already included in linux kernel tree(net/bluetooth/6lowpan.c), and Nordic nRF51 IoT SDK is using Raspbian kernel for Raspberry Pi Linux kernel 3.17.4 as IPv6 gateway, but hardware(RPi) is needed if want to try the 6LoWPAN. so I build lastest Linux kernel 3.18.4 for Ubuntu 14.04 LTS, and use VMware Player instead of the Raspberry Pi. Even if you don’t have RPi, can use the 6LoWPAN!!

I use Nordic nRF51822(Red bear BLE nano: ARM Cortex-M0 SoC plus Bluetooth 4.1 Low Energy), and Bluetooth USB Dongle(Bluetooth4.0+EDR/LE), nRF51 IoT SDK, like a following.

1. download the Ubuntu Linux VM player image from my website.
Ubuntu_14.04.1_LTS_64bit_Kernel_3.18.3.zip

2. Run VMware Player
In my case, I use Windows7 VMware Player. This Ubuntu Linux 14.04.1 user and password is “ubuntu/ubuntu”. Linux Kernel is already updated to 3.18.4.

3. connect Bluetooth Dongle to the PC, check the Bluetooth dongle and VM Linux connection on VMware Player dialog.

3. config the 6lowpan and check the ping6 on VMware.

If want to build the linux kernel, check the “/boot/config-3.18.3” linux kernel build file. Maybe it’s easy to develop the linux 6lowpan kernel module by using the VM linux.

KoshianとWICEDでサクサク開発

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

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

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

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

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

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

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

“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

How to use 6LoWPAN on VMware Ubuntu Linux in MacOS

Raspberry Piを使って6LoWPANを試していたけど、ぶっちゃけRPiを持ち運ぶも面倒だし、Linux Kernel 3.18.3 とかで普通に6LoWPANは使えるから、OS上の仮想Linuxで使いたくなるのは自然の道理。

という事で、Virtual Box上のUbuntu Linuxから6LoWPANで物理デバイス(nRF51)と6LoWPAN(IPv6 over Bluetooth)で疎通を行うことにした。けどVirtualBoxのHost Controllerとの相性がダメなのか、仮想OSへBluetoothのつなぎが出来ない。色々と試してみたけど、どうやっても出来なかったから、VMwareを使うことに。

これでRPiを使う必要もなくなるし、VM上でサクサク6LoWPAN、IPv6の実験が出来る便利な環境になる。ルーティング・カーネルのテスト、6LoWPANもめちゃ簡単にテストできるようになるから、VM上のLinuxを使うのはお勧め。方法は簡単でカーネル取ってきてビルドするだけ。ぶっちゃけRaspberry Pi/Edison…etc とかarm向けのビルドも全部一緒のノリで出来ると思われ(全部検証したわけじゃないけど、だいたい一緒)。

カーネルの設定はこちらに載せている通りにすればOK。一応、Ubuntu Server 14.04にdpkg -i で打ち込んでバッチリ動いている。自分がビルドしたKernelパッケージはこちら。

3.18.3 Linux kernel for Ubuntu
build config

ダウンロードしてきたらインストール&再起動で最新カーネルに変えたら終了。めちゃ簡単。こんな感じ。

MacのUSBポートにはnRF51、BroadcomのBluetoothドングル(市販の普通のもの)を挿して、nRF51 BluetoothドングルがMac上のVM Linuxを介してIPv6 over Bluetoothとして疎通している。

何を思っているかというと、WiFiが使えなくてルータがない、シリアルも無くても、VMのUbuntu上でIPv6 over Bluetoothで疎通をしてネットワークを作ってテスト・開発・検証できる(Macは対応している訳じゃないからね)。VM上のLinuxを6LoWPANルータみたいな感じで使えるし、便利な環境も作れるようになる。

このイメージを配ったら、誰でもRPiとか無くてもすぐ6LoWPANを使った開発が進められるよーになると思っている。もちろん、Bluetoothの方は必要になるけどね。

ちなみに、VMのMacはYosemiteの環境で、VirtualBox上のUbuntu LinuxからBluetoothを利用・終了するときは、次のコマンドをMacOS上で行う必要がある。ただ、Host Controllerが突然dieするのは乗り越えられなかった…VMwareでは以下は不要。

# Load
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.blued.plist
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextunload -b com.apple.iokit.IOBluetoothHostControllerUSBTransport

# Unload
sudo kextload -b com.apple.iokit.IOBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo launchctl load /System/Library/LaunchDaemons/com.apple.blued.plist

6lowpan Linuxカーネルメモ

6lowpanのカーネル実装部分のメモ

– Bluetoothでの 6lowpan(IPv6 over bluetooth)のメイン部分
net/bluetooth/6lowpan.c
基本的にはl2capにbluetoothの足回りは依存していて、l2cap以上の上物を書けばOKという作り。l2capとIP層との繋ぎまで。l2capの実装は ”net/bluetooth/l2cap_core.c” とかを参照。
6LoWPANのRFCは現在絶賛ドラフト中。rfc7400のヘッダ圧縮も入っている。

– PAN内のPeer(Bluetooth同士)の扱い
6LoWPAN内のPeerの管理は “linux2.6/include/linux/list.h” を使った単純リスト構造。Peerの検索はlist。あれまぁDHT/Chordにしたら?とか一瞬思ったけど、そもそもBluetoothって同時接続で激しいルーティングする感じでも無いし、listでも十分と思われ。Peerはもちろん複数持ってもOK。
パケットがbt%dデバイスから送信時(ndo_start_xmit=bt_xmit)は、Peerが1個の場合はすぐに送信。2個以上の時は、OSのルーティングテーブルによろしく(bt%dが出来るから)。

– 6lowpanヘッダ処理
net/6lowpan/iphc.c
IPv6をBluetooth上に投げる時にヘッダ圧縮(rfc7400)。圧縮といってもヘッダを省く位な感じ。この時にHop Limitの処理も入る。超過したらソケットバッファからdropされる。
別のディレクトリになっているのは、必ずしもbluetoothのみを対象にする訳では無いという現れかな。

– bt%dで作成されるデバイス
 setup_netdev, netdev_setup
 ARPHRD_6LOWPAN
 IFF_POINTOPOINT

– /sys/kernel/debug/bluetooth/6lowpan_psm
 bluetoothのデバイスで、周辺のbtのlistenの開始・終了セット
 -> bt_6lowpan_listen

– /sys/kernel/debug/bluetooth/6lowpan_control
 実際のbt%dの作成とl2capで対向のBluetoothに接続
 -> lowpan_control_write

– bt%dへの読み書き
 bt_xmit -> send_pkt : Bluetooth上でl2capで送信
 chan_recv_cb -> recv_pkt : l2capからの受信

メインの構造は以上で、あとはヘッダ処理とかsetup/init系。6lowpan/bluetooth合わせても2000行程度だからサクサク読めるはず。

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

作ったカーネルビルドはこちら。
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)が既に追加されていて、普通にカーネル取ってきて自分でビルドすれば使えるというのが分かった。

IPv6 over Bluetooth

IPv6かよっwwww って声がそこはかとなく聞こえてくる気もするけど、自分の中でまたIPv6が再燃している。それは何故かというと、Bluetooth 4.2の仕様にIPv6/6LoWPANが乗ってくるというインパクトのあるニュースが、ある一部のマニア層(w)で飛び交った。

ニュース的には、”Bluetooth 4.2 発表。Bluetooth Smart で直接インターネットに接続。通信速度とセキュリティ強化“とか、Bluetooth SIGの発表はこちら

IPv4は抜きで、まさかのIPv6/6LoWPANっすよ。一瞬、何の冗談だよ(w)って思えたけど、マヂでBluetoothにIPv6が乗ってくる。IPv6とかイマサラ感&使えねーだろ!!とか言っても乗ってくる。2015年(今年)にはBluetooth 4.2に対応した物が出荷され始めるとのことで、IPv6の再燃か!?まさかBluetoothからやってくるとは、誰も思わなかったと思われ(www

物自体は2015年からという事で、まだ先だろうなぁ…と思っていたら、既にNordicさんがIoT SDKのベータ版という事で出していた。CES 2015でも(何故か日本じゃニュースに出てないけど)デモをしていたようで。ということで、早速やってみることに。構成は次のような感じ、

端末 : Nordic nRF51
IPv6 Router : Raspberry PI/radvd/BroadcomのBluetooth dongle
上流は無し。

バッチリできたー!! 6lowpanでの端末のLED制御もできるし、link localでのIPv6の疎通もバッチリ。すっげー楽しい!!
64bit prefixをどこからか持ってきてradvdに食わせると、サクッと上流もできてGlobal IPv6でネット側から疎通ができる。Nordicのスタックを見ると、まさかのLwIPが全力で使われていた。軽め&既存物だし、ライセンスもBSDだからサクッと作ったものと思われ。簡単だもんね。けど、10年ぶり位にLwIPに遭遇するとは全く思ってもみなかったw
次はKoshian(Broadom)の環境でやってみようかなと。WICEDのSDKでFWを書き換えて使える所も確認しているし、スタック載せればサクッと動くはず。

そしてTIさんの6lowpanのサイトから絵をちょっとコピって、Bluetooth 4.2が出始める頃に出来上がると想定されるNWな絵はこちら。TIさんもIPv6 over Bluetoothをそのうち出してくるのかなー。

エッジルータは据え置き物がすぐ考えられるけど、iPhone/Androidのアプリ(Bluetoothと疎通して上流のIPv6をのコネクティビティを担保)が出てくる。というか作ろうと思っている。すると、絵の通りだけど。

1. Bluetoothだけで6lowpan(IPv6)での疎通ができる。
2. エッジとしてスマートフォンを使うと、Bluetoothの端末・ガジェットにIPv6でダイレクトに疎通できる。

こんな事ができる。ただし、問題点としては今・そしてすぐ上流がIPv6いっぱーい!!という事にはならないから、GlobalからアクセスしようとするとIPv6 over IPv4のトンネルといった事も必要になる。これはサーバサイドもちょっとした物が必要になってくるんだけど、この辺もいつものノリでやれば出来ると思われ。IPv6ダイレクト接続でIPv6 64bit prefixが振ってきたり、VolTEではIPv6が使われていて将来的にはトンネルとか不要になると思うけどね。
何故かスタックとか、ネットワーク周辺で興奮するんだけど、IoTというかモノとネットワーク間は凄く面白いところになってくる予感。

あと今すぐIPv6がBluetoothに乗ってくる訳じゃない。いまだに上流やサーバ/NW側のIPv6が進んでいない事、Bluetooth端末にダイレクトにGlobalからアクセスする時に間違いなく必要になるセキュリティが真っ先に考えられる。ただ、6lowpanでNWを構成してGlobal側は使わないという方法もあったりするし、この辺はこれから考えればまだ十分だと思うし、何にしてもBluetooth 4.2でIPv6が出始めるというのは、今からアプローチしておいた方が間違いなく良い所かな。

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

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

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

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

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

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

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

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

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