🧩

【AVR ATtiny10】赤外線リモコンを作ろう (1)見えないLチカ

に公開

【AVR ATtiny10】赤外線リモコンを作ろう

💡 この記事は 2022.05.03 に公開した記事を再登録したものです

とりあえずアレ

実は ATtiny10、ずっと前から面白そうだと思って買うだけ買ったものの、なんだかんだで手を出さず部品箱の中に眠っていたのです。いつの間にか数年経ってしまったのですが、この記事で書いたように、ついに ATtiny10 が日の目を見るときがやってきたのです。

🧩 【AVR ATtiny10】ピンが無ければ ADC を使えばいいじゃない / 全3回

こういうマイコンは部品をはんだ付けするだけじゃ動かず、開発環境のセットアップやプログラマとの接続と書き込み、もちろん書き込むプログラムも回路も全てが整って初めて動くのです。どこか一ヶ所がまずくても動かないので、全てが整ったことを確認するために一番最初はとにかくシンプルなものを動かしてみるものです。そんな時によく選ばれる題材は、やはり LEDチカチカ、略して Lチカでしょう。マイコンに LED を 1粒だけつないで、それを点滅させるのです。目に見える形で動く一番シンプルなものと言ってよい題材です。
というわけで私もようやく ATtiny10 で Lチカをやることになったと、そういう訳なのです。赤外線LED なので人の目には見えないんですけどね。

赤外線リモコンの動作


赤外線リモコン

写真使い回しの都合チョイスが偏ってますが、みなさんご存じ赤外線リモコンです。これは部屋の照明とエアコンのものです。テレビのリモコンだともっと分かりやすかったですね。

赤外線リモコンは、波長 950nm あたりの赤外線を決められたパターンでチカチカさせて、機器に信号を送っています。たいていはリモコンから機器への一方通行ですので、リモコン側での受信についてはここでは考えません。この赤外線を出す LED もそれほど珍しいものでもなく、秋月電子などでは 940nm LED 10個 100円とかで買えるので手は出しやすいです。

というわけで、自作に当たっては LED をどうチカチカさせればいいのかを知ることがキモになります。

ざっくり共通項

赤外線リモコンの規格には NECフォーマット、家製協(家電製品協会)フォーマット、SONYフォーマットなどメジャーなものでも数種あるようで、今回の制作ターゲットはこの辺をカバーできることを目指します。正確な仕様については google先生に聞いていただければよい記事がたくさんみつかると思いますが、ここでは赤外線リモコンの共通点からざっくりと説明します。

大きな目で見ると赤外線リモコンは波長 950nm前後の赤外線を ON したり OFF したりしてます。ON と OFF の幅は T という単位で表され、例えば NECフォーマットでは 1T は 562μs です。全ての ON と OFF の時間は T の整数倍になります(図の点滅パターンは適当ですよ)。


赤外線の ON/OFF と変調単位 T

そしてこの ON の部分をよく見ると、実は 38kHz で点滅しています。この周波数をサブキャリア周波数と言います。規格によって幅があり、SONYフォーマットでは 40kHz のようです。


サブキャリア

さらにこの 38kHz の点滅をよく見ると、duty比 1/3 になってます。消費電力に対してピークの輝度を高めるためですかね。


キャリアduty比

再び大きな視点に戻ると、赤外線リモコンは押されたボタンの ID などを赤外線の ON/OFF のパターンで送信するわけですが、このひと固まりのパターンをフレームと呼び、こんな構造になっています。


フレーム構造

上図ボディというのは私が便宜上付けた呼び名ですが、ここが送りたいデータの内容でその仕様はフォーマットや機種依存です。リーダーやストップビットの構造もフォーマット依存ですが、NECフォーマットを例にとるとリーダーは 16T ON + 8T OFF、ストップビットは 1T ON です。

またボタンを押し続けた場合には、間隔を空けて同じフレームを繰り返し送ったりリピートフレームを送ったりしますが、これも機種によります。

フォーマット毎のパラメータ

主要な 3フォーマットについてのパラメータは以下の通りです。

パラメータ NEC 家製協 SONY
サブキャリア周波数 38kHz 38kHz typ. 40kHz
T 562μs 425μs typ. 600μs
リーダー 16T ON + 8T OFF 8T ON + 4T OFF 4T ON
bit値 0 1T ON + 1T OFF 1T ON + 1T OFF 1T OFF + 1T ON
bit値 1 1T ON + 3T OFF 1T ON + 3T OFF 1T OFF + 2T ON
ストップビット 1T ON 1T ON なし
フレーム周期 108ms 130ms typ. 45ms

参考リンク

リモコンフォーマットの具体的なパラメータについては、以下のページを参考にさせていただきました。ありがとうございます。

赤外線リモコンの通信フォーマット 外部

読めるぞ!!

赤外線リモコンの Lチカパターン、仕様からは確認できましたが実際はどんな感じなのでしょうか。ちょっと覗いてみます。
赤外線リモコンの送信確認でよく言われるのが、カメラで写すと点滅が見えるというものです。


カメラで赤外線を見る

ただ最近のカメラは可視光フィルタの性能がいいのか、ほとんど見えないみたいです。まあ見えたところで光ってるのが分かるレベルですから、信号の様子なんて見えませんけど。
ではオシロで見ましょうと言われても、一般庶民はそんなもの持ってません。私たちはこのまま信号を見ることなく寂しく人生を終えてしまうのでしょうか。そんな仕打ちに甘んじなければならないのでしょうか。

いやそんなことはありません。

こういうのを


秋月電子の通販サイトより フォトトランジスタ

こんな風にして


簡易赤外線受信回路


制作例

こうすると


PC 音声入力に接続

こうなっちゃいます。


録音したリモコン波形

フォトトランジスタをマイク端子につないでオーディオとして録音しただけでこの通りです(※1)。オシロいりませんね。なお赤外線リモコンとフォトトランジスタの距離は、近すぎると音が割れるような感じで波形が荒れますので、ちょうどいい位置を探る必要があります。
さて波形を見てみますと、最初の長い ON とそれに続く半分くらいの OFF がリーダーですね。続いての ON-OFF(短) が bit値 0、続いての ON-OFF(長) が bit値 1 です。改めて最初から bit の並びを見ますと…

0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1…

… 読める!読めるぞ!!

はい。これでラピュタの宝はあなたのものです。

TinyRemoCon

今回 ATtiny10 で制作するリモコン TinyRemoCon は自立的な学習リモコンではなく、特定のリモコンコードを固定データとして持つものにします。PC などでデータを定義して、それをリモコンの制御プログラムと一緒に ATtiny10 に書き込んで使います。このデータの作成には、前節のように何らかの形で既存のリモコンコードを読み取る必要があります。

また、主要なフォーマットの差異を踏まえ、コマンド毎に以下のパラメータを定義可能とします。

  • 1T の時間
  • bit値の出力が ON先行か OFF先行か(SONY は OFF先行、それ以外は ON先行)
  • bit値 0 の構造を ON と OFF の T数で
  • bit値 1 の構造を ON と OFF の T数で
  • 任意長の ON 出力(リーダーの出力などに使用)
  • 任意長の OFF 出力(同上)
  • バイトデータ出力(LSB first)
  • ビットデータ出力(LSB first)
  • リピートに対応
  • コマンド長はメモリの許す限り

サブキャリア周波数は 38kHz 固定とします。SONYフォーマットでは仕様上 40kHz ですが、38kHz でも感度は鈍るものの受信できるようなので。

続く

赤外線リモコンの Lチカパターンが分かったところで、今回の記事はおしまいです。次回は実際にモノを作っていただく記事、その次ではこの Lチカパターンをどのように作り出したかを紹介していきます。ATtiny10 にはタイミングを測れそうなものにタイマーが 1ch ありますが、今回はサブキャリア 38kHz の出力と変調単位 T の測定が必要です。タイマー 1ch でどうまかなえるでしょうか?


≫ 次の記事: (2)とりあえず全部

このシリーズ

🧩 【AVR ATtiny10】赤外線リモコンを作ろう / 全4回

関連記事

🧩 【AVR ATtiny10】ピンが無ければ ADC を使えばいいじゃない / 全3回

🧩 Hello ATtiny10!

🧭 コンテンツガイド

Discussion