この記事はobniz Advent Calendar 2019 12日目の記事です。
https://qiita.com/advent-calendar/2019/obniz
##はじめに
センサを使って臭いを検知するサービス。
タバコやアルコール、生活の中の臭いを簡単に検知して街中をグラフィック化してみたいと思いました。
まず手始めに 「臭いを検知してみる」ということで、秋葉原やAmazonで購入できる
臭いセンサTGS2450を使ってみましたが、注意書きに稼働時間が長いと壊れますとか、
ブレッドボード使って抵抗入れないといけないとか。初心者にはなかなか敷居が高いです。
AliExpressで仕入れた(届くのに1か月以上かかった)フィガロ社のTGS2602(ADコンバータ付き)であればM5Stackやobnizで簡単に接続して使えます。
##接続例
取りあえず、臭いを検知したら圧電ブザーがなる仕様です。
臭い検知状態になるまでに約60秒ほど予熱します。
予熱が完了するとドレミファソラシドが流れます。
###臭いセンサ側
IO0:GND
IO1:DOut
IO2:AOut
IO3:VCC
###圧電ブザー側
IO10:signal:10
IO11:gnd:11
##ソース
'use strict';
const express = require('express');
const Obniz = require('obniz');
const PORT = process.env.PORT || 3000;
var obniz = new Obniz("obnizID");
const app = express();
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print("YONETSU...");
//GROVEのMQ3ガスセンサのライブラリを使用する
var mq3 = obniz.wired("MQ3", {vcc:3, gnd:0, do:1, ao:2});
//圧電スピーカーの接続
var speaker = obniz.wired("Speaker", {signal:10, gnd:11});
//予熱が必要になる環境によるが60秒~120秒必要
await mq3.heatWait(60);
obniz.display.clear();
//臭いを取れる準備が出来たら画面でお知らせ
obniz.display.print("OK-!!");
//臭いを取れる準備が出来たら音で
speaker.play(262); //ど
obniz.wait(500);
speaker.play(294); //れ
obniz.wait(500);
speaker.play(330); //み
obniz.wait(500);
speaker.play(349); //ふぁ
obniz.wait(500);
speaker.play(392); //そ
obniz.wait(500);
speaker.play(440); //ら
obniz.wait(500);
speaker.play(494); //し
obniz.wait(500);
speaker.play(523); //ど
obniz.wait(500);
speaker.stop();
while(true) {
mq3.onchangedigital = function(value) {
if(value==true){
//臭いを検知後、再度図れる状態になった処理
obniz.display.clear();
obniz.display.print("OK--!!");
}else{
//臭いを検知した時の処理
obniz.display.clear();
obniz.display.print("GYA---!!");
speaker.play(9000);
obniz.wait(1000);
speaker.stop();
}
}
await obniz.wait(100);
}
}
app.listen(PORT);
console.log(`Server running at ${PORT}`);
##動画
https://youtu.be/hrhfyrGjdQg
##次回予告
次は臭いを検知したら喋らせる仕様を追加していきます。
google-home-notifierかなぁ