• モノづくりとアイデアで暮らしを豊かに。『STAGEA』

    STAGEA H10の測定値をクラウド連携させてグラフ化する・・・とても難しそうな印象を感じると思います。
    AWSやAzureを使いこなせる辣腕のプログラマーでないとできないと考えているなら、それは間違いです。

    IoTブームが始まったここ数年で、このような悩みを解決するサービスが様々な会社から登場しました。
    IoTは、Internet of things(モノのインターネット)の略で、身の周りの様々なものがインターネット接続されることで生み出される新たな商機や生活スタイルの変化、その延長線上にある未来を全て一括りにした概念を言います。
    「モノのインターネット」が生み出す未来図を描く企画・クリエイティブ市場と、「モノ」の役割を担うハードウェア市場、クラウド関連のソフトウェア市場で構成されており、STAGEA H10はハードウェア市場に属する製品となります。
    この3つの括りのうちソフトウェア市場に属するIoTクラウドの1つであるambientを紹介します。
    ※この例では、企画・クリエイティブ市場がありませんが、これを担うのはあなたです。
    ambientは、会員登録時に発行された識別IDをIoT機器のプログラムコードに埋め込むだけで使用でき、送られたデータは自動的にグラフ化して表示してくれます。
    いかにも難しそうなグラフ描画処理の作り込みを気にすることなく、手軽に使うことができます。

    このように表示されます。

    まずは会員登録から。
    Ambientセットアップ

    検索エンジンで【Ambient】と検索します。

    2020年6月時点では、上記のような検索結果が表示されます。
    意図した内容に最も近いリンクをクリックし、Ambientにアクセスします。

    【ユーザー登録】をクリックします。

    登録するメールアドレスとパスワードを入力して、【ユーザー登録(無料)】をクリックします。

    確認メールが届きますので、リンクをクリックします。

    メールソフトによっては、複数行にわたるリンクが一続きのアドレスとして扱われないものがあります。その場合、複数の行にわかれたURLをメモ帳(Macの場合はテキストエディタ)などに貼り付けながら1行にまとめてブラウザのURL欄に貼り付けてアクセスしてください。

    これで本登録完了です。
    次に、ログインボタンをクリックして管理画面にアクセスします。

    IDとパスワードを正しく入力し、【ログイン】ボタンを押します。

    チャネル(=IoT機器)一覧が表示されます。
    まだ何も登録されていないため、中身はありません。
    H10のデータを登録するために必要なチャネルの作成を行います。
    チャネルの作成を行うと、H10のプログラムに埋め込んで使用する識別IDが発行されます。

    ※以降、説明文中において「IoT機器一覧」を「ダッシュボード」と記載します。
    また、登録されている1要素の呼称については、Ambientサイトの正式名称である「チャネル名」に、「識別ID」は「チャネルID」に統一します。

    【チャネルを作る】を押します。

    押すと同時に、新規チャネルが作られます。
    1つのチャネルに対して、チャネル名、チャネルID、リードキー、ライトキーの4項目が発行されます。

    チャネル名Ambientには、複数のIoT機器を登録することができます。
    機器ごとにチャネルを分けて管理することができますが、その際にわかりやすくするための名前をつけることができます。
    例えば複数の建物を所有している場合、自宅・母屋・納屋・物置・別荘などのように名前を付けて管理したり、寮やホテルなどの場合は部屋番号を付けて管理します。
    初期状態では、チャネルIDがチャネル名になっていますが、自由に変更することができます。
    チャネルIDAmbientが管理する識別用のIDです。
    リードキー登録データを外部から読み出す際に使用するパスワードです。
    ライトキーAmbientに書き込む際に使用するパスワードです。

    これで、Ambientの準備は完了です。
    発行されたキーは、H10のプログラムの中に書き込んで使用します。

    自信がなくても、とりあえず真似してみよう!
    H10の準備

    ここでは、H10にプログラムを書き込む作業を行います。
    プログラムの書き込みにはarduinoを使用します。
    arduinoのインストール及び設定については、こちらのページをご覧ください。
    ※ESP-IDFやmbedをご使用の方は中級〜上級者ですので、書き込みソフトのインストール及び設定についての説明は省略します。

    H10にプログラムを転送する時は、副MCUを常時通電モードで動作させなければならないため、DCジャックに電源を供給する必要があります。
    バックアップ電源用の乾電池は無くても動作しますので、ここでは外しておきます。
    プログラムの準備

    (1)まずは、こちらからプログラムをダウンロードしてください。
    ※このリンク先のコンテンツは、最新のNorton360でウイルスチェックを実施しています。
    ※こちらプログラムは動作済みのものとなります。
     WiFiのSSIDとパスワード、アップロード先のURLのみマスクしています。

    必ずこちらのダウンロードリンクからダウンロードしたプログラムをご使用ください。
    本ページ記載のプログラムを範囲選択してコピーをすると、見た目は全く同じであってもブラウザ特有の処理で、一部の記号が似ている他の文字に変換されて表示されることがあるため、プログラムとして認識されず、H10への転送に失敗します。

    (2)ダウンロードしたプログラムをメモ帳やテキストエディタで開き、全てコピーします。

    (3)Arduinoを開きます。

    ※Arduinoを初めて開いた時は、このような初期プログラムが編集画面に書かれていますが、こちらは消して構いません。
    以降に行う操作でエラーの原因になるため、見えない空白(スペース)も含めて完全に削除してください。

    (4)(2)でコピーしたプログラムをそのまま貼り付けます。

    とても難解な文字がびっしり詰まっていて戸惑うかもしれません。
    今は気にしないでください。

    プログラムの上の方に、

    unsigned int channelId = 1***2; // AmbientのチャネルID
    const char* writeKey = "f**************f"; // ライトキー
    const char ssid[] = "INETGATE4";
    const char passwd[] = "********";

    と書かれています。
    この部分を、以下のように編集します。

    unsigned int channelIdAmbientの会員登録を行った際に取得したチャネルIDを入力します。
    const char* writeKeyAmbientの会員登録を行った際に発行されたライトキーを入力します。
    const char ssid[]お使いのWiFiアクセスポイントのSSIDを入力します。
    const char passwd[]お使いのWiFiアクセスポイントのパスワードを入力します。

    ※元から入っている数字やアルファベット以外の文字や記号(特に各入力要素の前後にある ”ダブルクォーテーション記号” は間違って消しやすいため、気をつけてください。)

    これでプログラムの準備は完了です。
    MCUを駆動させるために必要な最低限の処理や、Ambientへのアップロード処理などは既にできているので、この4行を編集するだけで完成です。
    それでは、早速書き込んでみましょう。

    H10への書き込み

    (1)H10を一度もパソコンに接続したことがない場合は、こちらのページを参考にセットアップをします。

    (2)ジャンパピンを書き込みモードに変更します。

    通常、副MCUは主MCUと接続されています。
    この操作を行うことで、副MCUの接続先をUSBに変更して、プログラムの書き込みができる状態にします。
    この操作を忘れると、プログラムの書き込みができないのでご注意ください。

    (3)H10をUSBケーブルでパソコンにつなぎます。

    ※必要に応じてArduinoの設定の中にあるCOMポートの設定を行います。
    COMポートの番号を間違えると転送エラーになります。
    H10を買い替えたり、パソコンを買い替えたり初期化したりすると番号が変わることが多いため注意が必要です。

    パソコンから認識されない場合、以下の内容をご確認ください。
    ・ジャンパピンを書き込みモードにセットします。
     →この操作をすることで、副MCUの通信先を主MCUからUSBコントローラ(パソコン)に切り替えて、パソコンから送られてくるプログラムを受信できる状態にします。
    ・DCジャックにACアダプタを接続します。
     →乾電池駆動(停電モードでの動作)では、2分に一度、20秒間しか副MCUの電源が入らないため、プログラムを書き込むことができません。

    (4)Arduinoの【マイコンボードに書き込む】ボタンをクリックします。

    H10は、DCジャックから電源供給を開始して5秒後に副MCUに通電を開始します。
    通電が開始されたら、主MCUから30秒以内に正しいデータフォーマットで返信が行われないと、フリーズしたと判断して副MCUを自動的に再起動します。
    副MCUが再起動している間は、プログラムの転送はできません。
    従って、DCジャックを挿し直したら、5~25秒の間にArduinoの【マイコンボードに書き込む】ボタンをクリックしてプログラムを転送します。

    下半分の黒い部分に次のようなメッセージが表示されたら書き込み完了です。

    もしここで、上記のような画面ではなくエラーメッセージが表示される場合、以下の点を確認してください。

    ・サンプルのコードをコピーアンドペーストする時、
      – 間違えて余計な文字などを書き込んでいませんか?
      – ショートカットキー([Ctrl] or [command] + V)を連打して二重貼り付けしていませんか?
      – ショートカットキーを押し損ねてソースコードの末尾にVなどが入っていませんか?
      – Arduinoインストール直後に最初から入っているプログラム雛形の続きに貼り付けていませんか?
      – チャンネルキーやライトキーを書き換える際、誤ってダブルクォーテーション記号を消していませんか?
      – プログラムの中の空白部分(スペース)を誤って消した時、全角スペースを入れていませんか?
    ・ジャンパーピンのポジションを通常モードからプログラム書き込みモードに変更しましたか?
    ・DCジャックにACアダプタ等を接続していますか?
     →バックアップ乾電池での動作では書き込みできません。
    ・DCジャックにACアダプタ等を差し込んでから5~25秒の間にプログラム書き込み操作をしていますか?

    10分程度考えて原因にたどり着かなかった場合、ダウンロードしたプログラムコードを使って貼り付けるところからやり直した方が早いです。
    その際、Arduinoの編集画面に書かれているプログラムコードはスペース記号1つ残らず完全に削除してから貼り付けます。
    1行編集するごとに【マイコンボードに書き込む】を押しながら進めることで、エラーを特定しやすくする方法もあります。

    Ambientでの動作確認

    正しくプログラムが書き込めたら、動作確認をします。
    プログラム書き込み直後のH10は、基板上のジャンパピンがプログラム書き込みモードの位置になっているはずですので、ノーマルの位置に戻します。
    H10からUSBコードを抜いて、DCジャックに接続されているACアダプタのコードを挿しなおします。

    (1)Ambientにログインします。

    (2)ログインすると、チャネル一覧が表示されます。この中から、先ほど作成したチャネルをクリックします。
    この図は、既に4つのチャネルを作成しています。
    このように、チャネル名はお好みの名前を作ることも、複数作成することもできます。

    (3)チャネル名をクリックすると、各々のパラメータのグラフが表示されます。
    グラフは、H10から初めてデータが送られた時に自動的に作成されます。
    データの送信は1分ごとなので、もし画面に何も表示されていない時は1分以上待ってから再読み込みをしてみてください。

    使い始めの頃はデータ数が少ないため、よくわからないと思いますが、数時間から数日経過すると時系列で各々の傾向が追いやすくなります。

    Ambientは、チャネル名や各データの要素名を自由に付けることができる他、データの表示範囲や期間などを自由に編集できますので、使いやすいように編集してみてください。
    また、設定を有効にすることで公開することも可能です。