|
短信。
チャチャッと試してみる、の続き。 受信した信号から送信信号を作って送信してみる。 肉眼では見えないのでデジタルカメラ越しに確認。オリジナルのリモコンと似たような感じで点滅している。とはいえ、ミリ秒の世界、どっちにしても肉眼では確認できない。 赤外線LEDをDVDプレーヤーの受光部に近づけて試してみる。 ・・・反応がない。 点滅の感じはオリジナルと似ているが、明るさが全く違う。1.5V×2本のリモコンよりもずっと暗い。CMOSタイプの555を使ったので電流量が足りないのかもしれない。 赤外線LED自体の性能かもしれない。 ひょっとしたら、信号波形自体が間違っているのかもしれない。 あーオシロがほしいなあ。 ん? 赤外線LEDの信号をもう一台のMSXで受光すれば分かることだろう? こりゃ一本とられましたわい。 ということで、本日はこれまで。 |
デフォルト
-
詳細
コメント(0)
|
短信。
ふと思いついて、チャチャッと試してみる。 555のリセット端子を抵抗を介してプルアップしておく。 ここにMSXの汎用ポート8ピンからHIGH/LOWの信号を送り込む。 LOWになるたびにリセットがかかり、38kHzの発振が止まる。 ただし完全に止まるのではなく、1kHz以下の低い周波数で発振を続けている模様。 何故こうなるのかは分からないが、目的は一応果たせるものと思料する。 あとは発信側のソフト作成が残るが、まだ思案中。 受信時と同等のスピードで送信するためには、送信中は条件分岐などの余計な処理はせず、送信に専念する必要がある。 とすれば、受信したデータを送信に適した形に前処理しておく必要がある。 出来るだけ面倒でない方法を考えたい。 少々回りくどくても面倒でないほうがいい、などと考え始めるのは危険な兆候である。 今日はもう寝たほうが良さそうである。 おやすみ。 |
|
信号の受信ができれば、次は送信したくなるのが人情であろう。 というわけで、寄り道ついでにどんどん分け入ってしまう。果たして、オシロスコープの本道に戻ってくる日は来るのであろうか。 ■しばし黙考 受信では簡単に信号を捕捉できたが、これも受信モジュールあってこそ。 そこらじゅう飛び交っている赤外線から意味ある信号を選択し、38kHzのキャリア成分を取り除くところまで、モジュールは処理してくれた。 しかし送信については便利なモジュールは存在しない(あるかもしれないが了知しない)。 キャリアを生成し、これに信号を乗せる部分を自前で処理しなければならないが、非力なMSXにとって至難のワザ。 どうするか? ■キャリアの生成 キャリア生成は外部に任せ、MSXはキャリアのON・OFFで信号を乗せることにする。キャリアの生成にはPIC、を我慢して555を使用する。タイマーICの555については今さら触れるまでもなかろう。 まず、Excelで抵抗値及びコンデンサ容量から周波数を計算してみた。たまたま手元にあったコンデンサが0.01μFだったので、これを前提に周波数が38kHzに近似する抵抗値を求めた。(右図) 発振回路は至極簡単、と言いたいところであるが、WEBを見ながら適当に組んでみると、どうも不安定である。無安定発振というのは聞いたことがあるが、不安定発振は具合が悪い。 おんや?と思って電源にパスコンを入れたら、あっさり安定した。「Cには間違ってもセラミックではなくフィルムコンデンサを使うように」などと書く前に、電源を確保したまえ、そこのキミ。 ん?パスコンの記載省略は常識?すんまへんな。 中途半端な抵抗値であるが、こんなこともあろうかと多回転半固定抵抗を用意していてよかった。適当に調整して38kHzになったところで記念撮影。(右写真) ちなみに多回転半固定抵抗は「高い点はんこ亭抵抗」と変換された。どんなんや? NECフォーマットでは、キャリア周波数について±5%の誤差は許されるとのことなので、温度ドリフトはこの際、無視してよかろう。 また、デューティ比が2:1になっているが、どうせ受信モジュールはエッジ検出と決め付けてイージーゴーイング。555でGOGOGOというわけである。(これを言いたかったのが555のチョイス理由。) ■まとめ さて、キャリアにどうやって信号を乗せるのか。汎用ポートの8ピン出力は確定であるが、そこから先は実はまだ何も考えていない。 555のピン操作? ANDゲートでAND? フォトカプラで555の電源をバチバチする? アホなことを考えている時間が至福のときである。先は長い。ゆっくり行こう。 |
|
前回取り込んだDVDプレーヤーの赤外線リモコンの信号について、もう少しいじってみる。 ■おさらい 2008年8月2日付け「Mii(5)」で、赤外線リモコンのデータ・フォーマットについて調べていた。一度おさらいしておく。 家電品などの赤外線リモコンのデータ・フォーマットの主なものとして、「NECファーマット」と「家製協フォーマット」があり、両者はよく似ている。「家製協フォーマット」は緩やかな規格であり、各メーカーが適当に拡張しているのが現状らしい。また、これらのフォーマットに全く準拠していないメーカーもある。 とりあえずNECフォーマットは次のとおり。 フォーマット全体は108ms。リーダ・コードHIGH9ms、LOW4.5ms、カスタム・コード16ビット、データ・コード8ビット+反転8ビット、フレーム・スペースストップビットHIGHのあと残りをLAWで埋める。 ■データ修正 取り込んだ信号データに若干手を加える。 (1) 赤外線受信モジュールの出力は負論理のため、正論理に反転し、送信された状態の信号に戻す。 (2) リーダ・コード、カスタム・コード、データ・コード、フレーム・スペースとおぼしき部分に分割する。 (3) 長いリーダ・コードとフレーム・スペースは、「0」又は「1」の個数を示す。 (4) カスタム・コード部分とデータ・コードは、信号パターンが「0」か「1」のどちらかを示す。 こうして作成したのが右図である。 ■データの解析 今回のリモコンのデータ・フォーマットは、NECフォーマットによく準拠しているように思われる。 カスタム・コードの16ビットはオーソドックスな作法に倣い、8ビット+反転8ビットとなっている。データ・コードも8ビット+反転8ビットとなっている。 このリモコンの電源ボタンは、カスタム・コード「F5H」データ・コード「3DH」の組合せと、カスタム・コード「C5H」データ・コード「99H」の組合せを交互に送信している。この理由は今のところ不明である。 ■まとめ カスタム・コードやデータ・コードの先頭の「11111」の部分はNECフォーマットでは0.5625msとされている。従って、「1」ひとつ分はおよそ0.1msに相当する。今回のデータ取り込みプログラムの分解能は、約0.1msということになる。 それにしても、見えない赤外線リモコンの信号が見えてくるのは楽しい。家中にゴロゴロしているリモコンの信号を調べてみよう。 原理的には、取り込んだ信号を38kHzのキャリアに乗せて赤外線LEDで送信すれば対象機器が動作するはずである。MSXで学習リモコンも可能なはずである。そのうち試してみよう。 |
|
例によってステート数を数えてサンプリング・レートを算出しようと思ったが、面倒だ。 この際、以前から考えていたことを試してみる。 ■赤外線受信モジュール 随分以前に入手して放置していた赤外線受信モジュール、PL-IRM0208-A538。 以前調べたように、家電リモコンでは38kHzのキャリアを用いてPPM変調により信号が送出される。 この受信モジュールは、キャリア成分を取り除き、信号を復調して出力してくれる。足が3本あるが、2本は電源で、信号線は1本のみ。それぞれ汎用入出力ポートのGND、5V及び1ピンに接続する。(写真1) ■信号取り込み とりあえず手近にあったパイオニアのDVDプレーヤーのリモコンを材料とする。 電源ボタンを押しながらノーウエイトで取り込み。受信バッファは4KBに拡張している。 なんとなく規則性のある信号が得られた。(写真2) リモコンの信号は、HIGH状態が9ミリ秒続くリーダ部から始まるが、あいにく汎用ポートの入力ピンはプルアップされているため、リーダ部の見分けがつかない。その代わり、末尾にLOW状態が34ミリ秒続く部分があるので、これを手がかりとする。 「0」が40個以上続く部分があり、これを先頭に改行、余分な部分を削除すると4行分のデータが得られた。(写真3) 「0」と「1」の一定の組合せを「T」と「−」に置き換えてみた。ちなみに「T」と「−」は、ビジュアル的な見分けやすさで選択、特に意味はない。結果はご覧のとおり。4行の文字列に収束した。1行目と3行目、2行目と4行目が同じパターンになっている。なぜこうなっているのか不明であるが、電源ボタンはひとつなのでON/OFF信号をまとめて送信し、受信側で動作を判断しているのかもしれない。(写真4) ■まとめ 赤外線リモコンの信号解析程度には役立つことが分かった。 気を良くして、当分、オシロまがいで遊んでみようと思う。と言いつつ飽きっぽいので、他のことしようかなとも考えている。感心するほどの飽きっぽさに我ながら感心する今日この頃である。 |



