オッサンとバイエル、ピアノ等コンテンツへスキップオッサンとバイエル、ピアノ等コッチへ引っ越した。JSTLEDを強力に光らせることが出来たので、いよいよWebサーバつき多機能リモコンを作成する。卓上などに置いておき、ネットワークにつないで、スマホなどから複数の電化製品を操作できるというものだ。ここでは、いくつかのテクニックを使った。一つは、フォームが大きくなってしまい、ハードコーディングするとメモリが足りなくなる。そこで、SDカード内にHTMLを置き、これを読み出すようにした。同様に、リモコンから読み取った数値データが大きくなって、普通にハードコーディングしたのではメモリが不足する。そこで、「PROGMEM」というキーワードを使って、フラッシュメモリ内にデータを置き、これを読み出すようにした。SDカードを取り付けられるから、そこにHTMLを書き込んでおけばよい。FETをつけたブレッドボードと一緒に、買っておいたSparkfunの基盤に固定する。SDカード内には、次のようなHTMLを置き、ファイル名を「irform.htm」とする。</body></html>上のHTMLの見た目はこんな感じだ。スケッチは次のようになる。リモコンをウェブで操作する。}勿論、ただのWebであるから、このようにスマホの他、タブレットなどからも操作可能である。ルータでポートフォワードすれば、外出先からの操作も可能である。JSTさて、前回のこのエントリでは、赤外線LEDでリモコンを作る基礎が整ったが、50mA定格のLEDに5mAしか流していないので、いまいち光り方に根性がなく、電気製品の受光部にかなり近づけないと厳しい。そこで、どっぷり50mA近くまで電流を流し、赤外線LEDをして「ご主人様もうお腹いっぱいゲフォア」と言わしめたい。運よく、以前にソレノイドを動かした時のFET「2SK2232」がある。50mA近く流すには......ということで、100Ωかましてやればいいが、ちょうど100Ωの抵抗は持っていない。330Ωがあるから、これを3本並列にして110Ωに5V流せば......というわけで、じゃぶじゃぶ流せる。2SK2232のドレイン電流は25Aなので、余裕でオッケーである。いうわけで、回路図とブレッドボードはこうなる。スケッチは前回と同じでいい。動かしてデジカメのモニタで観察すると、もう、ビカビカにLEDが光る光るッ!。そんなに受光部に近づけなくても、ばりばり扇風機のスイッチがオンオフできるようになった。JST他の方のサイトでも、赤外線LEDを買ってきてArduinoで便利なリモコンを作る、ということをやっているので、私も真似したく、赤外線LEDを買ってきた。秋月電子の製品ページ赤外線LED「OSI5LA5113A」スペックシート10個も入っていて100円である。受信機はこの前800円で買ったリモコンと受信モジュールのセットがあるから、これでよい。この赤外線LEDは50mA流す規格なので、20mAしか流せないArduinoで光らせるには少し大き過ぎる。1kΩばかり抵抗をつけて5mAくらいにする。暗くてリモコンが反応しないのじゃないかな、とも思ったが、受光部に近づければ大丈夫だ。デジカメで観察するとかなり暗い。したものを組み立てるのなら、FETなどでリレーして、他の電源から50mA流したほうがいいだろう。今回は遊びなので、5mAで光らせる。先達のサイトでは、スクラッチビルドのコードで市販のリモコンの信号を受信し、ミリ秒単位でオンオフ時間を計測して記録し、その通りに赤外線LEDを光らせてうまく行っている方が多いようだ。Arduinoには、「IRremote」というライブラリをGitHubで公開しておられる方がいるので、これを使えば簡単である。GitHubのページからzip玉をもらって解凍し、できたディレクトリ(IRremote)をArduinoのインストールディレクトリの「libraries」の下にコピーすればよい。今日は私の家のリビングの扇風機のリモコンで試してみよう。リビングの扇風機のリモコン信号をコピーしてテストするには、ライブラリをインストールするとできるサンプルスケッチのうち、「IRrecord」というのを使う。コマンドメニューは「ファイル→スケッチの例→IRremote→IRrecord」と辿る。これは、「1回こっきりの学習リモコン」のスケッチだと思えばよい。市販のリモコンを受信して記憶し、次いでボタンを押すとそのままそっくり信号のコピーを赤外線LEDから送出するスケッチだ。赤外線LEDは1kΩの抵抗と直列にしてデジタル3番ピンに、受信機は11番ピンに、タクトボタンを12番ピンにつなぐ。タクトボタンの入力側は10kΩの抵抗できちんとプルダウンしておくのが行儀がいい。しないと、手を触れたくらいのことでスイッチが入ってしまう。ブレッドボードが出来たら、使いたいリモコンを受信機に近づけ、ボタンを押す。それから今度は、ブレッドボード上の赤外線LEDを電気製品に近づけ、タクトボタンを押す。コピーされた信号が送出され、扇風機が動く。これで、ハードウェアは正しく動くことが分かったので、今度は単純にデータをハードコーディングで配列に書き出し、これを送出して扇風機のスイッチをオンオフさせる。それにはサンプルスケッチの「IRrecvDumpV2」を使う。今度は受信機を6番ピンにつなぎ換え、シリアルモニタを起動してデータを観測する。すると、そのまま使える形の配列の初期化定義の格好でダンプが出てくる。これをクリップボードにコピーして、今度はサンプルスケッチの「IRSendDemo」にペーストし、送出してやればよい。ところが、ここでハマッた、ハマッた。そのままではうまくいかないのである。はじめ、私の扇風機では、「IRrecvDumpV2」のダンプはこうなった。1FB3782Dそこで私は、この「rawData[69]」をコピペし、次のようにした。}}ところが、これではまったくダメなのである。最初は赤外線LEDの電流が足りないのかなあ、などと思い、半日ほどあっちこっちをいじくりまわして、ダメだった。「IRrecord」での丸ごと信号コピーはうまく行っているのだから、電流が足りないわけではないらしい。そこで、「IRrecord」のダンプ部分にコードを書き足し、「sendRaw()」関数にどんな値を渡しているかを見てみた。}そうしたら、どうも、ダンプされた値の50倍が渡されているらしい。4400,2250,550,600,500,600,500,600,500,600,550,1700,500,1700,500,1750,500,600,400,1800,550,1700,500,1650,550,600,550,1700,500,600,500,600,550,600,500,1700,550,550,450,650,550,600,500,600,500,600,450,1800,550,550,550,550,550,600,500,1700,550,1650,550,1700,500,1700,650,500,500,600,500,0,そこで、「IRrecvDumpV2」のダンプ出力部分を次のようにカスタマイズした。FBB100E8......となる。この先頭の「24324」は送信前の空き時間なので、捨ててよいようだ。「IRsendDemo」のほうにこれをコピペし、先頭の24324は消す。}}これで、赤外線LEDを扇風機に近づけ、シリアルモニタの「送信」ボタンをクリックすると、扇風機がオン・オフされる。ブレッドボードは結局、最後はこんな感じ。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。%d人のブロガーが「いいね」をつけました。