編集履歴一覧に戻る
uraのアイコン画像

ura が 2021年05月16日23時17分40秒 に編集

コメント無し

記事種類の変更

+

製作品

本文の変更

# 実現したいもの 2つのセンサーの検出順序によって人の動く方向を判定し、自宅に誰かが「外出」のか「帰宅」したのかを判定し、LINEに通知を送ります。 ``` センサーA(検知)→センサーB(検知)= 外出 センサーB(検知)→センサーA(検知)= 帰宅 ``` ## 設計 ![キャプションを入力できます](https://camo.elchika.com/245cd0559e1de6e6ca2d5e912a153bbc47ef1af5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656337613734362d323939362d343361352d396630332d3239373739306561396265612f65653735363063622d336665642d346632612d626561322d303363343731326133376337/) # 現時点で実現できているもの ## 状況 人が「出ていった」「入いってきた」を検出し、入ってきた場合は青色、出て行った場合は赤色にLEDを光らせるところまで。 人の出入りを検知したことをbotを介してLINEに通知するところは今後の課題です。 ## [デモ動画](https://youtu.be/WzdKcalLlmA)

-

## 配線

+

## 配線&その他準備 以下のように、 センサーA : VCC→7, OUT→6, GND→5 / センサーB : VCC→11, OUT→10, GND→9 と配線します。 ![配線](https://camo.elchika.com/877952272d8da16f2b1f2c5dfb230d55056496a6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656337613734362d323939362d343361352d396630332d3239373739306561396265612f61363764613337302d653037352d346130622d613533352d346564323965326135343539/) 人感センサーは指向性を持たせるために、キャップを外し、タピオカストローを取り付けます ![キャップを外す](https://camo.elchika.com/e015ea350f37a5762e7137329cb7196b7d267a54/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656337613734362d323939362d343361352d396630332d3239373739306561396265612f31333639653438352d386665332d346666302d386635332d646232353234626664646533/) ![タピオカストローの取り付け](https://camo.elchika.com/df7eb984f1a0bae5fc8ddc969af9c3be02b42196/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656337613734362d323939362d343361352d396630332d3239373739306561396265612f36313933356130382d346332642d346630352d623539302d376462613963313766386166/)

## コード ### server.js ``` var Obniz = require("obniz"); var delay = ms => new Promise(resolve => setTimeout(resolve, ms)) var sensor_a; // センサーA var sensor_b; // センサーB var flg_a; // センサーA検知フラグ var flg_b; // センサーB検知フラグ var status_a; // センサーAの検知状態保存変数 var status_b; // センサーBの検知状態保存変数 var led; var obniz = new Obniz("ここにはobnizIDを入れる"); obniz.onconnect = async function () { sensor_a = obniz.wired("Keyestudio_PIR", {vcc:7, signal:6, gnd:5}); sensor_b = obniz.wired("Keyestudio_PIR", {vcc:11, signal:10, gnd:9}); led = obniz.wired("FullColorLED", {r: 3, g:0, b:2, common:1, commonType:'anode_common'}); led.rgb(0, 0, 0); // Yellow status_a = 0; status_b = 0; // センサーAのコールバック sensor_a.onchange = function(val){ if (val) { console.log('(a)Moving Something!'); flg_a = true; } else { console.log('(a)Nothing moving'); } } // センサーBのコールバック sensor_b.onchange = function(val){ if (val) { console.log('(b)Moving Something!'); flg_b = true; } else { console.log('(b)Nothing moving'); } } } // センサーA,B の検出結果により、「外出」と「帰宅」の判定を行う obniz.onloop = async function() { await obniz.wait(200); if (flg_a == true) { console.log('[A] Moving Something!'); status_a = 1; if (status_b == 1) { console.log('[B→A] ただいま!'); led.rgb(0, 0, 255); // Blue status_a = 0; status_b = 0; } else { console.log('[A→...] (おでかけかな?)'); led.rgb(255, 255, 0); // Yellow } } else if (flg_b == true) { console.log('[B] Moving Something!'); status_b = 1; if (status_a == 1) { console.log('[A→B] いってらっしゃい!'); led.rgb(255, 0, 0); // Red status_a = 0; status_b = 0; } else { console.log('[B→...] (帰宅かな?)'); led.rgb(255, 255, 0); // Yellow } } flg_a = false; flg_b = false; }; ``` ### package.json ``` { "//1": "describes your app and its dependencies", "//2": "https://docs.npmjs.com/files/package.json", "//3": "updating this file will download and update your packages", "name": "hello-express", "version": "0.0.1", "description": "A simple Node app built on Express, instantly up and running.", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.17.1", "obniz": "^3.14.0", "obniz-parts-kits": "^0.16.0" }, "engines": { "node": "12.x" }, "repository": { "url": "https://glitch.com/edit/#!/hello-express" }, "license": "MIT", "keywords": [ "node", "glitch", "express" ] } ``` # 今後の予定 - 今回はLINE botとの連携までできなかったため、LEDで簡単にすませましたが、今後はLINE botとの連携部分もつくろうと思います。 - 一部動作がおかしいので、bug fix # 用意したもの ## パーツリスト - [obniz](https://obniz.com/ja/)本体 - typeCケーブル - [Ren He HC-SR501人体赤外線感応モジュール](https://www.amazon.co.jp/dp/B07DCKZS5S/ref=cm_sw_em_r_mt_dp_H8WDGJHEFB6VXZMJP5CY?_encoding=UTF8&psc=1) - [初心者向けの学習キット](https://www.amazon.co.jp/dp/B075167Y4D/ref=cm_sw_em_r_mt_dp_H76YQ7EXWQ644TQ9RZD1?_encoding=UTF8&psc=1) *実際に使ったものはRGBのLEDと、ジャンパーワイヤーのみ - タピオカストロー ## 写真 ![キャプションを入力できます](https://camo.elchika.com/832971c62d9c147dc1413a8c671472cb83fb6e4e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656337613734362d323939362d343361352d396630332d3239373739306561396265612f61663436366239382d306132362d346232332d383664342d373239333330346130643864/)