obniz+赤外線LED+TypeScriptでリモコンコンセント(OCR-05W)を動かす


はじめに

こんにちは。電気毛布エンジニアの@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以外のリモコンの信号も受信できると思います。)

receive.ts
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から信号を送信する

プログラムは以下の通り。

send.ts
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+TypeScriptでリモコンコンセントの操作ができるようになりました。

JavaScriptで書くのと比べて、TypeScriptだとプロパティ名の補完が効くようになるのでオススメです。
gndとかvccとかピン名を調べる手間がなくなります。

次回はAWSにデプロイしていきます。