Particle Meshが届いた

Particle Meshが届いた。

オーダーしたのはArgon、Xenonが(予想外に)大量に届いた。Argonのスペックはこちら。ESP32、nRF52840が1ボードに搭載されているとう変態端末とも言える。そして同じくXenonはこちらで、nRF52840が搭載されている。
更にLTE(blox, LTE CAT M1/NB1, 2G/3G)とnRF52840が搭載されているBORONというのもあるけど、こっちはポチっていない。まぁ…LTE側はまぁ別にいいかなーと。日本もエリアに入っているし、先代のElectronも国内で使えていたみたいだから、LTEでネットワークを終端して周囲にメッシュネットワークというのも面白いと思うけどね。

■ パッケージ
大量にポチった理由はプレオーダー(人柱?)の安さだった。Argonは$15、Xenonは$9でプレオーダーは送料無料!!海外からの送料は高くなる事が多いなかで、このスペックで送料無料というのはヤバすぎる。パッケージの中身はこんな感じ。

本体とアンテナ(Argon)、ブレッドボード、白色LED、照度センサ、抵抗x2が化粧箱に入ってこの値段はヤバイ。間違いなく原価割れしているだろう…プレオーダーだからといって、こんな値付けで大丈夫なんだろうか…と心配してしまうほどだ。

■ Mesh!!
Thread/6LoWPANでのメッシュ、WiFi/LTEで終端したGatewayを通したクラウド側との疎通が最大の目玉。
Thread Topology
こちらのコミュニティスレから。このThread Topologyをサクッとめちゃ簡単に作れる。実験してみたら、切断したノードの電源投入と共に自動でメッシュネットワークにJoinして、クラウド側からノードにアクセス出来るようになる。これは割と感動した。
このコミュスレにある通り、遠くまでメッシュでネットワークが数珠つなぎになって疎通することが出来る。まぁメッシュネットワークでどこまでも…といえば、そりゃそーなんだけど、BLEとWiFiで構築されるメッシュネットワークにクラウド側からサラっとアクセスできるというのは、混雑エリアや遠くまでとか可能性をめちゃ感じる。

■ クラウドからアクセス
左がArgon(WiFiノード)で、右がXenon(Threadノード)でLEDと付属の照度センサをつけた。

ちなみにFirmware(アプリ)はWebIDEからOTAで投入できる。クラウド(firmwareのコンパイル&ビルド)=>Internet=>WiFiノード=>Threadノード、といった感じでどこまでもOTAでアプリを投入できる&めちゃ簡単。USB SerialからもデスクトップのIDEでアプリをブチ込めるけど、ブラウザで適当にビルドして投入できるお手軽感が良い。これはCore/Photonから続く流れなんだけど、Thread/6LoWPANを経由してもOTAでfirmwareをブチ込めるのにはわりと感動する。Maker Faire Bay Areaでデモを見せて貰ったとき、本当にThread経由でOTA出来るのかよ!?と全く信じていなかったけど、マジで普通に出来る。いままでのParticleだと、初期ロットはクソみたいな出来栄えで、まともに動くと全く思っていなかっただけに、ビックリしてしまった。

Web上ではこんな感じでターゲットになる端末にfirmwareを投入していく。Webだけじゃなく、デスクトップIDE、コマンドライン(API)を叩いてもアップロード出来る。コードは適当にこんな感じ。

int illuminance = 0;
int counter = 0;

// クラウド&APIから実行できる関数をデバイスに登録(Function機能)
bool success = Particle.function("function1", function1);
int function1(String extra) {
  Particle.publish("function/call", extra);
  return 0;
}

void setup() {
  pinMode(D2, OUTPUT);

  // クラウド&APIで取得可能な値を登録(VARIABLES機能)
  Particle.variable("illuminance", illuminance);
}

void loop() {
  counter++;
  digitalWrite(D2, HIGH);
  illuminance = analogRead(A4);

  delay(2000);

  digitalWrite(D2, LOW);

  delay(2000);
  
  // カウンター値をクラウドにPublish(Subscribeもある)
  char buff[128];
  sprintf(buff, "%d", counter);
  Particle.publish("counter/val", buff);
}

Arduinoライクにコードは書ける。この中で面白いのが、Function機能・VARIABLES機能が地味にイケていた。Publish/Subscribeは前々からあるからいつもの感じ。Particleのコンソールで端末とクラウド連携が確認できる。

ソースコードでFunctionで登録した関数がクラウド側にも登録されてWeb上から端末上の関数を叩くことが出来る。そしてVARIABLESはGlobal変数で登録しておくと、いつでも値をGETすることが出来る。EVENT LOGSにはPublishされた値が流れて出ている感じ。
つまり、端末上の関数・変数とクラウドが綺麗に結合して、どちら側からも簡単に使うことが出来るようになっている。ビビるのがWiFi/LTEのGatewayを経由して、Thread/6LoWPAN経由でエンド・ノードに対して実行可能なところで、これ普通にイケてると思われ。

■ スマホからいじる
スマホからWiFi/Bluetooth経由で設定とかもアプリから出来る。これは自分の端末一覧。Particleの歴代端末(めちゃ買ったんだ…)が登録されている。

そしてピンの活性化(DigitalRead/Write/AnalogRead/Write)もアプリからいじって、直接ピンの値をいじって遊べる。

ざっくり、端末スペック・価格が凄いというのもあるけれど、それと同じくらいクラウド側やソフトウェア面もかなり充実している感がする。あとは、自分がParticleにconotributeしているライブラリがちゃんと動くか(どーせ、また動かねーとか、機能追加しれ!!とかあるんだろうなぁ…)、メンテと検証を引き続きやらなきゃ!!って感じかな。いま見たら、使ったアプリの総数が150K超えているし。
何にしてもThread/6LoWPANでのMESHネットワークがどれくらい使えるものか、超混雑エリアや距離といった点で遊んでみたい。そして、もう少し詳しくみて、ESP32/nRF52840を直接さわって遊んだり、IPv6ネットワークを使った何か出来ないか…とか、色々と遊べるよーな気がする。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください