自己紹介
大学時代C言語を学んでから十数年以来のプログラミングを始めています。
本業はweb制作で、ホームページとLINE連携の需要がとても多く、LINEbotに興味を持ちました。
今回も練習した事のメモです。
やったこと
obnizeの超音波測距センサーで100cm以内に近づくとフルカラーLED WS2811で指定した色が光る。
さらにはLINE botに近づいた事を知らせます。
obnizeの超音波距離センサーで近づくと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 < 100.0) {
// 100mm = 10cm 未満の場合 obnizディスプレイ表示
obniz.display.clear();
obniz.display.print('Too close!!');
// LEDオン
rgbled.rgbs([
[0xFF, 0x00, 0x00], // red
[0x00, 0x00, 0xFF] // blue
])
} else {
// 100mmを超えるときは色が反転
rgbled.rgbs([
[0x00, 0x00, 0xFF],
[0xFF, 0x00, 0x00]
])
}
}, 5000); // 5000ミリ秒 = 5秒ごとに実行
};
LINEbotと接続
ここがなかなかうまくいかず、苦労しました。
エラーが結構出まして。
どこまで動いているのか切り分ける為、細かくコードの中に
console.log('Hello2!');
を入れていきました。
そうする事で、Hello2!が表示されたかされていないのかで、どこの記述が怪しいのか判別する事が出来ました。
時間かかりましたが、ようやくエラー表示が消え距離が出力されるようになりました。
そして、ngrokを実行して、LINE botのwebhookへ入力すると
100mm以内に近づいた時だけ、LINEに通知が送られます。成功しました。
まとめ
今回は超音波測距センサーってなんか凄いな!と思い、超音波測距センサー×LINEを実装したのですが、実生活に役立つ機能を持つ開発をしていきたいなと思いました。実生活の自動化とても気になっています。

