はじめに
こんにちは。電気毛布エンジニアの@tmitsuoka0423です。
昨日書いた「obniz+赤外線LEDでリモコンコンセント(OCR-05W)を動かす」では、obniz のパーツライブラリページ上で動作確認しましたが、今回は TypeScript で実装していきます。
ソースコードはhttps://github.com/tmitsuoka0423/obniz-ocr-05wで公開しています。
今回使うもの
品名 | 画像 | 価格 |
---|---|---|
obniz Board | 5,500円くらい | |
赤外線センサー OSRB38C9AA | 50円くらい | |
赤外線LED OSI5FU5111C-40 | 20円くらい | |
リモコンコンセント OCR-05W | 1,200円くらい |
obnizと素子を接続する
リモコンの赤外線信号を解析する
まずは、赤外線センサーを使ってリモコンの信号を受信するプログラムを作成します。
(確認してないですが、このプログラムを使って OCR-05W 以外のリモコンの信号も受信できると思います)。
import Obniz from 'obniz';
const obniz = new Obniz('OBNIZ_ID_HERE');
obniz.onconnect = async () => {
const sensor = obniz.wired('IRSensor', { vcc: 0, gnd: 1, output: 2 });
console.log('リモコンのボタンを短く押してください…');
sensor.start(function (arr) {
console.log('受信したシグナル:');
console.log(JSON.stringify(arr));
obniz.close();
});
}
これをコンパイルして実行する。
と表示されるので、リモコンのボタンを押すと、めっちゃ長い信号が受信される。
昨日から作っているobniz+赤外線LED+リモコンコンセントをTypeScriptで書き直し中。
— Takahiro Mitsuoka (@tmitsuoka0423) March 25, 2020
まずはリモコン受信。#obniz #iot pic.twitter.com/Uj8A0TqliA
無事受信できた。
リモコンコンセントにobnizから信号を送信する
プログラムは以下の通り。
import Obniz from 'obniz';
const on: (0 | 1)[] = [1, 1, 1, 1, 1, (略)]; // 受信したリモコンの信号をコピペする。
const off: (0 | 1)[] = [1, 1, 1, 1, 1, (略)]; // GitHubに全量を載せています。
const obniz = new Obniz('OBNIZ_ID_HERE');
obniz.onconnect = async () => {
const led = obniz.wired('InfraredLED', { anode: 3, cathode: 4 });
led.send(on);
// led.send(off);
console.log('信号を送信しました。');
obniz.close();
}
動かしてみる。
昨日作ったobniz+赤外線LEDをTypeScriptで実装しました。https://t.co/ZjlVZz4pa7
— Takahiro Mitsuoka (@tmitsuoka0423) March 25, 2020
TypeScriptは良い。
クラウドファンディング実施中”mouful”
1週間使ってみてくれる人、開発メンバー募集です!https://t.co/jrNHkUPUG7#obniz #iot #sleeptech #protoout pic.twitter.com/lsb1HrJ8vO
まとめ
obniz+TypeScript でリモコンコンセントの操作ができるようになりました。
JavaScript で書くのと比べて、TypeScript だとプロパティ名の補完が効くようになるのでオススメです。
gnd とか vcc とかピン名を調べる手間がなくなります。
次回は AWS にデプロイしていきます。