その他の最近のブログ記事

2007年3月のPSoCセミナー、他の方がどんな風に記事を書いているのかなぁ
と思ったのでその関連の記事を集めてみました。(暇人とかいわないで;;)
なかなか読んでみると面白いです。

7SEGLED.jpg

 先日のセミナーの評価ボードには7SEG LEDもついていました。
せっかくなのでこれを使ってPSoCデザイナのLED7SEGモジュールを使ってみました。
目的は特になく、ただなんとなく以前から7SEGのモジュールを使ってみたかったので^^;

 今回のサンプルは、順番に7SEG LEDの表示が変わるというだけのものです。
ユーザモジュールを使うと、いとも簡単に4桁の数字を7SEGに表示できるので、けっこううれしいです。
(自前でやると地味に大変なのです・・・)


7seg_module.png
↑設定はこんな感じ

以前の記事で紹介したPSoCセミナーのときに使用した評価ボードを使い、少し実験してみました。


評価ボードにはADXL322という2軸の加速度センサがのっているのでその値を取得してLCDに表示してみることにしました。


PSoCExpressADXL322_d.png
評価ボードではこのような座標になっているので
向こう側に傾ければXの値が正、手前に傾けるとXの値は負になります。
また、左に傾けるとYの値が正、右に傾けると負になります。
LCDに表示される値がこのように変化すればいいことになります。


PSoCExpressADXL322_e.jpg
難しいと思ったのですが、PSoC Expressを使い、加速度センサの値をLCDに表示させるものを
適当に作ってみたら動いたのでここに載せておきます。

※以前書き忘れましたが、PSoC Expressで開発を行うと自動的にPSoCデザイナのプロジェクトも生成されるので、PSoCデザイナでコードをみたり編集したりすることができます。
(逆はできない。つまりPSoCデザイナ→PSoC Expressは不可)
それらのファイルもアップロードしたせいもあり、ファイルサイズは少し大きくなっています。


PSoCセミナー

| トラックバック(0)

3月7日、PSoCセミナーに行ってきました。会場はパシフィコ横浜です。
時間は13時より、18時前ぐらいまででした。

今回のセミナーではPSoC Expressを使った実習がメインでした。
評価基板を使い、LED、LCDの制御やCapSense、AD変換、I2C通信のサンプルを作って動かしました

PSoC Expressを使うとコードをほとんど意識することなく設計ができ、
慣れればかなりはやく開発できるらしいです。
PICだと66時間かかる設計をPSoC Expressを使うと1時間程度でできてしまう例も紹介されていました。
(でも慣れるまではちょっと大変かもしれないと思いました(笑))

前回のセミナー(PSoCデザイナを使ったCapSenseのセミナー)より、実習の時間が長かったため、時間が足りなくなることもなく、評価ができ、有意義でした。

PSoC Expressは今日が初めてで、わからないところも多いのでこれからいろいろ実験できたらいいなと思っています。


◆写真

PSoCSemi20070307.jpg
↑セミナー会場の様子

PSoCSemi_CY3121.jpg
↑評価ボード。PSoCが4つついており、さまざまな評価ができる。
評価ボードは4箇所に分かれている。
左上:CapSenseの評価などが可能
右上:USBを使った評価などが可能
左下:LCD・2軸加速度センサを使った評価などが可能
右下:7segLEDの評価などが可能
また、他にもLED、スイッチ、可変抵抗、ワイヤレスUSBの接続できるコネクタも用意されている。
ジャンパピンをつなぐことでPSoC間でのI2C通信の評価もできる


PSoCExpressSS.png
↑PSoC Expressを使った開発(イメージ)

前回の実験(ここの下のほうの文章)
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ファイルのフォーマット編>




PSoCでSDカードの読み書きができるようになったため(ユーザモジュールを使用)
SDカードにデータを書き込めるデータロガーを作成しました。

前回作成したデータロガーとの大きな違いはSDカードにデータを書き込むようにしたことですが、
他にはロータリーエンコーダを使い操作性を高めていることもあげられます。
現在、ソフトウェア部分は基本となる部分は完成しました。

次にハードウェア側です。せっかくつくったのでケースへ入れることにしました。

前回に作成したデータロガーケース加工をしましたが、

友人からLCDは製品ではフレーム部分(?)が見えないのが多いよね

とかなんとか指摘されたので今回はそこも改良しておきました。
LCD部分はフレームが見えないように最低限の窓だけ開けてあります。

結果、以前よりかなりシンプルな感じになりました
(ボタンやLEDがが減ったというのもありますが)


動作ですが、以前のデータロガーと同様のデータが取れます。
ただし、今回は128MBのSDカードを採用しているため、1分に一度のデータ計測でも1年以上は連続してデータをとれそうです。

さらに、SDカードをPCに差し替えればすぐにデータを取り出せるという利便性もあり、かなり使いやすくなりました。


SD_Logger_Case_a.jpg SD_Logger_Case_b.jpg
↑LCD周辺部分は前回よりきれいに加工できました。  ↑ケースの中は結構ごちゃごちゃです。


最近、PSoCでSDカードモジュールを使いSDカードの読み書きの実験を行ってきました。
せっかくSDカードが扱えるので、SDカード上のWAVEファイルをPSoCで再生できたらおもしろそうだと思いました。

やり方はSDカードからデータを読み出して一定間隔でDA変換していくだけ・・・のようです。
調べてみた結果、以下のサイトが見つかりました。

H8で音声データを扱ってみよう

このサイトではLM386を使ったアンプを使っています。
部品も少なくてすみそうです。そこで私も作って見ました。

◆リンク
以下が参考にさせていただいたサイトです。というか、回路図はこれらのサイトのをほぼそのまま作ってみました(笑)

LM386 パワーアンプIC

NJM386(LM386)ステレオアンプを作りました

LM380とLM386

まどかの 自 己 満 足 日記


◆写真
実際に完成したのは以下の写真の通りです。
半田付けする部品も少なく、短時間で作れました。
現在、ゲインは20倍になっているため、期待したより音は大きくできませんでした。
1番と8番ピンにコンデンサ(10μF)をいれるとゲインは200倍になるそうなので、後日試してみたいと思います。

miniamp_a.jpg
↑全体図です。一部半田付けしていないのはテスト用にミノムシクリップではさんで使ったため。

 PSoCデータロガー(?)の続報です。

 以下が、以前の記事で書いたとおに、PSoCデザイナでのAD変換の設定を直した後計測された温度データです。
前回は変な値が記録されて、がたがたのグラフになっていましたが今回は大丈夫です。

 測定場所は屋内の、あまり日の当たらない部屋です。(午前中のみ日が入る)
この部屋は測定中に暖房をつけなかったのでずっと寒いままです。
もう少し温度の変動があると思いましたが、あまり変わりませんでした。
午後に多少温度が上がる程度で、午前4時ごろに少し冷え込みますが、あまり面白くないデータでした。


sensor_temp_0114_0115.png
↑測定された温度データ。1つになるのは1月5日の16時ごろに少し温度が上昇していること。いったい何が・・・?
最初のほうの温度データが高いのは、暖かい部屋から温度センサを移動してから時間があまりたっていないため、センサがまだ周囲の温度になじんでいないためです。

以前の記事でとりあげたように、PSoC実験ボードを使い明るさを記録するものをつくりました。

■測定方法
明るさの測定はCdSを使います。明るさ測定の回路は以下の通りです。
CdS_Setsuzoku.png

抵抗で電圧を分圧し、電圧をAD変換することで数値(明るさ)を得るだけの簡単なものです。
今回の接続の場合、明るければ明るいほど数値は小さく、暗ければ暗いほど数値は大きくなります。
今回、AD変換には6bitのものを使っているので数値は0~2^6-1、つまり0~63がでてきます。

■測定間隔
1分おきにデータを外部EEPROMに記録することにしました。

■読み出し
PCへのデータの読み出しはシリアル通信を使いました。
PC側のソフトウェアはTeraTermを使いました。それをCSV形式のファイルで保存し、Excelでグラフを作成しました。

SensorLogyomidasi.png
↑CSV形式でデータが送られてくる

最近はPSoCの実験ボードを作って遊んでいました。

PSoCとはなにかというとマイコンの一種です。
有名な
PSoCチュートリアル
のサイトにわかりやすい解説が載っていますので詳細は省略しますが、機能を自由に選ぶことができるという非常に柔軟性のあるところ、またユーザモジュールというあらかじめ用意されている物を使うことにより、簡単にデバイスを制御できることが魅力だと思います。
(例:LCDの制御も簡単にできる)

なぜPSoCを使ってみたかったかというと、身近でやっている人がいておもしろそうだったからです。
(今までPICは少しやったことはあったのですが、PSoCは使ってみたことはありませんでした)

PSoCをはじめるのには
はじめてのPSoCマイコン
という本がおすすめです。
(PSoCについて書かれた日本語の本は今のところこれしかないらしいです。)

また、PSoCを使う際に参考になるサイトを以下にあげておきます。
PastelMagic
Dr.Matrix.jp
迷走の果て・Tiny Objects


さて、今回はPSoCでいろいろやってみたかったので、LEDやスイッチはもちろん、
AD変換のテスト用に半固定抵抗をつけてみたり、CdSをつけてみたりしました。

ついでに有名なLM35という温度センサもつけてみました。
これは出力電圧がそのまま温度になっているというもので、大変便利です。
(普通に使うのなら出力電圧をただAD変換してやるだけでOKです。)

あとはI2Cをやってみたかったので外部にEEPROMもつけてみました。今は特にやることがないので、
CdSの出力電圧を1分おきに記録しています。後でこのデータをシリアル通信でPCにとりこんで見れば何時に寝たのかわかったりしておもしろそうです。
(あまり意味はないですが・・・。実験ボードがだんだんデータロガー化してます(笑))

■今回このボードで実験できること
・LCDの実験
・LEDの実験
・スイッチの実験
・EEPROMの実験
・AD変換の実験
・シリアル通信の実験
・外部クロックを使う実験
他いろいろ


PSoCTest1.jpg
↑ためしに時計を作ってみました。外部クロックにクリスタル発振子をつけているので結構正確です。
下側に出ているのはデバッグ用に変数の内容を表示したものです。