2007年2月アーカイブ

◆いきさつ
PSoCにはIrDAモジュールというものがあります。
これさえ使えば簡単に赤外線通信(IrDA)ができます。
今のところ使い道は思いつきませんが、できたらおもしろそうです。

ところが、IrDAモジュールを使って通信したかったのですが、モジュールの使い方がわからずうまくいきませんでした。

とりあえず悩んでいてもおもしろくないので、IrDAではないですが、赤外線を使い、自前で通信させてみました。とりあえず動いたので、これを修正・拡張していけばそれなりに実用的なものができると思います。
(しかし、そのうちIrDAモジュールを使えるようにしたいものです・・・)



◆回路図
回路はこのように簡単なものです。

PSoCIrTestC.png


・送信側
赤外線LEDをトランジスタを使いON / OFFしているだけです。
Active Highであり、ポートに1を出力すれば赤外線LEDが点灯します。
逆に0を出力すれば赤外線LEDは消灯します。

・受信側
赤外線がフォトトランジスタに入ると、フォトトランジスタに電流がながれ、
PSoCのピンの電圧が下がり、ピンの読みが0になります。
それ以外のときは5Vに接続されているのでPSoCのピンの読みは1となります。



◆ソフトウェア
上記回路を使い、任意のデータ1byte送信するだけの物を作ってみました。

・送信側では一定時間ごとに割り込みを発生させ、そこでデータの送信処理をしています
・受信側では一定時間ごとに割り込みを発生させ、そこでデータの受信処理をしています

上位ビットから処理(送信または受信)します。
チェックサムなどは一切入れていませんし、符号化もしていません。

また、今回通信速度はデバッグ用に落としてみました。
4Hzごとに割り込みをかけてそこでデータを送信しているため、サンプルのビットレートは4bpsです(笑)
割り込み間隔をもっと短くすれば通信速度を上げることができると思います。



◆写真

PSoCIrBuhin.jpg
↑使用したフォトトランジスタ {TPS611] と 赤外線LED [TLN105B]



PSoCIrTest.png
↑正しく送受信できた

 1月4日の記事でも触れましたが、このところずっと私のパソコンのファン回転数が上がらず、CPU温度が60℃前後、負荷をかけると70℃ぐらいまで上がってしまう状況におちいっていました。

 簡単に掃除をしてみましたが、あまり効果は上がらずここ一ヶ月ほど無視して使い続けていました。
(ただし、あまり高い負荷のかかる処理はしておりません)

 ところで、昨日Terragen™ 2のTerragen™ 2 Technology Previewを使ってみました。これは3D景観描画ソフトの新しいバージョン(の予告版のようなもの)です。格段にリアルになったというので試してみました。

 ところがCGのレンダリングには非常に高い負荷がかかり続けるため、CPU温度が70℃付近をキープし続けるという状況になってしまいました。そこで、なんとか解決してみようとしました。

 今日、いろいろ調べてみたところ、SpeedFanというソフトを見つけました。これはシステムの情報を見られるだけでなく、ファンの回転数も制御できるというものです。(ただし、対応していない製品もかなりあるようです)

 現在、回転数が上がらない状況なので、これを使って回転数を上げてみたらどうかと考えました。これを使ってファンの回転数が上がるようならばファンの制御に問題がある可能性があります。

 さらに、インターネットを使い、ファンの回転数をどのようにしてソフトウェアが取得しているのかなどを簡単に調べもしました。



 さて、このようにいろいろやってみようと思ったのですが・・・



◆結局の原因
 さっきPCケースをあけてCPUファンをよく見てみたら・・・ほこりが大量につまっていましたorz
想像を絶するすごさです。(ファンとヒートシンクの間にほこりがあったため最初は気づきませんでした)

 原因はこのほこりが空気を遮断し、同時にファンの回転数を下げていたようです。
なんとか全部取り除き、そのあとPCを起動してみたところ、新品のころのCPU温度・回転数とほぼ同様の値に
もどりました。掃除はまめにしたほうがよいことがよくわかりました・・・。

掲示板

回覧グループWebSites総合掲示板(フォーラム)が設置されました。
ご活用いただければ幸いです。

bana_forum.png

PSoCリンク集

| トラックバック(0)

PSoCを扱う際に参考になるサイトをいくつかピックアップしておきます。

Cypress


PastelMagic
Wiki、フォーラムなどもあり充実しています

Dr.Matrix.jp
ユーザモジュールの解説がわかりやすいです

迷走の果て・Tiny Objects
PSoCに関する記事がなんと100エントリー以上もあります

PSoC.info
赤外線送受信の記事などが役に立ちそうです

doggie's blog
PRoCなど、めずらしいデバイスの記事も多いです

Bluefish Webpage
電気工作のページにPSoCその他たくさんの記事があります

PSOC チュートリアル計画
わかりやすいチュートリアルが公開されています

Project C3 Wiki
USBUARTに関する非常に詳しい説明があります。

前回の実験(ここの下のほうの文章)
PSoCのSDカードモジュールでは読み取り速度が遅すぎてだめだったので、
WAVEデータをPSoCのROMに書いてDA変換するだけのプログラムを書いてみました。

スピーカの接続は以下のような簡易的なものです。
wave_sp.png
↑P0_5にDA変換した結果を一定間隔で出力する


今度はちゃんと動きました。
問題は読み取り速度だけのようで、再生自体は簡単でした。

ROMのサイズの関係上(今回使用したCY8C29466は32KBです)
8bitモノラル、8kHzのWAVEファイルを再生しました。

再生の際、WAVEファイルを読み取り、一度テキスト(以下のようなC言語のソースコード)
に変換するプログラムをC#でつくり変換しました。
SDカードが使えないと不便です。

変換例)
const unsigned char wave_table[] = {
128,128,128,128,127,125,125,126,129,130,129,129,135,137,138,137,132,121,110,108,
114,119,120,116,120,132,137,141,136,135,134,126,124,130,142,131,121,117,125,139,
・・・(略)・・・
};

後はこれを適当な間隔で読み取り、DA変換してあげるだけです。
以外にもあっさりと鳴りました。

当然ながら音質はかなり悪いですが、一応鳴ったので良しとします。
(でもなんかすごいくやしいorz)

◆リンク
参考にさせていただきました。
H8で音声データを扱ってみよう


WAVEファイルについて
WAVE形式のファイルフォーマット

WAV ファイルフォーマット

Ryuzのプログラミング講座<第1回 Waveファイルのフォーマット編>