前置き
オムロンが個人向けにオープンプラットフォームでの利用をサポートしたセンサを販売を開始しています。その中の非接触温度センサを手に入れたので早速遊んでみました。
センサを販売しているスイッチサイエンスに作例が載っていたのでこちらを参考にさせてもらいました。作例ではarduinoを使っていますが、今回は最近流行りのobnizで動かしてみます。
使ったもの
- オムロン MEMS非接触温度センサ D6T-44L-06
- オムロン D6T変換基板 TECHNOALTA-D6T-44L-GC
- D6TをGroveコネクタで接続できるようにする基板です
- Grove→2.54mmピッチ変換基板
- obnizはGroveコネクタが無いので[こちらのブログ]
(https://www.1ft-seabass.jp/memo/2019/01/15/grobe-and-obniz-convert-pitch-board/)を参考に自作しました
- obnizはGroveコネクタが無いので[こちらのブログ]
- obniz
接続方法
以下のような順番で接続しています。
温度センサ - Grove変換基板 - Grove→2.54mmピッチ変換基板 - obniz
センサとobnizのピン配置は以下の通りです。
obniz側 | センサ側 | |
---|---|---|
0 | SCL | I2C(5V) クロック |
1 | SDA | I2C(5V) データ |
2 | VCC | VCC 電源端子(5V ±10%) |
3 | GND | GND 電源端子 |
I2Cでデータ取得
これで物理的には接続ができたので、次はデータの取得です。
オムロンが用意しているユーザーズマニュアルが参考になります。
このセンサでは温度データは以下のように4x4のマトリックスで16個が取得できます。
([オムロンのマニュアルから引用](https://omronfs.omron.com/ja_JP/ecb/products/pdf/CDSC-019.pdf))obnizの実装
温度データを1秒ごとに取得し4x4に並べてobnizのディスプレイに表示するようにしました。コードは以下の通りです。
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
<script src="https://unpkg.com/obniz@2.0.0/obniz.js" crossorigin="anonymous"></script>
</head>
<body>
<script>
var obniz = new Obniz("OBNIZ-ID");
obniz.onconnect = async function () {
var i2c = obniz.getFreeI2C();
obniz.io2.output(true);
obniz.io3.output(false);
i2c.start({mode:"master", sda:1, scl:0, clock:100000});
obniz.repeat(async function(){
await obniz.wait(100);
i2c.write(0x0A, [0x4C]);
await obniz.wait(160);
var data = await i2c.readWait(0x0A, 35);
var t = [];
for(var i=2; i<34; i++){
t[i] = ((data[i]+(data[i+1]<<8))*0.1).toFixed(1);
console.log(t[i]);
i++
}
obniz.display.clear();
obniz.display.font(null,14);
obniz.display.print(t[2] +" "+t[4] +" "+t[6] +" "+t[8]);
obniz.display.print(t[10]+" "+t[12]+" "+t[14]+" "+t[16]);
obniz.display.print(t[18]+" "+t[20]+" "+t[22]+" "+t[24]);
obniz.display.print(t[26]+" "+t[28]+" "+t[30]+" "+t[32]);
}, 1000)
}
</script>
</body>
</html>
テスト
では実際に温度が取れているか試してみましょう。
左に温かい缶コーヒー、右に冷たい缶コーヒーを置いて計測してみました。
obnizのディスプレイに表示された温度が左端中央が43.2度、右端中央が9.2度を示していて、左右の温度差を計測できている事がわかります。
Youtubeにもテストした際の動画をアップロードしています。
今後の活用
データを取得するのはとても簡単にできました。次は
- 温度が数字だと直感的に分かりづらいのでビジュアル化
- 通常の温度センサと異なる「非接触」「4x4でデータ取得」という特徴を活用
- 温度をトリガーに何かのアクションを起こす
という観点で何か作ってみようと思います。(続く)