2011年9月 5日 (月曜日)

沈黙の赤外線解析リモコン(最終回)

ようやく沈黙を破ってリモコンとしての役目を果たしたのもつかの間、NECフォーマットの機器に全く取り合ってくれず、またしても原因究明モードの赤外線解析リモコンの続きです。

Ir

ここで再び、UART経由で信号の状態などを見てみますが、やっぱり相変わらずのじゃじゃ馬ぶり。繋いでいる回路が悪いのか、何故かUARTを繋ぐとかなりの確率で、電源を入れた途端に(リモコン信号を送出しなくとも)「学習開始」のLEDが付いてしまいます。おそらくノイズでも乗っているんだとは思いますが詳細は不明。

そして実際のリモコン信号を学習させても家電製品協会フォーマット(以下家電協フォーマット)のリモコンのはずなのにNECフォーマットになったり家電協フォーマットになったりとフラフラ。正直表示があてになりません。

と言う事で、結局ロジアナに頼ります。波形を見る限り、概ね問題なさそう。唯一おかしなところと言えば

なぜがリーダの信号のOnの時間が異常に短い

くらいです。具体的には学習元のリモコンの1/4と言ったところ。とにかくここを何とかすればヨサゲです。

とは言うものの、「なんでこうなるの?」と言われるとサッパリ原因がわかりません。まぁ「動きゃいいんだろ?」とNECフォーマットのリーダ部Onの時間を決める変数の値を4倍するコードを書くのは簡単ですが、やっぱり理屈が伴わないとすっきりしないのでもう少し粘ります。

ふと書籍に載っていた「UARTで接続してNECフォーマットの信号を受信した時の画面」が目に留まりました。この画面ではir_readhは140になっています。これが規格通りの値なら

ir_readh = 140 → 9ms

となるはずです。
んで、この作例のプログラムではこの値を加工してir_shotと言う関数に渡すのですが、その時のロジックが

623倍してから256で割る

です。8bitマイコンならではの帳尻合わせの処理なのですが、仮に上記の値で計算すると

140 * 623 / 256 = 340(小数切り捨て)

ここで違和感を覚えます。「あれ、ちょっと待て。計算後の値を格納する変数の型なんだっけ?」と確認すると

char…

そうです。オーバーフローしてました。上位が切り捨てられて

340 - 256 = 84

となっていた模様。本来のデータと比較をすると

340 / 84 = 4(小数切り捨て)

1/4の理由がわかりました…。

データ型を見直せば最良なのですが、この変数(ir_readh)があちこちで基準となっていたのを理由に上記のとおりのコザカシイ修正で対応をした結果、手持ちのリモコンは全戦全勝と言う素晴らしいモノに仕上がりました(ちなみに著者の方は「失敗する原因はよくわかりません」「半分は成功していますから、これをもって完成とさせてください」と敗北宣言してますが、まぁ色々とお忙しかったのでしょう)

…ここまで長かった。ブログに載せるまでにかなりタイムラグがあったのですが、G.W.直前あたりから着手していて、全戦全勝確認できたのが7月下旬だったのでかれこれ3ヶ月近く。追加の設備投資(ロジアナ購入)も行った結構なプロジェクトになってしまいました(まぁ原因さえ分かってしまえばコードレビューで分かる程度の問題ではありましたが)。

つーか、最初の作例がこれってのはどうなんでしょうね?相変わらずサポートページにも言及が無い様ですし。この機会に進言してもいいのですが出版されてからもう2年経ってますしね。

と言う事で「PICとC言語の電子工作」の最初の作例のせいで「PIC('A`)マンドクセ ヤーメタ」となってしまう事を阻止すべく、「赤外線解析リモコン 動かない」で検索できるようにここに書いておきますw(さっき「赤外線解析リモコン 動きません」で検索トップに出たけど検索するなら「動かない」でしょうからね)。

あと、最初の作例で挫折した方へ朗報。この本の2番目の作例(デジタル電圧計)はサンプルが一発で動きますので売り払う前にちょっと試してみてください。まぁ、PIC12F683じゃなくてPIC16F88なので新たに買わないといけませんが(地方在住者はここが一番イタイかも)。

と言う事でこのシリーズは一旦終了です。

| | コメント (0) | トラックバック (0)

2011年9月 4日 (日曜日)

沈黙の赤外線解析リモコン(その2)

さて、UARTでデータを覗いてみれば一発で解決するかと思われた赤外線解析リモコンですが、却ってワケワカラン状態となってしまった前回。その後の顛末を記します。

結局、埒があかないのでロジックアナライザを導入する事にしました。前々からオシロも含めて「欲しいなー」と思っていた機材の一つでしたがついにその時が来たようです。まぁ、そんなに大それたものは買えないし、買っても使いこなせなかった(\(^o^)/オワタ)となっても困るので、入門機にはちょうどいいであろう、ZEROPLUSのLAP-C(16032)をチョイスしました。

購入後しばらくは使い方に戸惑い、若干の失敗(試しにやってみたUARTのbaud rate設定の仕方が分からなかった)も経験しつつ、ようやく慣れてきたところで検証再開です。まずはリモコン信号の受信センサに電源供給するだけの回路を作り、プローブを受信信号端子にかませてリモコン本体の信号を取り込みます。その後、解析リモコンに学習させた信号も取り込んで両方を比較します。

すると、「リーダとトレーラ部以外のデータは完璧」と言う、「なんだそりゃ?」的な結論が出ました。
もっと具体的に言うと、

  • リーダ部はLレベルの時間がとにかく短い
  • トレーラ部は…なんと、それらしい部分がありませんでした。

とりあえず場当たり的に、リーダ部のLレベルの時間を目測で対比し8倍の値にセット。トレーラ部はそもそも実装が無かったので追加。この2点を修正してから再度動作確認をするとようやく動作!試しにアサインしたTVの電源が付きました。ここまで来るのが長かった…。

しばし感慨に浸ってから改めてソースコードを振り返りますが、トレーラ部は「言われてみれば無いよねー」と華麗にスルーしてました。リーダ部もよくよく見ると、リーダ部の検出後に時間カウント用のタイマ分周比を変更(8bitタイマと言う事もあり、余裕でカウントオーバーフローしちゃうので最長にしていると理解)しているのですが、信号学習後の実際の送信時に分周比を戻していない!こりゃ上手く行く筈がありません。ちなみに分周比の変更前/後の比はちょうど8:1で、上記の目測の根拠はここにありました。

さて、これで一仕事終わりと行きたいところだったのですが、まだ一部のリモコンの信号しか学習出来ていません。具体的には手元にあるパナソニック製品(CATVのSTBとTV)と照明のリモコンくらい。その他の東芝製DVD&HDDレコーダやエアコン、車のオーディオやナビのリモコンは一応学習はする素振りを見せるものの、学習したデータがおかしいor送信の仕方がおかしいのか、機器が信号を全く受け付けてくれません。書籍では「勝率は50%でしたがまぁこんなもんでしょう」的記述もあるのですが、何かが引っかかりますのでもう少し粘ってみます。

現状分析すると、上手く学習出来るリモコンの信号は前回導入したロジアナで見る限り、いわゆる「家電製品協会フォーマット(以下、家電協フォーマット)」の様で、学習出来ないリモコンの信号は家電協フォーマットと双璧をなす「NECフォーマット」の様です(他にSONYフォーマットもあるんですが、この作例のプログラムでは最初から未対応を表明しているため、今回は除外とします)。

と言う事で、再び原因の究明モードに入るところで次回へ続く。

| | コメント (0) | トラックバック (1)

2011年7月26日 (火曜日)

沈黙の赤外線解析リモコン(その1)

またブランクが空いてますが気にせずwに前回の続き。

さて、購入したPIC本「PICとC言語の電子工作」の最初の作例である、「赤外線解析リモコン」を実際に作って試してみたのですが、とにかく動きません。テレビとCATVのSTB(共にパナ製)を始め、エアコン、照明、カーステ、カーナビのリモコンと試しましたが全滅でした。いや、決して無反応というわけではなく、リモコンを向けてボタンを押すと、学習中である事を示す赤色LEDが点灯します。このもどかしさといったら…。

で、原因究明ですが「まぁ、どうせ自分がどこかでしくじっているんだろう」と楽観的に

  • 回路は問題無いか?
  • コーディングの転記ミスは無いか?

を確認してみたものの、コードのミスを1カ所(デバッグ表示用で使うUARTのタイマ設定値)を見つけたくらいで、他は何も見つかりません。そうこうしている内に、書籍の付属CD-ROMにソースコードが収録されている事を思い出し、さっそく収録のソースと自身のソースをWinMergeで比較するも、一字一句同じで問題無しと言う結論となりました。頼みの綱的にインターネット上の公式サポートページを見るも、該当する記述も見つかりません。

多分、これが初めての電子工作&マイコンプログラミングだったならばこの時点で挫折は必至だったのでしょうが、まだ手詰まりではありません。この作例ではUART経由で学習データの確認が出来る仕様になっているので、大分前に作ったiTAX-irDA用の書き込みケーブルと繋いでTeraTermに表示をしてみます。これで進展するかと思いきや、

  • UARTを繋いだ状態で電源を入れるとかなりの確率で勝手に信号受信動作をする
  • 受信するデータがコロコロ変わる。同じリモコンの同じ信号でもNECフォーマットになったり、家製協フォーマットになったりで不安定

と、却ってワケワカラン状態に陥ってしまいました。さぁ、いよいよ手詰まりか?と言うところで次回へ続く。

| | コメント (0) | トラックバック (0)

2011年6月 4日 (土曜日)

今更ながらのPICデビュー!だがしかし…

前回(昨年9月)からは超久々のエントリです。このブランクの間に人生のロール(役割)に「親父」が追加されましたw。そんな中、タイトルにもあるように、ようやくPICマイコンデビューをしたのでその辺りの顛末を書いてみようかなと思います。

マイコンプログラミングに触れたのはかれこれ3年前のFRマイコンが最初だっただけに「今更PICやるのかよw」って感じです。でも正直敷居高かったんですよ。巷の書籍は大分前から店頭で立ち読みしつつも、付随する電子回路も作らないといけないのがネック(住んでいる土地柄、部品購入が難しい)だなーと思っていて、なんと言ってもライターが結構高い。マイコン本体が百円台から買えるのにライターが数千円なんて!と思っていました。

まぁだからこそ、雑誌付録のマイコン基板の存在を知った時は嬉しくて飛びついちゃったんですよね。USBコネクタ等の実装が必要かつ、別売りだったのは盲点で一瞬ひるみました(しかも支払い方法が代引のみ > 実は代引嫌いw)けれども、それでも「ライター要らず」な事、しかもDSub9pinのシリアルコネクタじゃないと言うのはアドバンテージでした(自宅にはレガシーポートを持ったPCがすでに無い)。

そして、最近の付属マイコン基板はこういった参入障壁すら減らすべく、USBコネクタも実装済みで、LEDチカチカやるだけならUSBケーブル以外の追加購入が不要になっていますね。「良い時代だなー」としみじみしておりますw

そんなこんなでPICを避けて通っていた私ですがやっぱり「PIC触ってみたい」と言う好奇心には勝てず、地味に準備をしていました。PIC本買ったのが2年近く前、PICライターとPICマイコン買ったのが今年の2月。途中、震災を挟んで4月始めにLEDチカチカデビューと言う牛歩戦術を展開して、ようやく入り口に立つ事が出来ました。

そして、G.W.直前あたりに購入した本の最初の作例である「赤外線解析リモコン」にチャレンジしたのですが、回路&プログラム作って書き込んで動かしてみるも、動かないではないですか…早くも挫折フラグが…といった所で次回に続きます。

| | コメント (0) | トラックバック (0)

2010年9月23日 (木曜日)

ウクレレピックアップ作ってみた(その2)

さて、前回の続き。

386bd

OPアンプに386BDを使ったバージョンですが、一番困るのが電源。前回のHT82V739の様に、3vのボタン電池(CR2032)では駆動できません。二個重ねて6vも大げさだし、そのようなタイプの電池ホルダーも持っていません(そもそもあるんだっけ?)。LR44x3で4.5vも考えましたが、やはり手元にホルダーは無し(ホルダー作れなくも無いけど)。

そんな中、ジャンク箱を漁っていると、某アミューズメント施設で配布していた景品(会社の後輩から受領)が目に留まりました。これは電源にLR41(LR44を二回りくらい小さくしたもの。電圧は1.5v)x3を使用しているので386BDの駆動もOKです。試しに電池ホルダーの+−間の幅を計るとユニバーサル基板の間隔にもピッタリでした。

さっそく、金具を拝借して基板上に仮置きしてみたのが冒頭の写真。ジャックは3.5mmのミニジャック(ステレオ仕様ですが、モノラルで使用してます)にしました。回路自体はデータシートに載っているリファレンス回路そのままです。

Lr41x3_2

386bd_4

完成したのがこちらの写真。基板が細長い(他の工作で使った基板の切れ端を使用)のがかえって幸いして、ちょうどテープで留めやすくなってますw。ミニジャック用のケーブルの重さも粘着テープの強度で十分な様でした(これを使って演奏動画を撮りましたが、撮影中に外れる事もなし)。最初、電池ホルダーを裸で使っていたのですが、うっかりすると電池がバラけてしまうので、先の景品の電池カバー部分だけ拝借してかぶせました(左が電池蓋を外した状態。右が付けた状態)。




んで、エレキ仕様のウクレレで撮影した動画がこちら。

この時点ではまだ電池カバーをかぶせていません。位置もちょっと変えました。音は写真を見ても分かるように、UA-3FX経由でPC上に録音したものにコンプかけてます。デジカメのマイクで録った生音でも十分な音量は出ているんですが、ま、今回の製作の主旨を考えるとそれじゃ意味無いじゃん!って事でw。

それよりなにより「演奏してみた」動画初投稿だったんですが、撮影が大変でした。1分半の短い曲ですが、後半になると体力切れでカッティングのリズムが狂ったりして、休んでは撮りの繰り返し。数を重ねれば却って疲れてミスするしで、やっぱり普段からの練習がモノを言うなぁと実感。ま、せっかく作ったのでレパートリー増やして色々弾いてみたいです。

てな感じで「ウクレレピックアップつくってみた」でした。

| | コメント (0) | トラックバック (0)

2010年9月12日 (日曜日)

ウクレレピックアップ作ってみた(その1)

Photo

前回のLoveAmpとほぼ平行して、ウクレレをアンプで鳴らせるようになる(つまり、エレキウクレレになる)ピックアップも作っていました。当初、エレキジャックNo.15に掲載されている武蔵野電波さんの作例と同じ物を作ってみようと思って着手したのですが、途中で試行錯誤を経て、最終的にオリジナル(回路自体はデータシートのリファレンスそのままですが)なモノになりました。その辺りの経緯も含めて書いていきます。

続きを読む "ウクレレピックアップ作ってみた(その1)"

| | コメント (0) | トラックバック (0)

2010年9月 6日 (月曜日)

LoveAmp作ってみた

ご無沙汰しておりました。この3ヶ月ちょっとの間は何かと本業に精神力を吸い取られ気味で、エントリ書くまでに至りませんでした(ちなみにTwitterはそれなりのペースでつぶやき中です)。

まぁ、この3ヶ月間何もしていなかった訳でも無いので、その辺をちらほらと書こうかなと思います。と言う事で最初はLoveAmpを作ってみたお話。

続きを読む "LoveAmp作ってみた"

| | コメント (0) | トラックバック (0)

2009年11月13日 (金曜日)

もう一作品はこんなの

前回のエントリ後半に書いた「もう1作品」の動画をアップしました。


技術的には大したことやってません。まぁ、C#でMIDI&デリゲートの練習には

続きを読む "もう一作品はこんなの"

| | コメント (0) | トラックバック (0)

2009年11月 3日 (火曜日)

∞(無限)トクトク改良版をアップ

また間が空いてしまいましてすいません。あ、ARMマイコン基板コンテストは結果が出ましたね。残念ながら入賞はできませんでした。まぁ、今回は正直着手が遅すぎました。そのうちここで製作したモノのお披露目をしようかと思います。

あと大分告知が遅れてしまいましたがエレキジャック誌に記事を書かせていただきました。No.14No.15です。興味のある方は是非購入して読んでいただければと思います。

んで、最近はもっぱらMTM04の準備です。今回もニコニコ技術部枠での出展になります。全2作品を出展予定で、さきほど本エントリのタイトルにもなっている1つ目の作品の動画をうpしました。

もう1作品は

続きを読む "∞(無限)トクトク改良版をアップ"

| | コメント (0) | トラックバック (0)

2009年10月15日 (木曜日)

ARMマイコン基板で色々と

2ヶ月ぶりのエントリになってしまいました。この2ヶ月は何もしていなかった訳ではなく、今回のカテゴリにもあるようにARMマイコン基板をいじってました。しかも2種類。一方は先日コンテストの締め切りを迎えたインターフェース誌付属のもの、もう一方はDesignWave誌付属のものです。後者はまた改めて書くとして、今回はインターフェース誌のARMマイコン基板について書こうかなと。

コンテストに応募した作品については結果が出てからと言う事にして、その過程でいくつか作ったものをご紹介。

Dsc00884 まず左上、ご存知の方も多いかと思いますが、「バーサライタ(LED POVとも言うらしい)基板」です。いままでバーサライタを作った事が無かったので作ってみました。出力は8ビット分ですが、配線でラクをしたかったので16ビット分のポートの奇数番だけ使うと言う暴挙wをしでかしてたりします。

 

続きを読む "ARMマイコン基板で色々と"

| | コメント (0) | トラックバック (0)