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

naranavin が 2021年05月14日23時03分45秒 に編集

途中

本文の変更

[デモ動画](https://youtu.be/kq6Ebq2p1ZI)

-

さ耳型Obniz食いしばり防止器 う さ 耳 型 O bniz 食 い し ば り 防 止 器 肩 こ り を う さ 耳 で 克 服 せ よ

+

さ 耳 型 O bniz 食 い し ば り 防 止 器肩 こ り を う さ 耳 で 克 服 せ よ

ブロック図

-

ブ ロ ッ ク 図 筋 電 位 ア プ Obniz Y1 サ ー ボ 左 耳 サ ー ボ 右 耳 バ ッ テ リ ー LINE 食 い し ば り っ て る よ ! JavaScript

+

![キャプショを入力できます](https://camo.elchika.com/5a4572a06b8c1052668ef3172401a297b8c38939/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353963343863342d396266302d346137362d383737612d6535363366326365623735652f65653834323362622d613565342d346263612d626539322d653531633636643064646435/)

外観

-

外 観 電 極 サ ー ボ ObnizY1 筋 電 位 ア ン プ 筋 電 位 ア ン プ 基 板 充 電 基 板 リ チ ウ ム バ ッ テ リ ー

+

![キャプションを入力できます](https://camo.elchika.com/930445912998ceec833292ffe116931bdc32ab11/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34353963343863342d396266302d346137362d383737612d6535363366326365623735652f34396436383931322d383665312d346631332d383534302d303334326534383464663262/)

仕様

-

様 • 5 LINE JavaScript 使

+

- - - - 5LINE - JavaScript使 - -

部品

+

| 品 名 | B | |:---:|:---| | obniz Board 1Y | D | | obniz Board 1Y | D | | obniz Board 1Y | D | | obniz Board 1Y | D |

部 品 品 名 個 数 備 考 obniz Board 1Y 1 Gifted サ ー ボ モ ー タ   SG90 2 Amazon う さ 耳 カ チ ュ ー シ ャ 1 ダ イ ソ ー 筋 電 位 ア ン プ 自 作 1 リ チ ウ ム バ ッ テ リ ー 3.7V 800 m Ah 1 携 帯 電 話 予 備 バ ッ テ リ ー リ チ ウ ム バ ッ テ リ ー 充 電 ボ ー ド 1 Amazon 乾 式 電 極 自 作 2 • 0: サ ー ボ 1 • 1: サ ー ボ 2 • 10 :ADC1( 左 ) • 11 :ADC2( 右 ) EMG サ ー ボ 1 サ ー ボ 2 リ チ ウ ム バ ッ テ リ ー 食 い し ば り を 検 出 し た ら う さ 耳 を 動 か す 、 3 秒 以 上 な ら LINE 通 知

-

//   う さ 耳 obniz 食 い し ば り 防 止 器 const fs = require("fs"); const request = require("request"); const Obniz = require("obniz"); const LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify"; const TOKEN = "LINE の ト ー ク ン コ ー ド "; const MESSAGE = "-- 食 い し ば り が 発 生 し ま し た --"; const HEADERS = { "Content-Type": "application/x-www-form-urlencoded", "Authorization": "Bearer " + TOKEN }; const OPTIONS = { url: LINE_NOTIFY_URL, method: "POST", headers: HEADERS, json: true, form: { message: MESSAGE } } var send = false; var obniz = new Obniz("obniz-ID"); var flag1 = false; var flag2 = false; var timer1 = new Date(); var timer2 = new Date(); var timer3 = new Date(); var count = 0; var timer = new Date(); var ad1 = 0; var ad2 = 0; // う さ 耳 の サ ー ボ var Mid1 = 110;   // サ ー ボ 中 央 位 置 var Mid2 = 90; var Front1 = 00; // サ ー ボ 前 位 置 var Front2 = 180; var Back1 = 140; // サ ー ボ 後 ろ 位 置 var Back2 = 10; var Th = 0.3; // し き い 値 var Long = 3000; // 継 続 噛 み 締 め 通 知 時 間 sec obniz.onconnect = async function () { var servo1 = obniz.wired("ServoMotor", {gnd:3, vcc:2, signal:0}); var servo2 = obniz.wired("ServoMotor", {gnd:3, vcc:2, signal:1}); obniz.repeat(async () => { obniz.ad10.start((voltage) => { // 左 側 の 筋 電 位 ad1 = voltage; }); obniz.ad11.start((voltage) => { // 右 側 の 筋 電 位 ad2 = voltage; }); // left し き い 値 if(ad1 > Th ){ console.log("ad1:"+ad1); if(flag1 == false){ servo1.angle(Front1); flag1 = true; timer1 = new Date(); console.log("left ON"); } //timer1 = Date(); timer = new Date(); console.log("time:"+(timer.getTime() -timer1.getTime() )); }else{ servo1.angle(Mid1); flag1 = false; } //right し き い 値 if(ad2 > Th ){ if(flag2 == false){ servo2.angle(Front2); console.log("righ ON"); flag2 = true; timer2 = new Date(); } }else{ servo2.angle(Mid2); flag2 = false; } if(ad1 <= Th && ad2 <= Th ){ // 両 方 し き い 値 以 下 servo1.angle(Mid1); servo2.angle(Mid2); send = false; flag1 = false; flag2 = false; } timer = new Date(); if((flag1 == true && (timer.getTime() - timer1.getTime()) > Long) || (flag2 == true && (timer.getTime() - timer2.getTime()) > Long)){ // 噛 み 締 め が 継 続 し た console.log("Long kamikami "+(timer.getTime() - timer1.getTime()) + " " + (timer.getTime() - timer2.getTime())); if(send == false){ send = true; count = 0; console.log("line tingth send!"); await request(OPTIONS, async(error, response, body) => { console.log(body); if(error){ console.log(error); } }); } // 長 い 噛 み 締 め 交 互 に 耳 を 振 る timer = new Date(); if(timer.getTime()-timer3.getTime()>800){ count++; timer3 = new Date(); if(count == 1){ servo1.angle(Back1); servo2.angle(Front2); }else if(count == 2){ servo1.angle(Front1); servo2.angle(Back2); count = 0; }else{ servo1.angle(Mid1); servo2.angle(Mid2); count = 0; } } } },300); } obniz.onclose = async function() { } 感想

+

感 想 • Line の 通 知 は 思 っ た 以 上 に 簡 単 だ っ た 。 • 初 め て の JavaScript だ っ た の で そ こ は 苦 労 し ま し た 。 • Ambient に 食 い し ば り の デ ー タ を 保 存 し た か っ た が 時 間 切 れ • 髪 の 毛 が 生 え て い る 部 位 か ら 筋 電 位 が 取 れ る よ う に な っ た の は 大 き な 収 穫 で し た 。