H31.9.19 天井灯をどうにかコントロールできた

 赤外線リモコンのことを知ろうと、さらに探していたらここに出会いました。これまでの私の拙い勉強が役に立ったかどうかは分かりませんが、赤外線リモコンの扱い方に納得のいく理解が得られました。フォーマットには何種類かあるのですが、家電製品協会フォーマットに絞ります。

リモコンの送信データは、リーダー部・データ部・トレーラー部で構成されていて、信号の基本時間は0.35〜0.5msecとされていて、一般には中央値の0.425msecが使われているそうだ。425μ秒ですね。これを1Tとすると、

  1. リーダー部 => ON(8T)・OFF(4T) :ON(3400μsec)・OFF(1700μsec)
  2. データ部  => データ[0]→ON(1T)・OFF(1T):ON(425μsec)・OFF(425μsec)
             データ[1]→ON(1T)・OFF(3T):ON(425μsec)・OFF(1275μsec)
  3. トレーラー部=> ON(1T)・OFF(8msec以上)
 という説明でした。なるほど、Arduinoで得たデータをこの基本で整形していけばいいのだな、ということでやってみました。数値は5種類しかありません。トレーラー部のOFFは一応9msecにしてみました。さらに、一回の押釦で信号が2度繰り返すようにしてみました。

 その結果、うまくいきました。ただし、天井灯の半透明カバーは外した方が確実(当然ですね)。外したところに見える赤外線受光部をきちんと目指した方が確実(当たり前か)。
 不思議なことに、2台同じ天井灯があるのですが、同じような反応は見せてくれません。これも当然か、微妙なマイクロビットの信号にきちんと同じように反応する製品の均一さを求める方が世間知らずかも。

 425μ秒を430μ秒でやるとうまくいかない。一連の信号をエディタに保存しておいて、基本となる1Tをいろいろ変えて一番適正な信号セットを見つけてもいいかもしれない。ただ、マイクロビットの個体差で違いが出るだろうし、あんまり詰めてもしようがない。これで、天井灯赤外線コントラーは一応終了。


H31.9.18 マイクロビット風基板に載せる

 ブレッドボードでは扱いが面倒だなと思ったので、マイクロビット風基板を新規作製するかなと考えた。ところが、以前に作成した基板の中に、心拍センサー電源用として作ったものにピンソケットを半田付けしていたものがあることを思い出した。実際にここに、GND・Vcc・Datのピン配列もきちんと一致して赤外線LEDボードを差し込むことができた。

 うまい具合に赤外線の実験ができる。受光ボードのピン配置も同じ配列なので応用がきく。Arduinoを煩わさずに、Micro:bitで各種の赤外線リモコン信号を読み取れるようにしてみるかな? 得た信号を一旦配列に入れてから、ゆっくりとSDカードに書き込めばいい。

 簡単には言えるけどね...(^^;)


H31.9.17 赤外線を扱ってみる

 マイクロビットで何かできないかなと思っていたら、普段赤外線リモコンを使っていたので、これだ! とひらめきました。しかし、閃いても何もできないので、マイクロビットと赤外線で検索したら、asondemitaさんのページにヒットしました。有難い。

 取り敢えずasondemitaさんと同じようにオーム電気のOCR-05Wをゲット。赤外線のセンサーとLEDも購入しておく。単体のものを購入したけれど、実験にはいいが長い距離は難しく実用的ではないので、こんなものも購入した。結果、4mまで届いた。狙いが難しいのだけれど...

 確かにasodemitaさんのブロックプログラムでは不安定だったので、あれこれ計算をして試行錯誤を繰り返した。結局、今のところ下のような配列セットが良かった。この計算については勉強中なので、もっと良いデータセットがあるのだろう。それはまた後日...もう私には無理だろうな。

list = [2520,2520,840,840,840,840,840,1900,840,1900,840,1900,840,1900,840,840,840,840,840,53760,2520,2520,840,840,840,840,840,840,840,1900,840,1900,840,1900,840,840,840,840,840]
list = [2520,2520,840,840,840,1900,840,840,840,840,840,1900,840,840,840,1900,840,1900,840,53760,2520,2520,840,840,840,1900,840,840,840,840,840,1900,840,840,840,1900,840,1900,840]

 上のセットが点灯で下のセットが消灯。

 ここに辿り着いたのは、OHMのコントローラによるON・OFF信号のデータをArduinoで取ったことに始まります。ここの中の<ビジネス><システム開発>の中の「Arduinoで赤外線リモコンの信号を解析する」というページをそのまま参考にさせていただいて、下のデータを得ました。

257,269,86,83,86,82,81,193,80,190,82,192,80,193,80,88,81,88,80,5421,261,264,89,80,86,83,85,187,86,187,86,186,86,186,86,84,84,84,84
258,267,83,88,81,192,81,88,80,88,81,189,83,88,81,192,81,192,81,5422,257,268,88,83,81,192,86,83,80,87,81,192,80,88,89,184,86,187,81

 ここからが自分が不理解のままエクセルで処理です。2桁の数字は結構ばらけてますが、本来は同じ値。なので、平均して84とする。これが1T。スタートはどうやら3Tで点灯・消灯のようなので、84×3で252。途中ところどころで190前後の値が出るのは、平均すると189.3だが、190とすると案外結果は良かった。84の整数倍になっていないが、黙って使った。真ん中の4ケタ数字は繰り返しの仕切りみたいなものでしょう。ということで、これをきちんと修正して10倍したのがlistの配列データ。これをブロックエディタのjavascript画面にドラッグ&ドロップしてやると、うまい具合に動きました。みなさん有難う。上にも書いたように、うまく狙いを定めれば4mは届きました。点灯・消灯OKでした。私の環境では。

 ただ、このOHMのセットは、リモコン信号が簡単なんですね。天井についている電灯は長くなるし、テレビのON・OFFでも、その他に機能がたくさんあるので、とても大変のようです。こうなると、赤外線リモコン信号の仕組みをきちんと理解してから、信号データの整形をしないとほとんど無理ですね。ただ、天井電灯のONだけはうまくいきましたが...