見出し画像

ObnizにCo2センサを接続 その3

黙示録的に書いてきましたが、こんなに長くなるとは思ってませんでした。今回はようやくObnizの内容に入ります。

|Obnizについて

ObnizはWeb開発技術で外部ハードウェアの制御が出来る仕組みを入れた統合プラットフォームのようなものです。スマホではHTML5でセンサーを動かすなど、Web画面を構成しながらハードウェアの制御も行うなど出来ますが、ブラウザが動作している同じハードウェアに搭載されているものに限ります。それに対してObnizは実行環境のハードウェアを外部に持ち、それをPCやスマホのHTML内のJavaScryptから制御をする形式を取るため、クライアント側がとても軽量になるという特徴があります。

最初はよく理解が出来ずに、クラウド側からクライアントのハードウェアをコントロールしているだけのように見えたので、特別に新しいものでは無いと思っていましたが、よくよく理解をしてみると、非常に面白いアイデアで構成されているシステムだと思います。

|最初のObnizプログラム

Obnizのプログラムは「開発者コンソール」から行います。開発者コンソールはObnizのホームページにアクセスしたら右上です。

画像1

Obniz IDを入力するポップアップに手持ちのObnizの画面に映っているIDを入力すると開発者コンソールに入れます。入った後は左側にいくつかメニューがあるので、その中のHTMLプログラムを選ぶとHTML + JavaScriptの入力画面が出てきます。

画像2

ここでプログラムを入力する画面が開きますが、Arduinoなどで組み込みのプログラムを組んでいる感覚でいるとHTMLのタグからスタートしていて、どこにプログラムを?と面食らいます。
冷静に考えるとブラウザのJavaScriptからObnizを制御するので、ブラウザがデコード出来る形で表現するのが当然といえば当然なのですが、最初はあまりなれない形式に戸惑います。

基本構成としては、ブラウザの画面を構成するHTML部 (jQueryやObniz APIのCDNを含む) と、Obnizを制御するJavaScript部になります。JavaScriptの中ではObniz objectからObnizを制御するコマンドを発行出来るので、例えばHTML部で作ったブラウザ上のボタンを押すと、JavaScript内のObnizの端子をHighにするコマンドが動いて、LEDが点灯するという事が出来ます。

画像3

昨今のインターネット時代においてはとても合理的な考え方で作られているシステムだと思います。欠点としては一つの命令毎に通信路を経由するのでリアルタイムな処理が出来ないという事になりますが、それは使い方次第かと思います。
上記のコードを実行して、ひとまずLチカが実行出来たので、もう少し複雑なI2Cの処理の調査に入ります。

|ObnizでI2C制御

目的とするCo2センサのSCD30がGroveコネクタ経由のI2C制御であるため、まずはI2Cで制御をする何かしらのセンサーのコードで動きを確認したいと思います。手元にSHT31という温湿度センサがあったのでまずはそのコードをベースに検討を開始します。

画像5

手元にあったのがGroveコネクタのSHT31でしたので、接続をするにはGroveをバラ線にする必要があるので、その線を調達してきました。Obniz側にはジョイントする剣山を取り付け、SHT31と接続をします。

画像5

ObnizのWebページはよく出来ていて、対応のセンサーはそのパーツライブラリのサンプルコードから即実行出来るのが便利です。SHT31もパーツライブラリに掲載されていて、そこから実行が可能となります。

画像6

Obniz IDを入力して接続に合わせてコードを接続、その後「実行」ボタンを押すことでObniz側が実行されます。(もちろんObniz側は電源を入れてwifi接続していることが前提です。)
実行がされると、Obniz側にはどのピンアサインになっているかの表示がされます。(この辺がとても親切です。)

画像7

実際の信号を見ると、何かしらのコマンドに対する応答が返ってきています。今回はObnizのI2Cの動きを見るために行っているので、コマンドの深追いはせずに、動作だけを見て進めていきます。

画像8

|パーツライブラリのコードの確認

実行コードは単純なのですが、今回はパーツライブラリにないデバイスを動かす必要があるので、パーツライブラリの中身がどの様になっているかを理解する必要があります。このため、今回のSHT31のプログラムの中身を少し深堀りします。と言っても同じページからリンクが貼られているのでそこからプログラムの中身を確認することが出来ます。
同じページの上の方に有るJavaScriptからのリンクでGitHubに飛べます。

画像9

GitHub上のSHT31のコードの構成を確認します。
まず前段のところのコンストラクタに接続するピンを入力する引数や実際のI2Cに書き込むコマンドなどが定義されています。

画像10

後半部は、実際のAPI関数群として、Wiredの処理やデータの取得関数などが記載されています。

画像11

ひとまずこのコードを参考にしてSCD30向けのコードに変更していくことでうまく行きそうな気がします。

|自分のパーツライブラリの作成

上記で見てきたのは、Obniz側で準備しているパーツライブラリのため、そこを直接書き換えるようなことは出来ないため、今回のSCD30向けは自分のパーツライブラリとして作成する必要があります。
この仕組みもObniz側で準備をしてくれており、Obniz Docsパーツを作り公開するにて書かれています。

画像12

自分だけのパーツライブラリとして使用する場合は、自分のアカウントのリポジトリ(保管場所)に保存してそのURLを接続する方法と、GitHubで公開をしてそのURLで接続する方法の2種類があります。今回はリポジトリにパーツのプログラムを保存してそこから使用する方法で進めて行きます。
リポジトリは開発者コンソールの左側からアクセスすることが出来ます。利用するにはObnizのアカウント作成が必要で、1デバイス x 5MBまで利用可能です。

画像13

次回は、SCD30のパーツの作成と実行を行っていきます。
その4につづく。

この記事が気に入ったらサポートをしてみませんか?