学習リモコン作ってみた

「DIP品は高専で卒業だ!」という声が聞こえてきたので、表面実装にチャレンジしてみた。
Tiny13VのSOICパッケージを見つけて、この程度(8ピン1.27mmピッチ)なら練習にちょうどいい!と思って購入。
FT232Rを使ってみよう、という話もあったので、一緒にこれも買ってきた。

せっかくだから、この二つを組み合わせて何かつくってみよう!
FT232Rとの通信に2ピン。電源で2ピン。リセット端子が1ピン。残りは3ピン。
さあ、この3ピンでPCと通信してできる面白いこと・・・なんだろう?

で、思いついたのが、学習リモコン。
これなら赤外線の送受信2ピンあればできそう。


そんなわけで作ってみました。
f:id:shogo82148:20110117072451j:image
f:id:shogo82148:20110117072056j:image
あまり綺麗じゃないのは、半田付け1,2年ブランクがあるのと、表面実装初挑戦なのでご勘弁ください。
表にある足いっぱいのICがFT232R。裏のちっこいのがattiny13V。
赤外線LEDとリモコン用の赤外線受光器がついています。

回路図はこんな感じ。
CAD用のライブラリを探すor作るのが面倒だったので、手書きです。
f:id:shogo82148:20110117072230j:image

手元にヘッダーピンが無かったので、プログラム書き込み用のISP端子は省略。
えっ?書き込みどうするの?
ライタが無くてもいいように、FT245R/FT232R で avrdude (2) (すzのAVR研究)の情報を元にFT232Rをライタとして活躍してもらうことにした。
ライタのタイプとしてft232r0を指定することで、別にライタを用意しなくても書き込み可能。

いや〜便利便利
実行時にCTS#を使ってフロー制御(attiny13VにはハードウェアUARTが無いのでソフトウェアUART。適当なタイミングで送られると困るんです。)したかったら、RTS#-PB2間に抵抗を挟んでみたけど、少し大きすぎたかな?時々書き込みに失敗する。手元にこれくらいしかなかったから10kにしたけど、ここの値は要検討。

そして、このままだと、FT232RのDTR#ピンがターミナルの起動と同時にLowとなるので、マイコンリセット・・・これじゃ通信できない・・・。
が、これもFT232Rなら簡単に解決。
そこで、FTDIのユーティリティダウンロードページからFT_PROGをダウンロード。起動してFT232Rと接続して、「Invert DTR#」にチェックをいれると、極性が逆になります。
ここでの設定はライタとして使う際に使用するBitBangモードとは無関係みたい。反転させていても、ライタとして正常に機能しました。



ターミナルを起動し「r」を押すと、受信開始。この状態で、リモコンを使うとターミナルに受信した信号が流れてきます。下の画像は部屋にあるSharp AQUOSの電源ボタンの解析結果。
f:id:shogo82148:20110905205045p:image
ハイフンとアンダーバーが沢山並んでいますが、よく見るとアスキーアートっぽくなっているのが分かりますかね。「_」が受光部の出力がLow=赤外線が当たっている、「-」が出力High=赤外線があったって無いを表しています。一文字が400usに対応。この長さは設定で変えられます。
何かキーを押すと停止。

メモリの関係で、記憶できるキーは一つまで。「s」と入力したあとに、さっきのハイフンとアンダーバーの羅列を入力しエンター。「x」を押すと送信。

AVRのプログラムとC#で組んだ簡単な通信プログラムを上げといたから、詳しい使い方はソースを見てね!
miniir.zip


制作費は
・FT232R \420
・attiny13V \195
・赤外線受光素子 \168
・USB端子のついた線 \100
・ユニバーサル基板 \60の1/5位
・赤外線LED \52
・抵抗 \50
でだいたい1000円くらい。日本橋で揃えたら割高な印象。秋月で買うともう少し安くできるかも。

・表面実装なんて簡単簡単
・FT232RはUARTで通信できるのはもちろん、ライタにもなるすごい奴
FT232RをSHの書き込み・通信に使おう!とか話してたけど、AVRの書き込み・通信までできちゃうなんて・・・


ところで、こんなのを作っている人がいましたね→インターネット扇風機を作ってみた
いつの間にか、先生になって娘がいることになってる・・・。

今回作った学習リモコンで同じことができそう。
そうだ、あと教室のエアコン制御にも使えるぞ。鞄にパソコンを忍ばせて、受光部だけ先生の持っているリモコンに向ければ・・・

なんか面白いことができたら、また報告します。