goo blog サービス終了のお知らせ 

寝ても覚めてもPSoC

電子工作とマイコンをやりはじめました。
ど素人ですので配信する情報の取り扱いには十分注意してください。

PSoCでDTMFデコーダIC[CM8870PI]を使う

2010年01月07日 | PSoC
年末に作成したやつです。
少し前にPSoCでDTMFエンコーダとデコーダをやりましたが、秋月を見ていたらDTMFのデコーダICを発見したのでPSoCでやってみました

回路図です。




DTMF信号の解析に成功するとCM8870PIのStD(pin15)がHighになるので、PSoCはGPIO割り込み(立ち上がり)で4bitデータを取得します。
実はICに付属している3端子の3.58MHzの発信素子の使い方がわからなくて、ICよりもこれに時間がかってしまったw
いやほんと、こういう基本的なものはすんなり使えるようにしておきたいものです
UPしたプロジェクトにはDTMFエンコードも入っていますが....
void main(void)
{
	const char *pcPhoneNumber = "987654321015739";
	
	M8C_EnableGInt;

	PGA_1_Start( PGA_1_HIGHPOWER );

	DTMFDialer_1_Start( DTMFDialer_1_HIGHPOWER );
	DTMFDialer_1_StartSamples();
	DTMFDialer_1_DialFromRom( pcPhoneNumber );
}

 
とりあえず鳴らすなら、モジュール配置して上のコードを書くだけ。
これでドラマ24でジャックバウアー達が使っている携帯電話のダイアル発信音が(発信間隔を倍速に設定すれば)再現できますwww
それにしてもCTUが使っている携帯端末ほしいなぁ。万能さに感激しました。それでいて電池の持ちも素晴らしい!
話が脱線しましたが、実用の際には発信音の長さや間隔を調整し、それにあわせてデコーダICの方もR1やC1を調整しなければならないようです。
僕は趣味で遊びレベルなのでこれでOKですけど。


プロジェクトです。
デザイナ: 5.0 SP6
デバイス: CY8C29466
コンパイラ:ImageCraft
PSoC_DTMF[CM8870].lzh





PSoCでグラフィックLCD[SG12864A] for ImageCraft

2010年01月04日 | PSoC
明けました!!

今年最初はグラフィックLCDです。そういえば、ブログの最初の記事もLCDだったw
前回の記事はコンパイラがHi-Techだったので、ImageCraft用に変更しました。
ついでに、VRAMをメモリで保持するようにしました。ドットを多く処理する場合は少し速く描画できます。そのかわり、メモリを多少使います。
処理内容によってはもっと最適化(まとめて描画して更新場所だけ転送等)できるので、速度は出せると思います

動画(YouTube)です。このブログはobjectタグで直接貼れないらしい...



※1/6追記
ブログパーツ化する事で表示可能でした。


回路図です。前回と変更ありません。


プロジェクトです。
デザイナ: 5.0 SP6
デバイス: CY8C29466
コンパイラ:ImageCraft
PSoC_SG12864AII.lzh

1年を振り返って

2009年12月28日 | PSoC
2009年も残り僅かとなりました。
今年からブログをやりはじめましたが、ここまで続くとは思いませんでした

ブログには書いてないけど、最初の頃はLCDやレギュレータなど、よく壊しました テスターも電流計の使い方がわからずヒューズを飛ばしました ショートがなんぼのもんじゃい!って思ってましたからねw
近くにパーツ屋がないので通販に頼るしかなく、慣れない頃は一つ部品を買うのも苦労しました。どれを買ったらいいんだ?レールってなんだ?表面実装?? 品物が届いて初めてわかる、どーすりゃいいんだよ、これ?ってww
おかげで最近は滅多に壊さなくなり、無駄な部品を買うことが”少なく”なりました。

ブログのネタ的にはPSoCを扱っている人から見れば、取るに足らないものばかりでしょう。
果たしてどれほど役に立っているかは不明ですが、『枯れ木も山の賑わい』の精神のもと、単に作っては壊すを繰り返すのではなく、なるべく公開していくようにしました。

正直なところ、半分は義務を感じていたのも事実。
誰のために?
教えてくれた先人たちへのお礼でもあり、これから電子工作に興味を抱いた人たちのために...そして自分のためでもある。
なんつってカッコいい事を書いてるけど、当の本人はオームの法則しかしらないド素人なんだから笑えるwwwww
OOの第一法則、第二法則?知りませんw いや、理解していませんw
しかしマイコンを使ったデジタル回路は、この程度の知識で”やりたい欲求”の近い事ができてしまう。それがマイコンの凄いところ
凄いんだが、凄い故に自分のアイデアの無さをも知ることになる。これは辛い。


さてさて、実際いつまで続けれるかは不明ですけどね。飽きるまでかな?www

よいお年を!

キーボードを打った情報をCOMポートへ送信するアプリ[FT232RL]

2009年12月25日 | PSoC
キーボードを押した情報を指定のCOMポートに送信するプログラムを作成しました。
シリアル通信は秋月のFT232RL USBシリアル変換モジュールを使用しています。
非常にコンパクトなので、PSoCも8PINのCY8C27143にする事でブレッドボード1枚で収まりました
USBから電源も取れるので電池も必要なしですね!

これでキーボードを打った回数を7SEGLEDで表示したり、グラフィックLCDで育成ゲームにしたり、音を出したり、
UPしたプロジェクトのように単純にLEDを光らせるだけwなどを作ることができます
本当は簡単な育成ゲームを作ろうと思いましたが、他に作りたいものができたのでやめました。

さて、PCからの一方通行では面白くないので、マイコンからPCへ特定の文字列を送信するとOSをシャットダウンまたは再起動させれるようにしました。
そう、PCの自爆スイッチが作成できるのです!www
回路図をみてもらうとスイッチがありますが、このプロジェクトではスイッチを押すとOSをシャットダウンするようになっています。

ただ問題が.....
シャットダウン後でもUSBの電源は生きているのです!ゾンビかお前は!
いやぁ初めて知りました。OSが起動していなくてもUSBの電源は使えるのですね~!!!!
うーむ困ったwww
どうしたらよいのでしょうか!?
※逆に言えば電源が入りっぱなし(=PSoC動作中)を利用して、24時間生きてる育てゲーなんかは良いかもしれないなぁ。


PC側アプリです。※詳しくはReadme.txtを参照してください
Kbd2Serial101.lzh
※Readme.txtに書き忘れましたが、連続して同じキーを押した場合は送信されません。キーリピートみたいな状態は送信されません。

PSoCプロジェクトです。
デザイナ: 5.0 SP6 (フォント:全てMSゴシック)
デバイス: CY8C27143
コンパイラ: ImageCraft
PSoC_kbd2serial27143.lzh
※このプロジェクトを使用する場合は、PCアプリの設定で”送信文字列の最後にCR(13)を付加する”にチェックを入れてください。

PSoCでDTMFエンコーダ/デコーダ

2009年12月08日 | PSoC
週末はDTMFモジュールで少し遊んでみました。
UMにはエンコーダ(発信)はありますがデコーダ(受信)がありません。
DTMFモジュールは本当に簡単にピポパ音を発信できて便利です。
デコーダはアプリケーションノートを検索すると AN2247 がよさそうです。
プロジェクトをDLして29466用にCloneし、実行してみました。

...が、うごかねー
もともと配線が違っていましたが、それだけではなさそう!?
ググってみると、ありました!!先人に感謝!

これで無事、PSoCでピッポッパッと発信した内容がPSoCで解読できました。

まぁ、何に使うかというと、別にないのですがww
一応は音の通信ができたってことで。

アクリル板イルミネーション

2009年11月24日 | PSoC
クリスマスのニュースや話題がチラホラ聞こえてくる今日この頃。
PSoC使ってクリスマス関連グッズを何か作ってみよう!!
そこで前々からやってみたかったアクリル板とLEDのイルミネーションにトライすることに。
ちょうどエレキジャックにも作り方が載っているし

まず主役?のアクリル板。ホームセンターで厚さ3mmを購入。実はLEDは5mmを使うのがわかっていたので、本当は5mm厚にしたかった。しかし、カットがうまくできるか自信ないので3mmと2mmを購入...。
同時にアクリルカッターとルータも購入。

ではアクリル板を半分に切ろう。カッターの手引きにあるように切れ目を入れて、折り曲げるとパキン!と割れるらしい。なるほど曲げればいいんだな...パキ、メキ、ビシッ...
まぁ、最初だからね。多少の失敗はOK。

そして、ルータで絵を描く。とりあえず娘の描いたやつを彫ってみる。深く掘ったほうが、より綺麗に光るようです。ま、とりあえずテキト~にw

さて、土台は通販の空箱にしよう。うむ。手頃な大きさだ。

で、出来上がったのが↓これ。試作なのでハンダ付けはLEDの部分だけ。


LEDは2色(赤青)x2とフルカラーの3つを使っています。それぞれ10mA以内なので、PSoCのポートから直接ドライブしています
PSoCブロックはLED用のPWM8を7個とWait用(10ms)にPWM8を1つで計PWMが8個。これだけです。

アクリルを2枚使い、2色LEDを両サイドに配置したのと、真ん中にフルカラーLEDを配置したのを重ねます。

そして、電源を入れると....

画像ではイマイチですが、実物は綺麗ですよ!

だいたい作り方の感触は掴めたので、クリスマス本番用に作成するぞ~!
(課題はフレームと土台だな...)

SP6 入れました

2009年11月17日 | PSoC
よ~やく、電子工作できる余裕ができてきました

まずはSP6を適用し、いくつかのプロジェクトをビルド。
するとコンパイラに、おぃぉぃ関数定義の仕方が古いのぉ...と、ブツブツ軽くボヤかれました。
古くて悪かったな、お前は野村監督か!とボヤき返しながら、せっせと直して再ビルド。
エラー0、警告0。よし。

少しビルドが速くなった気がしましたが、きっと気のせいでしょう。
相変わらずSDカードはダメなのねwww


※11/22追記
コードエディタで日本語フォントの問題が修正されてますね。まだ完全ではありませんが。
行番号を消さなくてもなんとか使えるレベルです。

SP6

2009年11月01日 | PSoC
このところ、忙しくて全く手がつけられません。
パーツは買っているんですけどねw....orz
来週はなんとかできるといいなぁ

ところで、デザイナーのSP6が出てますね!
とりあえずDLだけしておくかな。

CMPPRGモジュール

2009年09月23日 | PSoC
PSoCを使っていると、ほぼ決まったユーザーモジュールしか使わない事に(やっと)気が付いたw
といっても、やってる事がしょぼいので必然的にそうなるのかもしれないけど。

で、前から気になってたCMPPRGというコンパレータを使ってみました。
74シリーズでお馴染みというやつですかねー。よく知らんけど。
入力電圧と設定した閾値と比較して...比較してどうするんだっけ??
ADコンバータで電圧をある値の上か下かで判定している部分があれば、それはこのコンパレータで置き換えることができる。と思う。
例えばこんなやつ。
if( adcVal > 2048 ) LED_On();
ようするに電圧を比較してHiかLowか、デジタル出力なら0か1かといった2値化するやつですね。


さて、デザイナで配線すると、恐らく大半はDigBufモジュールとセットになるのではないかと思う。Analog出力もできるけど、いまいち使い道がわかりません
このDigBufモジュールも曲者?で、モジュールの割り込み関数内で値を参照するらしい。なにしろ値を取得するAPIがありません。
それか、DigBufの出力先ポートのGPIO割り込みで...ってどちらも割り込み関数内で処理ってことになりますね
まぁ実際はそうじゃないと困るのでしょうけど。

使い所としては、PGA+ADCだとアナログブロックもデジタルブロックもCPUパワーも取られるので、単純な電圧値でON/OFFの検出程度だったら、CMPPRGとDigBufの組み合わせがお得ですよ~って所かな。


続続続SP5

2009年09月08日 | PSoC
PD4で作ったプロジェクトをPD5で作り直そうとしたら...
SD Cardモジュールが見つからん\(^o^)/
フォルダには存在するし、クローンでは問題なく配置される。
ただ、新規で置けない(リストに出てこない)だけ!CY8C29系なのに。
もう笑うしかないなwww

こういう”俺だけ?”現象はOSとかソフトとかで今までなかっただけに、驚きです。

※追記
PSoC DeveloperForumをみたら、記事がありました。
クリティカルなバグがあるらしく、あえてSD Cardモジュールをリストから省いたそうです。次のSPで復活することを切に願います。