子どもの勉強監督botをLINEで実装してみた
自己紹介
大学時代C言語を学んでから十数年以来のプログラミングを始めています。
本業はweb制作で、ホームページとLINE連携の需要がとても多く、LINEbotに興味を持ちました。
今回も練習した事のメモです。
やったこと
子どもが勉強中にあまりにもふらふらするので、
1.obnizを机に設置
2.子供との距離を測る
3.一定距離以上離れたら遊んでいるとみなし
ーLINEでお知らせを受け取る
ーLEDを光らせる
obnizで使用した部品
超音波測距センサー
フルカラーLED WS2811
obnizの超音波距離センサーで一定期間は離れるとLEDが光る
という部分の動作確認です。
const obniz = new Obniz('obnizID');
obnizIDを書き換えます。
const Obniz = require('obniz');
const obniz = new Obniz('obnizID');
obniz.onconnect = async() => {
// 超音波測距センサを利用
const hcsr04 = obniz.wired('HC-SR04', { gnd: 11, echo: 10, trigger: 9, vcc: 8 });
// LEDを利用
const rgbled = obniz.wired('WS2811', { gnd: 0, vcc: 1, din: 2 });
// obnizディスプレイ(初期表示)
obniz.display.clear();
obniz.display.print('obniz Ready');
// setIntervalで定期実行
setInterval(async() => {
// 距離を取得
let distance = await hcsr04.measureWait();
// 小数点以下がたくさんあるのでここでは整数に
distance = Math.floor(distance);
// 距離をコンソールに表示
console.log(distance + ' mm');
// 距離をobnizディスプレイに表示
obniz.display.clear();
obniz.display.print(distance + ' mm');
// 距離によって判定
if (distance > 500.0) {
// 500mm = 50cm 以上の場合 obnizディスプレイ表示
obniz.display.clear();
obniz.display.print('Too distance');
// LEDオン
rgbled.rgbs([
[0xFF, 0x00, 0x00], // red
[0x00, 0x00, 0xFF] // blue
])
} else {
// 500mm未満の時は色が反転
rgbled.rgbs([
[0x00, 0x00, 0xFF],
[0xFF, 0x00, 0x00]
])
}
}, 5000); // 5000ミリ秒 = 5秒ごとに実行
};
LINEbotと接続
ここがなかなかうまくいかず、苦労しました。
エラーが結構出まして。
どこまで動いているのか切り分ける為、細かくコードの中に
console.log('Hello2!');
を入れていきました。
そうする事で、Hello2!が表示されたかされていないのかで、どこの記述が怪しいのか判別する事が出来ました。
時間かかりましたが、ようやくエラー表示が消え距離が出力されるようになりました。
そして、ngrokを実行して、LINE botのwebhookへ入力すると
今回は、子どもとobnizの距離を測り500mm以内離れた時にだけ、LINEに通知が送られるようにしました。
まとめ
今回は超音波測距センサーってなんか凄いな!と思い、超音波測距センサー×LINEを実装したのですが
最初に超音波距離センサーを知った時の概念で、一定期間距離が近づいたらアクションを起こすという発想でいたのですが、距離が離れた時にアクションを起こすというのも面白いなと思いました。
フラフラする子供が近くからいなくなったらLINEで通知するとか。
距離×LINEで実生活に役立つbotを作れそうだなとおもいました。
Author And Source
この問題について(子どもの勉強監督botをLINEで実装してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/misa_m/items/1804c283267866250ff2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .