Evaluated myDevices Cayenne IoT with ESP 8266 and Sensirion SHT31.
先日、あるお客様向けの Arduino 講座で Blynk を取り上げました。Arduino で集めたセンサデータをスマホに簡単に送れて便利だと思ったのですが、お客様いわく、「やっぱりクラウドとかに送って、パソコンでデータを処理したいよね」。
やっぱりそうですよね。仕事で使うとなると、当然の御要望です。最近は Amazon AWS IoT や Microsoft Azure のような IoT プラットフォームが多くリリースされていますが、専門のソフトウェア技術者でないとハードルが高いのも事実です。一方で、そのようなニーズを捉えて、一般のアプリケーション設計者でも使いやすいサービスもでてきています。有名なところでは Node-RED、また先日はある技術者様に Beebotte を教えて頂きましたが、どうもやはり難しそうです。Blynk くらい簡単に Arduino マイコンを IoT クラウドに繋げないものでしょうか。
そんな中、今日は myDevices 社の Cayenne(カイエンと読むそうです。例の唐辛子のことでしょうか?)という IoT プラットフォームを調べてみました。価格(pricing)を調べてみたのですが「セールス部門に問い合わせてくれ」と書いてありますが、ちょっとした利用では「まだ」無償で利用できそうです。
今回は、有名な Wi-Fi マイコン ESP8266 を搭載した Speeed Studio の Wio Node と、これまた有名な温湿度センサー Sensirion SHT31 を使って、温湿度データをクラウドに上げる実験をしてみました。チュートリアルとしては、以下が参考になります。
SHT31 のライブラリとしては、Adafruit 社のこれが使えますが、2点ほど注意が必要です。
第一に、Wio Node を使うときには、Arduino IDE(Sketch)のボード選択で Wio Link を使うのが良いでしょう。ただし、Wio Node にはユーザー用の LED が付いていないので、たとえば digitalWrite(LED_BUILTIN, HIGH) などとしても、LED は点灯しません。
第二に、これは Wio Link、Wio Node 共通の事項ですが、デフォルトではセンサ接続用のコネクタピンに 3.3V が出力されていないので、これをオンにする必要があります。具体的には、setup() 中などで次のように書いてやります。
pinMode(PIN_GROVE_POWER, OUTPUT); digitalWrite(PIN_GROVE_POWER, HIGH);
追記(2022年7月20日)
上記 PIN_GROVE_POWER の定義を使用するには、Arduino IDE の Tools -> Board で、ESP8266 -> Seeed Wio Link を選択する必要があります。そうしないと、コンパイル時に未定義エラーになります。
なお、Wio Node ではユーザーが簡単に UART を繋ぐ方法が提供されていないようで、Arduino IDE からプログラムを書き込むには少し工夫が必要です。私も以前少し触れたことがありますが、Google で「wio node arduino uart」等と検索すると参考になる情報があるでしょう。安価(?)かつ現実的なのは、Grove – 4 pin Female Jumper to Grove 4 pin Conversion Cable (5 PCs per PAck) というワイヤセットを買って、Raspberry Pi 用の FTDI USB-UART ブリッジを利用することではないかと思います。
少しはまりましたが、無事に Cayenne のダッシュボードに温度と湿度を表示することができました。
ただし、ダッシュボードをいろいろいじっていたら、グラフが表示されなくなることもありました(泣)。全般に、ダッシュボードのコンフィグレーション設定が不安定です。サポートフォーラムを覗いていたら、いくつかバグがレポートされているようです。もう少し安定して使えるようになればいいな、と思いました。
おしまい。