M5Stackではセンサーを小さなプラスチックボックスに入れケーブル1本で接続できるようにしたユニットを使います。
今回は「IR Remote」ユニットを使ってみます。これは家電用でよく使われている赤外線リモコンを実現するもので、送信機と受信機の両方で使用できます。
これにより家電をIoT機器で制御する「スマートホーム」を実現することができます。
製品紹介のページはこちら→ https://docs.m5stack.com/en/unit/ir
穴が空いていて、レゴブロックに付けることができます。
UIFlowでユニットを使う場合、左下にあるUnits+(ユニットブロックの追加)ボタンで追加します。
ユニットの一覧が表示されるので、使用するユニットを選びます。
今回使う「IR」にチェックと入れ、OKボタンをクリックします。
IRユニットが追加されました。ここから使用するIR用のブロックを配置していきます。
Blockyでのプログラムです。IRユニットで信号を受信したら、受信したデータによって行う処理を決めています。
やる内容はM5Stack本体横にあるLEDのON、OFF、明るさ変更、色の変更です。
LED照明用のリモコンの各ボタンを押し、何が受信されるかを調べて、そのデータを使って設定しています。
例えば、[ON]ボタンを押すと「18」というデータが受信されるので、プログラムに「受信データが18ならば、LEDを点灯する」という指定をします。
Pythonではこんな感じです。
ir_nec_rx_cbというモジュールを使っています。UIFlowで提供されているブロックではNEC製リモコンしか対応できないようです。
Interntモードではリモコンのスイッチを何回も押さないと反応しませんでした。APモードにしたらちゃんと反応してくれました。
※Internetモード UIFlowとM5Stackをつないだ状態でプログラムを実行するモード
※APモード APはアプリケーション。M5Stack側にプログラムを書き込んで実行するモード。
プログラム開発中は画面右下の[▶Run](実行)ボタンをクリックしますが、完成したら[↓ダウンロード]ボタンをクリックしてM5Stack本体にプログラムを書き込みます。
ダウンロード後の動きがこちら(LEDの色は画面ではよく分かりません。机に写った色でイメージしてください。)
UIFlowでIRユニットを使うネット情報はほぼありませんでした。(ArduiinoIDEを使うものをありましたが…)
本格的に使うには(今のところ)UIFlowではなく、ArduiinoIDEでプログラム開発しなくちゃかな…