LoRaWAN+Arduino開発の新フレームワーク「KashiwaGeeks」が登場!
KashiwaGeeks-1.JPG「柏の葉IoTハッカソン」は回を重ねる毎に盛り上がりを見せていまして、12/9の柏の葉KOILのLTでは、ついにLoRaWAN™とArduino開発の新フレームワーク「KashiwaGeeks」が発表されました。
KashiwaGeeksを導入すると、
1)スリープ機能による省電力化
2)タイマーによるウェイクアップ機能
3)INT0、INT1割り込み機能
4)タスク実行管理機能
が提供されます。
開発者の山口知昭さんは現在65歳、大手電子部品メーカの情報システム統括部長を経て、eclipse paho プロジェクトのMQTT-SNコミッター、pahoのMQTTと言えば、IoT開発をやっていればみんな知ってる存在です。現役で毎日コードをバリバリ書いてるそうです。この12月からは、LoRaWANによる全国サービスを発表したセンスウェイ社の技術スペシャリストに就任されました。
*pahoのコミッターは、写真左下からプロジェクト・リーダーであり、あの mosquitto を開発したイアン・クレッグ(Ian Craggs)さん、node-redを開発したニック(Nick O'Leary)さん、一番右が山口氏。
LTでは、山口さんから現在のArduinoスケッチによるLoRaWAN開発でいいのか?という問題提起から始まります。
1)loop()で実行の制御は見通しが悪い
2)ループしてるだけでバッテリー消費してしまう
3)データ送信、コンソール出力のために sprintf などでフォーマット作ってから sendCmd とかわかりにくい
これらの問題を解決するために KashiwaGeeks が登場しました。KashiwaGeeks は最初に #include<KashiwaGeeks.h> のようにインクルードするとフレームワークが使えるようになり、Arduinoスケッチで使われている void setup() に代わり、 void start() を使います。すると、自動的にウォッチドックタイマーが1秒間隔で走り始めます。
そして TASK LIST により、タスク管理を可能にしています。実行したい関数を書き、起動してから何秒後に起動するか、その後、何秒毎に起動したいか、を書くと、自動的にその関数が指定した秒数毎に起動されるようになります。その間はスリープモードに入るのでバッテリーの消費が最小限に抑えられます。タスクは複数を記述することができ、タスク管理が非常に簡単になります。
Kiwitech社のADB922Sは、ソラコム社やセンスウェイ社のLoRaWANサービスに対応したLoRaWANモジュールのArduinoシールドです。KashiwaGeeks の Class ADB922S は、このシールドの機能を集約したクラスになっています。
冒頭で ADB922S LoRa; のように宣言した後は、 LoRa.connect(); で LoRaWAN Join プロセスが開始されます。
上は従来のArduinoスケッチでLoRaWANシールド ADB922S にコマンドを送る場合、sprintf でフォーマットしてから sendCmd で送信していました。これが KashiwaGeeks の Class ADB922S では、下のように LoRa.sendData でスッキリと記述することができます。(補足:最新版ではsendString() )さらにF()マクロが使用できるので文字定数がフラッシュに格納され、Arduinoの2KBしかないRAMの消費が抑えられます。
LoRaWANのダウンリンクも簡単に扱えるようになっています。
PORT LIST に、各ポートに対応した関数を用意すれば、ダウンリンクのデータがあった時に自動的にその関数を実行してくれます。
詳しくは、山口さんのGithubで公開されているマニュアルを参照してください。
■KashiwaGeeksユーザーズ・ガイド
https://github.com/ty4tw/KashiwaGeeks/blob/master/KashiwaGeeks_programing_manual_v0.4.pdf
KashiwaGeeks の導入方法は、山口さんのGitHubから「Clone or download」の「Download ZIP」でZIPファイルをダウンロードし、Arduino IDEの「スケッチ」メニューから「ライブラリをインクルード」→「ZIP形式のライブラリをインストール」を選んでZIPファイルを指定します。
https://github.com/ty4tw/KashiwaGeeks
これで KashiwaGeeks が利用可能になります! サンプル・スケッチも一緒に公開されていますので参考にしてください。
KashiwaGeeks は更新が続いていて、キャラクタベースでのデータ送受信だけでなく、バイナリもサポートするようになっています。柏の葉IoTハッカソンのFacebookグループでは、山口さんから追加機能の更新がアナウンスされたり、質問もできます。ぜひ参加してみてください。
以下はYoutubeに限定公開している柏の葉IoTハッカソンでの山口さんによる KashiwaGeeks のLTの模様の動画になります。