Resort Station(Firmware)

●Resort Stationとは?

 Resort Stationとは、AVRマイコンで動作する、PC専用学習リモコンであるBUFFALO Remote Station(PC-OP-RS1)/KURO-RSのクローン(互換品)です。
 PC-OP-RS1では正しく学習できなかったダイキン製エアコンの学習・送信に対応し、PC-OP-RSと高い互換性を維持しながらも、機能の拡張を行いました。

 私が引っ越した部屋に付いていたエアコンはダイキンだったためPC-OP-RS1で学習できませした。そこで作ったハードがこれです。Yuaiho初のマイコンです。ダイキンのエアコン以外の機器で動くかは、テストする機器が無いのでよくわかりません。

●PC-OP-RS1との差異

○斉射機能
 PC-OP-RS1では一度に1チャンネル分しか赤外線を放射できませでしたが、Resort Stationでは同じ信号を複数のチャンネルから発射することが出来ます。但し実験するためのパーツが足りなかった&実験が面倒くさかったのでので未テストだったりします。個々のポートはちゃんと出力されます。

○メモリの強化
 PC-OP-RS1では240バイト(100us/bit:1,920bit、192ms分)しか記録できませんでしたが、本ファームは530バイト(100us/bit:4,240bit、424ms分)まで記録することが出来ます。
※PC-OP-RS1のサンプリングレート100us/bitはPC-OP-RS1 Wiki記載の推定値です。作者で測定したわけではありません。

▼ボーレートの変更
 PC-OP-RS1は115200bpsで通信を行っていましたが、本ファームは38400bpsで通信を行います。

▼チャンネル指定の変更(斉射機能)
 PC-OP-RS1は1から4(ASCIIコード0x31-0x34)でチャンネルを指定していましたが、本ファームは1-9a-fの16(ASCIIコード0x31-0x39・0x61-0x66)進数で指定します。4bitのうち、下位ビットが1ch、上位ビットが4chになります。
 よくわからない人向け:4ch:8 3ch:4 2ch:2 1ch:1とします。送信するときに指定するチャンネルは、送信するチャンネルの右側の数字の和を16進数のASCII文字で指定します。たとえば4chだけ送るときは'8'(ASCIIコード0x38)を、2chと4chを同時に送信する場合は8+2=10なので'a'(ASCIIコード0x61)を指定します。

●各種コマンドシーケンス

1行1シーケンスです。シーケンス内に複数のコマンドがある場合は、それのいずれかを送受信します。
表内部の内部は16進に相当するASCII文字です。
初期状態と一連の処理後、エラー後は常に待機状態であり、各セクションの最初の送信を待ち受けます

☆LEDコマンド

 複数台設置したPORTD4の電圧を切り替えます。

クライアント
方向
Remote Station
Resort Station
備考
0x69(i)
ACCESSランプ点灯 通電確認ランプ点灯 オリジナルと同じです。
基本:0x59(Y)
例外:0x4f(O)
0x4f(O)
0x59(Y)
Resort StationのLEDはトグルです。自動的に明滅しません。
また、直前のランプの状態により返すコードが異なります。

☆リモコン受信コマンド

 リモコン信号を受信します。本体内部には記録されません。
※赤外線リモコンを操作していないのにもかかわらず、0x72(r)直後に0x53(c)、0x45(E)と自動的に来る場合はノイズによる誤動作です。バイパスコンデンサが必要かバイパスコンデンサの容量を増やして下さい。
サンプリングしたデータはリモコンで同じ信号を送ったとしても、PC-OP-RS1と同じにはなりません

クライアントPC
方向
Remote Station
Resort Station
備考
0x72(r)
受信モードへ移行 オリジナルと同じです。
0x59(Y) オリジナルと同じです。
リモコン送信
0x59をクライアントに送信後、機器はリモコンからの赤外線を待機する状態になります。
0x5363(c) オリジナルと同じ。
この次の文字からを保存して下さい。
※文字コード番号に誤りがありました。ご指摘ありがとうございます。(2015.04.16)
(任意の文字)
(→)
(挙動不明) 学習中止 (送信待機中に任意の文字を送り付けると受信プロセスを停止できます。)
(停止完了)
(←)
(挙動不明) (0x4e(N)) (学習を中止するとエラーをPCに送信します。学習中止後は再び各種コマンドを待ち受けます。)
リモコンデータ
(240byte)
リモコンデータ
(530byte)
リモコンデータをPCに送信します。
Resort Stationのサンプリングレートは100usです。
オリジナル同様に、リモコンデータが240byteより短い場合は0で埋められます。ダイキンのエアコンのリモコンは490byte前後あります。
0x45(E)
受信終了コードです。オリジナルと同じです。

☆リモコン送信コマンド

 リモコン送信を行うと、Resort Stationは最後の内容をSRAMに記録します。この内容は再利用できますが、電源を切ったりリセットを行うと消えてしまいます。

クライアントPC
方向
Remote Station
Resort Station
備考
0x74(t)
送信要求 オリジナルと同じ
0x59(Y) 0x59(Y) オリジナルと同じです。
0x31(1)〜0x39(9)
0x61(a)〜0x66(f)
※0x31〜0x34以外はエラー チャンネル指定 チャンネルはPC-OP-RS1の差異で触れた部分を参考にして指定して下さい。
(0x74(t))
(該当無し(エラー)) (チャンネル指定) (チャネル指定は0x74(t)でも可能です。0x74で送信するとチャンネルは1chと2chが有効になります。つまりチャンネル指定で0x33を送るのと等価です。デバッグ用コマンドです。)
(0x40(0))
(該当無し(エラー)) (最後と同じ内容で送信) (チャンネル指定に変わって0x40(0)でも送信が可能です。
最後の送信時のデータとチャンネル指定を使って送信を行います。実行には一度送信している必要があります。PCからのデータ送信は不要です。送信後はコマンド待機に移行します。開発時の残骸であり、動作は未保証です。)
機器側準備完了
0x59(Y) オリジナルと同じ
リモコンデータ
240byte 530byte Resort Stationは必ず530byte分送信されます。したがって短いリモコンデータでも530msの時間が必要になります。このプロセスは、530byteデータを送りきるか、機器を物理的にリセットする以外の方法で停止することが出来ません
0x45(E) 0x45(E) 送信終了コードです。オリジナルと同じです。

○その他シーケンス

クライアントPC
方向
Remote Station
Resort Station
備考
0x76(v)
無反応 バージョン送信要求 バージョンを送信します。
バージョン
ビルド番号
HP URL
無反応 バージョンの送信 バージョン、ビルド番号、このサイトのURLを表示します。
シーケンスに無いコード
無反応 エラーになります。 シーケンスに未記載の文字の送信はエラーになります。エラーは0x4e(N)を返します。
エラーコード受信
無反応 0x4e(N) ただし、待機状態において「0x40(0)」の送信はResort Stationでも無視されます。

●回路図・PaaS図面・実装例

 ○回路図

※注意:2SA1015のコレクタとエミッタが逆になっています。(2015.04.17追記、ご指摘ありがとうございます。)

★受信は、INT1割り込みを使って、PL-IRM0101-3に繋がったPD3の電圧を100us(0.1ms)秒毎にサンプリングすることにより行っています。530×8bit(=4640bit)サンプリングをシリアルポート経由でPCに送信します。
★送信はPCからデータを送ると、PC0(23番ピン)〜PC3(25番ピン)から受信時にサンプリングした信号波が出ます。これをPB1(15番ピン)から出てくる38kHzの搬送波で変調を掛けてLEDを点滅させます。

素子のスペックは回路図の通りです
☆LEDは秋月の中心波長940nm、40mW/srの赤外線LEDを使っています。
☆バイパスコンデンサの量や配置はテキトーです。適当ではなくてテキトーです。
☆XTALは10MHzの水晶振動子です。負荷コンデンサが必要な方はテキトーに付けて下さい。作者が作ったものは負荷コンデンサがなくても動いているので付けていません。と言うか実装面倒くさいです。
☆4ch同時斉射する場合、2SA1015では容量不足だと思われます。ちなみに2SC1815と2SA1015は新規設計非推奨だそうで。
LEDの電流制限抵抗は皆さまで適当に付けて下さい。無くてもまぁ燃えてませんが…。
☆LEDの実装は任意です。一つしか使わない場合は一つでも構いません。
☆TD62083APGはNPNダーリントントランジスタアレイです。2SC1815等の通常のNPNトランジスタでも代用出来ますが、多チャンネルの場合実装面積が増加します。1chしか使わないような場合は2SC1815でも構いません。
☆作者はSW1とD1にLED付き押しボタンスイッチを使っています。
☆送信時、PB2からはPB1の逆位相の38kHzの搬送波が出てきます。

○PaaS図面

☆左が表、右が裏です。PaaSで書きました。
☆コンデンサは他にも付いています。
☆1番上のチップはAE-UM232Rです。USBコネクタを上に向けています。
☆真ん中のソケットにはATmega328が入ります。右下はTD62083APGが入ります。
☆その下のピンヘッダはLEDを挿すコネクタです。寝惚けていたので実装では一段ずれています。
☆その下のTFN59-54の文字の上辺りにあるコネクタは電流制限抵抗を挿す所ですが、作者は回路図通りショートしています。
☆ATmega328の左下の6pinのピンヘッダはISPコネクタです。その下の4pinのピンヘッダは意味がありません。回路図通り作る場合はPB1側をショートするように使って下さい。

○実装例

 

☆ハンダ付けが汚いのは仕様です。
☆ケースと基板が最も高額です。

●ダウンロード

本体:NewOPRS2v20b20101212-0001.zip

中身はHEXファイルなので適当に焼いて下さい。AVRISP mkIIのAVR Studio 4 SP3におけるヒューズビット等は以下の通りです。
フューズ
名前 備考
BODLEVEL Brown-out detection disabled
TSTDISBL OFF
DWEN OFF
SPIEN ON AVRISPmkIIで焼く場合は必須
WDTON OFF
EESAVE OFF
BOOTSZ Boot Flash size=2048 words start address=$3800
BOOTRST OFF
CKDIV8 OFF
CKOUT OFF
SUT_CKSEL Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 16K CK/14
LockBits
LB No memory lock features enabled Default
BLB0 No lock on SPM and LPM in Application Section Default
BLB1 No lock on SPM and LPM in Boot Section Default

 AVRのライターは様々なものがありますが、作者はAVR Studio 4&AVRISPmkII以外での焼き方を知りません。

●出てきそうな疑問と答え

Q.既存のシステムとどこを書き換えれば動くの?
A.2chまでしか使わない場合はボーレートとデータファイルサイズの指定を書き換えるだけで動きます。3ch以上使う場合はチャンネル送信方法を書き換える必要があります。

Q.ダイキンのエアコン以外の赤外線リモコンも学習できるの?
A.作者の扇風機と照明は出来ました。他の機器は持ってないのでわかりません。

Q.ATmega328使ってるけどATmega88とか168では動かないの?
A.SRAMが1KBあれば動くと思いますがわかりません。ATmega48ではSRAMが足りません。

Q.20MHzで動かせばPC-OP-RS1と同じ115200bps出せるのに、なんで10MHzで38400bpsなの?
A.20MHz動作には4.5Vの駆動電圧が必要です。しかし作者のP5Qちゃんは生まれつきUSBが弱く…。
A.正確に言うとこれのプロトタイプであるVer.1.0が10MHzだっただけです。10MHzなのはタイマの計算が楽だからです。

Q.なんでPB2からは逆位相の搬送波が出てるの?
A.回路図では2SA1015を使ってラインからLEDに電力を供給していますが、試作時はブレッドボード上でPC0-4から、PB2をベース入力とするNPNトランジスタ経由で直接LEDをドライブさせていました。これはその時の名残です。1chしか使わないような方はPB2を使ったほうが楽です。PB1とPB2はアイドル時GNDに落ちているはずなので2SA1015等のPNPトランジスタでドライブすると多分ショートします。

Q.クライアントは?
A.そのうち公開します。というか、既存のを改造すれば使えると思います。

Q.OSX、OS9用のクライアントは無いの?
A.ありません。OSX用は作者が環境を持っていないのでありません。9用はREALbasicで直接FTDIのシリアルを叩けないためありません。

Q.Linux・BSD用は?
A.そのうち公開する拙作のDevote Stationをご利用下さい。

Q.回路図、PaaS図面の元データorソースくれ
A.配付するような体になっていないので…

Q.PaaS用のタカチ TFN 59-94の基板ファイルはどこにあるの?
A.作者オリジナルです。こちらからどうぞ。

Q.すげぇ回路が初心者臭いんだけど?
A.初心者から初心者臭がするのは当然です。

●参考にしたサイト、関連サイト等

TopHome