させたい!という願望含む、現状未完成の投稿で恐縮です。
絶賛迷走中ですので、お力添えいただければ幸いです!
プログラミングを習い始めて半月が経ち、obnizを使ってIoT入門しました。
天敵のプリン体を避けビールを絶っていますが、時には飲みたくなり、
そんな特別な時には**最高の状態のビールを飲みたい!**私利私欲のためのIoT製作です。
ビールの飲み頃温度は夏なら4~6℃、冬なら6~8℃とされています(喉越しはさておいて)。
冷蔵庫で長く缶ビールを冷やしておくと冷えすぎて、本来のビールの美味しさが半減されてしまいます。
出典:サントリー
そこで、冷蔵庫から出して温度を測りながら、飲み頃と言われている4℃以上になったら
飲み頃サインをLEDが光って教えてくれるものを目指して作っています。
現状

・温度センサ(LM60BIZ)はobniz0~2番へ繋ぐ
・LEDはobniz10~11番へ繋ぐ
・其々ブレッドボードをジャンパワイヤで繋ぐ
・さらにジャンパワイヤを使って逆サイドに通電させる
・温度センサと缶ビールをアルミホイルで巻き、温度を測る
・測定開始時は4℃より下で、LEDは温度が4℃より上回ったら点灯する
がしかし、現状は出力される温度が常に高く、求めるものとは程遠い状態です。
環境
Visual Studio Code v1.60.2
Node.js v16.10.0
obniz Board 1Y
以下、これまで行ってきた流れです
サンプルコード
const Obniz = require('obniz');
const obniz = new Obniz('0000-0000'); // Obniz_IDに自分のIDを入れます
obniz.onconnect = async function () {
var led = obniz.wired("LED", {anode:10, cathode:11});
led.output(true);
const tempsens = obniz.wired('LM60', { gnd: 0, output: 1, vcc: 2 });
// setIntervalで間隔を作る
setInterval(async function () {
// 同期で取得
const temp = await tempsens.getWait();
// 温度をコンソールに表示
console.log(temp);
// displayに反映
obniz.display.clear();
obniz.display.print(temp + 'C'); // 英語が出力できる
}, 1000); // 1000ミリ秒 = 1秒
for (let i = 0; i < 100; i++) {
tempsens.onchange = (function(temp){
console.log(temp);
if (temp < 24) {
led.on();
} else {
led.off();
}
});
await obniz.wait(100);
}
}
テストでは1秒毎に温度をディスプレイに表示させるようにしました。
途中で扇風機の風を当て、24℃を下回ったらLEDが点灯しているので、
コードに間違いはなさそうです。
その後、「24℃を下回ったら」を「4℃を上回ったら」に変更し、
サンプルコード
const Obniz = require('obniz');
const obniz = new Obniz('0000-0000'); // Obniz_IDに自分のIDを入れます
obniz.onconnect = async function () {
var led = obniz.wired("LED", {anode:10, cathode:11});
led.output(true);
const tempsens = obniz.wired('LM60', { gnd: 0, output: 1, vcc: 2 });
// setIntervalで間隔を作る
setInterval(async function () {
// 同期で取得
const temp = await tempsens.getWait();
// 温度をコンソールに表示
console.log(temp);
// displayに反映
obniz.display.clear();
obniz.display.print(temp + 'C'); // 英語が出力できる
}, 1000); // 1000ミリ秒 = 1秒
for (let i = 0; i < 100; i++) {
tempsens.onchange = (function(temp){
console.log(temp);
if (temp > 4) {
led.on();
} else {
led.off();
}
});
await obniz.wait(100);
}
}





温度センサの代わりになるものは、、、
一応正常に動いた結果と思いますが、温度センサで缶ビールの温度を測るには限界がある結論に達しました。理由としては、
・缶は熱伝導が良いとはいえ、外気に左右される
・ビールに直に触れさせられない
といったところを解決しなければ、、、
改善案
缶ビールに直に触れることなく測れるものがあれば解決すると思い、秋葉原に行ってみました。
(余談ですが、電気街口に初めていきましたが、種類がありすぎて、本当に奥深い世界と実感しました)
探り探り探していると、非接触温度センサ(サーモパイル)とやらに出会いました。
どうやって使うかも調べずに商品名のみを信じて買ってみました!!
obniz Parts Libraryにあるだろうと信じて買いましたが、
なかったため詰みの状態です(次からはちゃんと調べてから買います)。
・非接触温度センサ(サーモパイル)はこうすれば使えるよ!
・こんなセンサ使えばいいんじゃない?
等々、アドバイスありましたら是非お願いします。。。
追記(2021/10/19)
Qiita QAにて質問投稿したところ、アドバイスいただくことが出来ました。
今ぶち当たっている壁を乗り越えるにあたり、Thermal Camera Sensor - AMG8833をご紹介していただきました。
赤外線アレイセンサAMG8833を使用しています。
測定範囲は0~80℃です。
8x8画素で温度分布を測定することができます。
出典:obniz Parts Library AMG8833
obniz Parts Libraryにありますので、使い勝手良さそうです!(私にもできそう!)
また、Twitterでは、
直接のセンサーに関する提案ではないですが、水温計で水温を測りながら、4度になるときのセンサー温度を実験して算出してみるのはいかがでしょうか。水温が1度、2度、3度、4度、・・・となるときにセンサーが21度、22度、23度、24度、・・・となれば24度以上でLEDを点灯等。
といったコメントもいただき、**アイデア次第でやりようはいくらでもあるんだ!**と再認識しました。
ベストな状態のビールを追い求めて、挑戦し続けたいと思います。
長々と失礼しました!&読んでいただき、ありがとうございました!