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

寝ても覚めてもPSoC

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

PSoC Designer 5.1 SP2

2011年07月26日 | PSoC

Designer 5.1 SP2が出ていたのでインストールしてみました。
なんと日本語データシートが消えていた(選択できなくなっていた)wwwwww
日本語化が面倒になってサポートやめたな。ちょっと寂しいっすね....

と思ったら、モジュールを選択して右クリックメニューで、Datasheet→Get Latest From Webで日本語データシートが読めるらしい。
期待を込めてやってみると、確かに日本語データシートがあるが、PDFのダウンロード形式になっとるwww ぉぃぉぃ面倒くせぇーぞなもし?
しかも全部のモジュールが対応されてねーwww

Programのモーダルといい、改悪ばかりでどうしようもないなCypressはwwww
ここまでくると、モジュールもバージョンアップしてるけど性能劣化してるんじゃないかと疑ってしまう。

まぁ、とりあえず問題なければ今後は5.1SP2でいきます。

PSoCとColdFireを使って温度をTwitterに自動送信[LM60]

2011年07月22日 | PSoC
前回はInterface誌付録のColdFire基板でTwitterに自動送信しました。
しかし、今後いろいろやろうとした時に、このColdFire基板のモジュールを使い方を覚えるのは面倒です。LM60の温度ぐらいならできますが、ちょっと込み入った事をやろうとすると大変です。いや、簡単かもしれませんが、僕は覚える気になりません (一度覚えたらPSoCよりも良いんだろうけど...)
そこで使い慣れたPSoCを主として扱い、ColdFire基板はTwitterに投稿する等のインターネット関係だけに専念させる事にしました。
PSoCとColdFireとのやりとり(通信)はUARTで行います。

今回は簡単にするため、温度計測と投稿メッセージ作成をPSoCで行い、ColdFireはそのメッセージをTwitterに投稿するだけです。
ColdFire側はメモリ確保をチョコチョコやっていますので、あまり繰り返すとメモリ確保に失敗するかもしれません。初回に確保するだけにした方がよいでしょうね。


という訳でできました!
これで、センサーをPSoCで処理してHTTP POSTしたり、何かWeb APIを取得してPSoCで内容を表示したりする事ができるようになりました

回路図です。


プロジェクトです。
[PSoC側]
デザイナ: 5.0 SP6
デバイス: PSoC CY8C27143 3.3V
コンパイラ:ImageCraft
テキスト: UTF-8
PSoC_LM60_ColdFire.zip

[ColdFire側]
Device: ColdFire MFC52233 CQ
IDE : CodeWarrior for ColdFire V7.0
Text : UTF-8
Font : Japanese FONT
ColdFire_twtpsoc.zip
※MakeColdfireBin.batのIPアドレスを自分の環境に書き換えてください。

ColdFire(SilentMoonSDK)を使って温度をTwitterに自動送信[LM60]

2011年07月11日 | ColdFire
1年半ほど前、SilentC[InterFace誌付録のColdFire基板です]で定期的にTwitterにつぶやくものを作りました。
しかし、これはBASIC認証を使用しているため、現在では使えません※現在はOAuth認証です。
まぁTwitterが廃れていれば放っておくのですがw大盛況らしいのでなんとかしたい。(僕はあまり利用していませんが...)
そこで、今回はSilent Moon SDKで再びTwitterに温度をつぶやくものを作ります

つぶやくために何が必要かですが、それは以下の2つとなります。
1.クライアントアプリの申請登録
2.シグネチャ用にハッシュ関数(HMAC-SHA1)

1はGoogleにアプリを申請することで、コンシュマーキー、コンシュマーシークレット、アクセストークン、アクセストークンシークレットの4つキーが入手できます。
これらを指定のフォーマットでハッシュ化することで2のシグネチャが生成できます。

この辺は、ここを参照してください。ここ以外は、既存のライブラリ等を使用したりするため、マイコン(MCF52233)環境下ではあまり参考になりませんでした。

さて、つぶやくまでの具体的な手順です。
1.Twitterにログインする
2.下記URLにアクセスしてアプリケーションを登録する
  http://twitter.com/apps/new
  ※Application TypeはClient
  ※Default Access typeはRead & Write
  ※Use Twitter for loginは チェックをつける
3.登録するとコンシュマーキー、シークレットを入手できるので記録しておく
  ※最初に登録した場合、何故かRead属性になっているケースがあるため、アプリケーションの詳細でRead&Writeに設定する
4.Twitter Access Token取得ツールを起動し、キーとシークレットを入れてREQUEST TOKENボタンを押す。
5.ブラウザが起動するので『アプリを認証』を押す
6.PINが表示されるため、ツールにPINを入力してACCESS TOKENの取得ボタンを押す
7.アクセストークン、シークレットを入手できるので記録しておく
8.プログラムソースの以下の定義(#define)内容を記録したものに書き換える
  CONSUMER_KEY
  CONSUMER_SECRET
  ACCESS_TOKEN
  ACCESS_TOKEN_SECRET
9.ビルドしてプログラムを転送し、ExecUser(1)で実行

以上で完了です。



プログラム的には以下のようになっています。
1.送信文字列をURLエンコード
2.時刻を取得するためUNIX TIME APIを使用して取得
3.SHA-1用にキー文字列とベース文字列を作成
4.ハッシュ値を生成
5.ハッシュ値をBASE64でエンコード
6.それをさらにURLエンコードし、シグネチャ完成
7.ヘッダーに組み込んでTwitter APIにOAuthでPOST

さらっと書いていますが、結構苦労しましたwwww
やっている最中は、何度も何度も何度も認証エラーをくらった
これでマイコンだけでTwitterに投稿できます!



回路図です。


配線はシンプルです。LM60と確認用のLEDだけです。
LM60は前にも書きましたが、424mVのDCオフセットをもっていて、そこが0℃になります。それを基準に6.25mV/℃とリニアに変化するため、LM35につづいて簡単に制御できるセンサーです。マイナス温度が測れたり、2.7Vから動作するのもポイント高いです。

ColdFire[MCF52233]

プロジェクトです。(※Twitter Access Token取得ツールを同梱)
Device: ColdFire MFC52233 CQ
IDE : CodeWarrior for ColdFire V7.0
Text : UTF-8
Font : Japanese FONT
ColdFire_twoauth.zip
※MakeColdfireBin.batのIPアドレスを自分の環境に書き換えてください。
※Ver7.2はUTF-8が使えますが、V7.0の場合はIDEでソースを編集しないでください

PSoCでWavファイルを再生 [LPF2]

2011年07月01日 | PSoC
PSoCでWavファイルを再生させてみよう。音は光の次に面白いよね!
手軽にするため、データは32KBのROMに収まるように8KHz 8bit mono で作成します。
それでも3秒程度しか入りませんので、吟味した結果、題材はケネディ大統領のアポロ計画で有名な演説の1フレーズ、『We choose to go to the moon.』を選択しました。
このファイルをツールを使ってC言語ソースに変換して取り込み、PWM等で定期的にDACに出力すればとりあえず再生はできます

が、そのままでは音質が悪いのです。音が硬いというか。
とりあえず波形を見るとガタガタです。DACの特性で仕方が無いようです。
それをなんとかできるのがLPFモジュールということらしいので、これはやってみる価値はありそうだ。いや、やるしかない!
しかし当方、アナログは全くわからないwwので、どう設定したらよいかわからない。
ググっても情報は少ないし、あっても書いてある内容が理解できない。さてどうしたものか...

考えてもわからないので、やってみることにした。
DAC8の隣にLPF2を配置。LPF2のINPUTをDACからとし、フィルターデザインは意味不明なのでテキトーに設定。
コードを書いて配線し、実行するとスピーカーからはギゴガゴゴという何やら凄い音が聞こえたwww うはっww
いろいろフィルター設定を変えても、相変わらずギゴガギギだ。LPF2をSTARTさせてなくても音が鳴るし。何がダメなんだろう??はてさて弱った...

この状態から脱出するには実に10日以上を要した。恥ずかしい。
思い切って接続方法を換えてみたのです。DAC->LPFではなくて、DAC->Port->PGA->LPFとしたらギゴギャゴゴはなくなりました!何故DACからLPFへ直に接続するのがダメなのかわかりませんが、やっと前進できました。
また、その間にチョコチョコと調べたりして、フィルターデザインの基本ポイントがわかった。(ような気がする)
1.コーナー周波数はサンプリング周波数の1/2にする。(8KHzだったら4KHz)
2.LPFへ与えるクロックは 24MHz/Divide by nの値
これでやると、
『We choose to go to the moon.』
おおぉ、ちゃんと音がやわらかくなってる!波形もまぁまぁって感じ。ウホッ!

■DAC出力の波形


■LPF2出力の波形


(ちなみにコーナー周波数を2KHz、1KHzと小さくすると波形は丸くなりますが、だんだん音がこもっていきました)

しかし、まだ素直には喜べない状態であった。
聞き取りやすくはなったものの、シャーというノイズが目立つのです。
スイッチトキャパシタのため、ある程度はノイズが出るらしいけど、ここまででるものなのかなぁ...やはりまだ設定に間違いがあるのだろうか。それともオペアンプ(386BD)のせい?
遊びで使う分には十分で無視する事はできるかもしれないが、気になるのは気になる。
現時点でこの問題はクリアできていません。
とりあえず他ごとがやりたくなったのでw、一旦棚上げとして公開します。

回路図です。


プロジェクトファイルです。(WAVファイルからC言語変換ツールも同梱)
デザイナ: 5.0 SP6
デバイス: PSoC CY8C29466 5V
コンパイラ:ImageCraft
PSoC_WavSound.zip