LoginSignup
1

More than 3 years have passed since last update.

posted at

updated at

Organization

簡単な臭いセンサーを作るまでの道のり

この記事はobniz Advent Calendar 2019 12日目の記事です。
https://qiita.com/advent-calendar/2019/obniz

はじめに

センサを使って臭いを検知するサービス。
タバコやアルコール、生活の中の臭いを簡単に検知して街中をグラフィック化してみたいと思いました。

まず手始めに 「臭いを検知してみる」ということで、秋葉原やAmazonで購入できる
臭いセンサTGS2450を使ってみましたが、注意書きに稼働時間が長いと壊れますとか、
ブレッドボード使って抵抗入れないといけないとか。初心者にはなかなか敷居が高いです。

AliExpressで仕入れた(届くのに1か月以上かかった)フィガロ社のTGS2602(ADコンバータ付き)であればM5Stackやobnizで簡単に接続して使えます。

接続例

取りあえず、臭いを検知したら圧電ブザーがなる仕様です。
臭い検知状態になるまでに約60秒ほど予熱します。
予熱が完了するとドレミファソラシドが流れます。
image.png

臭いセンサ側

IO0:GND
IO1:DOut
IO2:AOut
IO3:VCC

圧電ブザー側

IO10:signal:10
IO11:gnd:11

ソース

Server.js
'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
TGS2602

次回予告

次は臭いを検知したら喋らせる仕様を追加していきます。
google-home-notifierかなぁ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1