ObnizにCo2センサを接続 その3
黙示録的に書いてきましたが、こんなに長くなるとは思ってませんでした。今回はようやくObnizの内容に入ります。
|Obnizについて
ObnizはWeb開発技術で外部ハードウェアの制御が出来る仕組みを入れた統合プラットフォームのようなものです。スマホではHTML5でセンサーを動かすなど、Web画面を構成しながらハードウェアの制御も行うなど出来ますが、ブラウザが動作している同じハードウェアに搭載されているものに限ります。それに対してObnizは実行環境のハードウェアを外部に持ち、それをPCやスマホのHTML内のJavaScryptから制御をする形式を取るため、クライアント側がとても軽量になるという特徴があります。
最初はよく理解が出来ずに、クラウド側からクライアントのハードウェアをコントロールしているだけのように見えたので、特別に新しいものでは無いと思っていましたが、よくよく理解をしてみると、非常に面白いアイデアで構成されているシステムだと思います。
|最初のObnizプログラム
Obnizのプログラムは「開発者コンソール」から行います。開発者コンソールはObnizのホームページにアクセスしたら右上です。
Obniz IDを入力するポップアップに手持ちのObnizの画面に映っているIDを入力すると開発者コンソールに入れます。入った後は左側にいくつかメニューがあるので、その中のHTMLプログラムを選ぶとHTML + JavaScriptの入力画面が出てきます。
ここでプログラムを入力する画面が開きますが、Arduinoなどで組み込みのプログラムを組んでいる感覚でいるとHTMLのタグからスタートしていて、どこにプログラムを?と面食らいます。
冷静に考えるとブラウザのJavaScriptからObnizを制御するので、ブラウザがデコード出来る形で表現するのが当然といえば当然なのですが、最初はあまりなれない形式に戸惑います。
基本構成としては、ブラウザの画面を構成するHTML部 (jQueryやObniz APIのCDNを含む) と、Obnizを制御するJavaScript部になります。JavaScriptの中ではObniz objectからObnizを制御するコマンドを発行出来るので、例えばHTML部で作ったブラウザ上のボタンを押すと、JavaScript内のObnizの端子をHighにするコマンドが動いて、LEDが点灯するという事が出来ます。
昨今のインターネット時代においてはとても合理的な考え方で作られているシステムだと思います。欠点としては一つの命令毎に通信路を経由するのでリアルタイムな処理が出来ないという事になりますが、それは使い方次第かと思います。
上記のコードを実行して、ひとまずLチカが実行出来たので、もう少し複雑なI2Cの処理の調査に入ります。
|ObnizでI2C制御
目的とするCo2センサのSCD30がGroveコネクタ経由のI2C制御であるため、まずはI2Cで制御をする何かしらのセンサーのコードで動きを確認したいと思います。手元にSHT31という温湿度センサがあったのでまずはそのコードをベースに検討を開始します。
手元にあったのがGroveコネクタのSHT31でしたので、接続をするにはGroveをバラ線にする必要があるので、その線を調達してきました。Obniz側にはジョイントする剣山を取り付け、SHT31と接続をします。
ObnizのWebページはよく出来ていて、対応のセンサーはそのパーツライブラリのサンプルコードから即実行出来るのが便利です。SHT31もパーツライブラリに掲載されていて、そこから実行が可能となります。
Obniz IDを入力して接続に合わせてコードを接続、その後「実行」ボタンを押すことでObniz側が実行されます。(もちろんObniz側は電源を入れてwifi接続していることが前提です。)
実行がされると、Obniz側にはどのピンアサインになっているかの表示がされます。(この辺がとても親切です。)
実際の信号を見ると、何かしらのコマンドに対する応答が返ってきています。今回はObnizのI2Cの動きを見るために行っているので、コマンドの深追いはせずに、動作だけを見て進めていきます。
|パーツライブラリのコードの確認
実行コードは単純なのですが、今回はパーツライブラリにないデバイスを動かす必要があるので、パーツライブラリの中身がどの様になっているかを理解する必要があります。このため、今回のSHT31のプログラムの中身を少し深堀りします。と言っても同じページからリンクが貼られているのでそこからプログラムの中身を確認することが出来ます。
同じページの上の方に有るJavaScriptからのリンクでGitHubに飛べます。
GitHub上のSHT31のコードの構成を確認します。
まず前段のところのコンストラクタに接続するピンを入力する引数や実際のI2Cに書き込むコマンドなどが定義されています。
後半部は、実際のAPI関数群として、Wiredの処理やデータの取得関数などが記載されています。
ひとまずこのコードを参考にしてSCD30向けのコードに変更していくことでうまく行きそうな気がします。
|自分のパーツライブラリの作成
上記で見てきたのは、Obniz側で準備しているパーツライブラリのため、そこを直接書き換えるようなことは出来ないため、今回のSCD30向けは自分のパーツライブラリとして作成する必要があります。
この仕組みもObniz側で準備をしてくれており、Obniz Docsのパーツを作り公開するにて書かれています。
自分だけのパーツライブラリとして使用する場合は、自分のアカウントのリポジトリ(保管場所)に保存してそのURLを接続する方法と、GitHubで公開をしてそのURLで接続する方法の2種類があります。今回はリポジトリにパーツのプログラムを保存してそこから使用する方法で進めて行きます。
リポジトリは開発者コンソールの左側からアクセスすることが出来ます。利用するにはObnizのアカウント作成が必要で、1デバイス x 5MBまで利用可能です。
次回は、SCD30のパーツの作成と実行を行っていきます。
その4につづく。
この記事が気に入ったらサポートをしてみませんか?