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

寝ても覚めてもPSoC

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

零からの電子工作(ニコニコ動画)

2011年09月07日 | 電子工作
ニコニコ動画で配信されている動画です。
参考になった内容が多数ありました。

http://www.nicovideo.jp/mylist/21945950

ありがたやぁ~ 感謝感謝。


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


PSoC Designer 5.1 SP1

2011年06月18日 | PSoC
そろそろPSoC Designer 5.1 SP1でも入れてみようと思い、インストールしました。

しかし、毎度?という訳ではないかもしれませんが、バグがありました

今のところ発見しているのは、
1.プロジェクト新規作成して、main.c を開こうとしても開けない場合がある
2.日本語データシートの図が全滅(×マークが出て表示されない)
です。

1は致命的です。こんな問題は僕だけの環境かもしれませんが、これでは使えません。
という訳で、比較的安定している5.0SP6に戻しました

オペアンプ(NJM386BD)

2011年06月11日 | PSoC
DTMF信号をアンプ(NJM386)で20倍に増幅しましたが、音楽をスピーカーで聴いてみたくなったので増幅率を200倍にしてみました。
音楽プレイヤーの端子からアンプを通し、秋月で買った8Ωスピーカーに出力しました。
驚いたのは、ちゃんと音楽の音量が上がっている事!
いや、当たり前なんだろうけどw、僕にとっては『すげー!スゲー!ちゃんと聴こえるやん、コイツできる!』な出来事でした。


※回路図が複雑になるのでpin4(GND)とpin6(V+)の配線は省略しています。

感動したついでに100均で買ったアンプを通してみると、ん?なんか音が汚い...
こんなんだったっけ?

DSO NANO V2 を買いました

2011年06月01日 | 電子工作
オシロスコープで波形を観測したい。そんなに高性能じゃなくてもいいからオシロがほしい。
ポータブルのオシロは大きいし、数万と高いので手が出ない。物色していると、ハンディ型オシロでDSO NANO V2というのが1万弱で売っている。
ほほぅ?と思い、ググってみるが、思ったより情報が少なく、どの程度使えるかわからない。うーん、迷う...。
しかし、いつまでもテスターだけでは苦しいのも事実。
そしてポチッと買っちゃいました!www



商品が届いたので、少しだけ触って、早速ファームウェアを更新しました。
DSO BenF Firmware ver3.62です。ソースがオープンソースのため、どうやら有志が開発したもので、公式のではないようです。
しかし、キャプチャ画面を直接BMPで保存できたり、設定を保存できたりと公式のソレよりは格段に使い勝手が良くなっています。

まだ、よくわからない点がありますが、以下備忘録です。

●リンク
・ファームウェア、アップデートツール等
http://code.google.com/p/dsonano/downloads/list
um0412.zip...アップデートツール
DSO nano APP+LIB firmware v2.5e.rar...公式ファームウェア
File_model.rar...SDカード基本構成ファイル
DAT2BMP.rar...DATをBMPに変換するツール
・DSO BenF Firmware ver3.62
http://www.seeedstudio.com/forum/viewtopic.php?f=12&t=1793
・フォーラム
http://www.seeedstudio.com/forum/viewforum.php?f=12

●ファームウェアのアップデート
・ドライバのインストールに失敗したら、デバイスマネージャからドライバを削除し、再度ドライバ情報を指定することでインストールできる
・本体の[↓]を押しながら電源をいれてアップデートモードで起動する
・PC側でDfuSe Demoを起動し、Upgrade or Verify ActionのVerify after downloadにチェックを入れ、ChooseボタンでLIBファイルを選択し、Upgradeボタンを押す。APPファイルも同様にUpgradeする。

●UIコントロール(※DSO BenF Firmware ver3.62の場合です)
・[A]ボタンは画面ホールド
・VDを選択後、[←][→]で縦軸の電圧スケールを変更(10mV~10V)
・TDを選択後、[←][→]で横軸の時間スケールを変更(1us~10s)
・YAを選択後、[OK]で縦軸カーソル種類(V1、V2、GND等)を選択、[←][→]で移動、[B]でカーソルON/OFF
・MEを選択後、[OK]で計測種類(周波数、デューティ比、Vpp等)を選択。画面右上に表示される。
・FIを選択後、[OK]でファイル操作種類(画面BMP保存、設定保存、設定読込等)を選択、[←][→]でファイル名(右下)を指定し、[B]で保存または読み込み
・FRを選択後、[OK]で周波数出力設定(周波数[10Hz~1MHz]、デューティ比)を選択、[←][→]で値を変更

とりあえず、これ以外の項目は何に使うのか、どう使うのかよくわかりませんが、(初めてオシロを使った僕としては)なかなかいいんじゃないかと思います。
欲を言えば、CHが2つ欲しいとか周波数出力はsin波も欲しい等々あるけど、値段の価値はありそう。

で、早速PSoCで信号を出してみた。






いやぁ、楽しいww しばらくはコレで遊べそう。

Androidでサーボ制御 その2 (PSoCでDTMFデコード)

2011年05月29日 | PSoC
前回はDTMFのデコードにCM8870PIを使いました。
今回は、アプリケーションノート[AN2247:PSoC_low_cpu_DTMF_Detector]を使って、PSoCでDTMFデコードをしています。
デコードICが無くなった分、回路図はすっきりしましたが安定性はイマイチかも。
まぁでも、このAN2247を作った人は凄いと思います。よくこんなの作れるなぁと尊敬します。

実は信号を直接入力しても反応しなかったのでアンプ(NJM386BD)を通して増幅したら動きました。
この辺は、よくわかりません

回路図です。ひじょーに怪しいですが、動いています

※5/31 回路図を少し変更しました。
※6/02 回路図を更に変更しました。

プロジェクトファイルです。
デザイナ: 5.0 SP6
デバイス: PSoC CY8C29466 5V
コンパイラ:ImageCraft
PSoC_DTMF_Ctrl.zip

Androidでサーボ制御(DTMF)

2011年05月25日 | その他
Androidで何かデバイスを制御する場合、基本はBluetoothを使います。
しかし、相手先から信号を受け取る必要が無く、有線で、そんなに速度を要求しない場合は、もっと簡単で安く実現できる方法があります。
それは電話発信音のDTMFを使うことです。こちらもポピュラーな方法です。

という訳で、AndroidからDTMF音を発信し、デコードICのCM8870PIで解読し、PSoCでサーボを制御するサンプルを作ってみました。※CM8870PIについてはこちら
本当はRobo-Qを動かす予定だったけど、放電しすぎたのか充電できなくて動かなかった...orz
PSoCはブレッドボードのスペースの都合上、8pinのCY8C27143を使いました。そのため、DTMF信号は本来4bit取得できるのを3bitに限定しました。これでも8個の命令が出せるし、2つ3つと組み合わせれば、もっと増やせます。

ちなみに、携帯電話(ガラケー)でもiPhoneでも問題なく動作しますwwwあたりまえですが...
DTMF音が出せる機器であれば何でもコントローラーになるってのは魅力的です。





回路図です。


プロジェクトファイルです。
デザイナ: 5.0 SP6
デバイス: PSoC CY8C27143 5V
コンパイラ:ImageCraft
PSoC_DTMF_Ctrl_CM8870PI.zip


いや、ほんとはBluetoothでやりたいけど、基板が高いんだよね...orz