とりあえずアレ

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

こういうマイコンは部品をはんだ付けするだけじゃ動かず、開発環境のセットアップやプログラマとの接続と書き込み、もちろん書き込むプログラムも回路も全てが整って初めて動くのです。どこか一ヶ所がまずくても動かないので、全てが整ったことを確認するために一番最初はとにかくシンプルなものを動かしてみるものです。そんな時によく選ばれる題材は、やはり 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
サブキャリア周波数38kHz38kHz typ.40kHz
T562μs425μs typ.600μs
リーダー16T ON + 8T OFF8T ON + 4T OFF4T ON
bit値 01T ON + 1T OFF1T ON + 1T OFF1T OFF + 1T ON
bit値 11T ON + 3T OFF1T ON + 3T OFF1T OFF + 2T ON
ストップビット1T ON1T ONなし
フレーム周期108ms130ms typ.45ms
参考リンク

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

読める!読めるぞ!!

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

カメラで赤外線を見る

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

こういうのを

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

こんな風にして

簡易赤外線受信回路(※1)

こうすると

こうなっちゃいます。

録音したリモコン波形

フォトトランジスタをマイク端子につないでオーディオとして録音しただけでこの通りです(※2)。オシロいりませんね。なお赤外線リモコンとフォトトランジスタの距離は、近すぎると音が割れるような感じで波形が荒れますので、ちょうどいい位置を探る必要があります。
さて波形を見てみますと、最初の長い 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…

思わずあの言葉を叫んでしまいますね。

※1 twitter から PC用の3極マイク端子についての認識誤りを指摘いただき、記事の初回公開時より少し修整しています。ただし動けばいいレベルの簡易回路どまりです。
当初の認識としてはステレオマイク端子に対応する意図での回路図でしたが、PC のマイク端子は基本的にモノラルであり 3極ジャックを使う場合にはマイク入力である先端(tip)の内側(ring)に別途コンデンサマイク用の電源出力があるそうです。ただ現状いくつかのオーディオインタフェースを調べますと、手持ちのものについては全て tip にも電源出力がありましたので、ring を使用せず tip と sleeve(一番外側)間にフォトトランジスタを接続する簡易的な回路に留めました。

※2 オーディオインタフェースによって録音具合は異なります。下の画像の上2つはきれいに波形が見えますが、正負が逆です。回路的には赤外線が当たると +電圧を GND に引っ張りますから下向きのパルスになるはずで、その点から中段のものが正しいですが、こんな違いもあるのですね。一番下のものはとあるノートPC のマイク入力ですが、これは厳しいですね。普通の音声を入力しても音質が非常に悪いです。

オーディオインタフェース比較

もし残念なオーディオインタフェースしか無かったら、USB の安いやつを買うという手もあります。実はこの画像の上 2つもお安く入手した USB オーディオインタフェース 2機種です。

上段
中段

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 でどうまかなえるでしょうか?

このシリーズ

この記事です

関連記事

リモコンに必要な多ボタンの実現についての記事