応用編
Groovy-IoT + Kikoriは、IoTのPoC案件でお客様からの要求と市場の動向から、仕様を決めてきた経緯があるので実践的です。ここではその中のいくつかの事例を紹介します。応用例は今後、事例の増加と共に追記します。
- Atomic-IOによる高速ADCサンプリング
Groovy-IoTはUSBの密結合なので、USBのトラフィックがそのままボトルネックになりますが、他の同様のシステムに比べて比較的高速(2-3msec)にサンプリングする事が可能です。この局所性を活かしたIO処理をAtomic-IOと呼び、特にADCによる高速サンプリングに利用しています。もちろん、GPIOなどをドライブしても良いのですがCLKRなどでその辺りは代替できますのでADCが主な使い道になります。kikoriはclojure で記述されていますので、Java由来のガベジコレクションにより変動する事を留意して下さい。
1curl 'http://localhost:3000/read?target=ADC2&type=rms&sampling=128'- Optionの説明
Optionはsampling数、type,が設定出来ます。sampling数はデータを何点取得するかの設定です。typeはその取得したデータに対しての演算になります。min(最小値), max(最大値), rms(Root Mean Square:二乗平均平方根, mean(単純平均), sd(標準偏差)を設定出来ます。 - 応用例: 電力測定
- Optionの説明
- 出力
センサを扱うだけでなく、(アクチュエータ)出力も可能です。ただし、入出力設定は最大限の注意を払って下さい。取り扱いを間違えるとセンサなどを壊す危険性があります。- GPIO
末尾のvalue=0 or 1でL/Hの出力を切り替えます。
1curl 'http://localhost:3000/write?target=GP0&value=0' - DAC
DACは標準的なGrove-Systemには搭載されていない機能です。MCP2221aの機能になりますが、kikoriから制御が可能です。0-31(5bit)の値を取ります。ジャンパで設定している電圧とsystem.clj内のvrmによってLSBが決定します。
1curl 'http://localhost:3000/write?target=DAC2&value=20 - CLKR
CLKRはクロック出力になります。最高で24MHzのクロックを出力出来るので、様々な応用が可能です。発振周波数とデューティをセット出来ます。発振周波数として、:24M, :12M, :6M, :3M, :1.5M, :750K, :375Kがセット出来ます。同様にデューティは:0, :25, :50, :75となります。コロン(:)を忘れずに付けて下さい。
1curl 'http://localhost:3000/write?target=CLKR&duty=:50&frequency=:3M
- GPIO
- Webインターフェイスの可能性