9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

重量センサ―で在席確認

Last updated at Posted at 2019-07-04

#企画したもの

  • 重量センサ―で在席確認!
    クッション内に重りセンサーを埋め込むことで遠隔地でも在席確認できる。
    おばあちゃん、ちゃんと座ってるかな?

応用すれば室内で椅子に何名が座っているか確認できると思う。

##使用したもの

  • Obniz
    千石電商 5980円(税込)
    国産
    image.png

  • ロードセル シングルポイント(ビーム型) SC133 20kg
    秋月電子通商 540円(税込)
    URL: http://akizukidenshi.com/catalog/g/gP-12034/
    aliexpressの方が安かった

image.png

  • HX711 ロードセル用ADコンバータ モジュール基板
    秋月電子通商 350円(税込)
    aliexpressの方が安かった

はんだごてとドライバーが必要になります!
持ってない人はついでに買うことをおすすめします。
10箇所はんだづけする為、ほぼ初心者の私はここが一番苦労しました。

image.png

-ブレッドボード・ジャンパーワイヤ(オス-メス) 15cm(白) (10本入)
秋月電子通商 220円(税込)
ほんとはもう少しカラーバリエーション欲しかった。

image.png

  • LTE対応USBドングル PIX-MT100 +SoracomSIM
    Wifiが無い環境でもすぐに使用できるようになる。
    image.png

-タカノクッションR(めっちゃ座りやすいです!)
タカノ株式会社 10,000円(定価)

image.png

##作り方
物を買いそろえたら、
HX711 ロードセル用ADコンバータ モジュール基板を組み立てます。
HX711は買った時点ではバラバラの為、はんだごてを使って結合していきます。
取扱説明書
http://akizukidenshi.com/download/ds/akizuki/ae-hx711.pdf

下記の配線図に従って結線していきます。
配線図
image.png

##実装方法
LINEチャネルを作成し、Server.jsを下記のように記載します。

##ソースコード

Server.js
'use strict';

const express = require('express');
const line = require('@line/bot-sdk');
const PORT = process.env.PORT || 3000;
const Obniz = require('obniz');
var obniz = new Obniz("[obnizID]");
var strValue

const config = {
    channelSecret: '[secret]',
    channelAccessToken: '[AccessToken]'
};

const app = express();

obniz.onconnect = async function () {
  
    obniz.display.clear();
    const hcsr04 = obniz.wired("hx711" , {gnd:0, dout:1, sck:2, vcc:3} );
    
    while(true) {

    //ここの値でキャリブレーションする
      hcsr04.offset = 88815;
      hcsr04.scale = 88925;
      const val = await hcsr04.getValueWait(1);
      console.log(Math.abs(roundFloat(val, 4 )*10000));
      strValue=Math.abs(roundFloat(val, 4 )*10000);
      obniz.display.clear();
      obniz.display.print(val);
    
      await obniz.wait(100);
    }
    function roundFloat( number, n ) {
      var _pow = Math.pow( 10 , n );
      return Math.round( number * _pow ) / _pow;
    }
    
    }


app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); //ブラウザ確認用(無くても問題ない)
app.post('/webhook', line.middleware(config), (req, res) => {
    console.log(req.body.events);

    //ここのif分はdeveloper consoleの"接続確認"用なので削除して問題ないです。
    if(req.body.events[0].replyToken === '00000000000000000000000000000000' && req.body.events[1].replyToken === 'ffffffffffffffffffffffffffffffff'){
        res.send('Hello LINE BOT!(POST)');
        console.log('疎通確認用');
        return; 
    }

    Promise
      .all(req.body.events.map(handleEvent))
      .then((result) => res.json(result));
});

const client = new line.Client(config);

function handleEvent(event) {
  if (event.type !== 'message' || event.message.type !== 'text') {
    return Promise.resolve(null);
  }
  var strWeight
//大体1kgで座っている判定にする
  if (strValue >= 1000) {
    strWeight='席に座ってます';
    }else{
        strWeight='席に座ってませんよー!';

    }




  return client.replyMessage(event.replyToken, {
    type: 'text',
    text: strWeight //実際に返信の言葉を入れる箇所
  });
}

app.listen(PORT);
console.log(`Server running at ${PORT}`);

##LINEBOTのQRコード
image.png
電源入れてないときは動かないです…

9
9
0

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
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?