PSoC4M Pioneer Kit で Si4735 ラジオモジュールコントロール その2

2015-08-30 09.09.19

ブレッドボードで組んでいる Si4735 ラジオモジュールのプログラムを少しづつ作っています。今日は、 CY8CKIT-044 の CapSense のスライド操作で音量を調節出来るようにプログラムを少し手直し。音量調整の基本部分が出来ました。

PSoC4M Pioneer Kit で Si4735 ラジオモジュールコントロール

2015-08-16 12.23.05

PSoC4M Pioneer Kit から Si4735 ラジオモジュールを動かすプロジェクトですが、周波数の表示装置を I2C 液晶から 7セグLEDに変更してみることにしました。というのは I2C 液晶が地味に大きいので配置に困ったことと、周波数わかればいいかということで、7セグ LED でもいいかということに。配置に困る理由は、上の写真手前にある緑色の基板が Arduino 用のシールド基板ですが、それと I2C 液晶と比較していただければ液晶のほうが幅大きくてはみだすからです。

2015-08-16 12.26.31

その結果、QDSP-6064 Bubble Display で周波数表示させてみようかということに。この LED は Sparkfun の Bubble Display – 7-Segment (4-digit) というやつです。国内のパーツショップでも取り扱われているので入手は簡単です。これを2つ使用して 8桁表示で使用することにしました。

早速 PSoC4M Pioneer Kit で 7セグドライブしようとコンポーネントを探してみましたが PSoC4 では 7セグ用コンポーネントが消えたみたいです。仕方ないので諦めてコーディングすることにしました。タイマー割り込みを発生させて一定期間で桁のドライブする仕様にして、周波数を表示させてみました。なんとか動いたのでOKかなというところです。音量調節は左右スワイプ、バンド切り替えは上下スワイプでプログラムしたら基本機能のインプリは終ります。

Cypress Bridge Control Panel から Si4735 ラジオモジュールの動作確認

2015-08-12 20.01.58

PSoC4M Pioneer Kit と Si4735 ラジオモジュールを接続した動作確認をやりはじましたが、いまいち動作が安定しませんでした。こういうときは、Bridge Control Panel というのを使用して i2c でエラー(NACK) が発生しているか確認するのが早いです。

PSoC4M のボードには KitProg というのが付いていて普段はマイコンのプログラミングに使用しますが、それ以外にもデバッガ、USB-UART Bridge, USB-I2C Bridge という機能も提供しています。今回は USB-I2C Bridge を使用します。

USB-I2C Bridge は Bridge Control Panel という Windows アプリから I2C のデバイスにデータの write/read をするものです。マイコンで試行錯誤する手間が省けるので大変便利です。

スクリーンショット 2015-08-12 20.01.15

上の写真のようにブレッドボードに Si4735 ラジオモジュールを差して、PSoC4M ボードの SDA/SCL 端子、電源を接続します。マイコン側は何もしなくて良いので、Lチカでもなんでもいいです。

Bridge Control Panel の上側のテキストボックスに送信する予定のコマンドを入れます。カーソルを送信したいデータの行に移動してリターンキーを叩けば i2c に送信されます。そして、送信結果は下側のテキストボックスに表示されます。

w 11+ 20+ 00+ 22+ 6A+ p r 11+ 80+ p 

結果の最終行を例にしますと
W : データ送信開始(Start コンディション)
11: デバイスのアドレス
+ : ACK が返ってきた
20: データ送信
+ : ACK が返ってきた
00: データ送信
+ : ACK が返ってきた
22: データ送信
+ : ACK が返ってきた
6A: データ送信
+ : ACK が返ってきた
p : 送信終了(stop コンディション)
r : 受信開始(start コンディション)
11: デバイスのアドレス
+ : ACK が返ってきた
80: データ受信
+ : ACK 送信
p : 受信終了(stop コンディション)
という内容です。

+ のかわりに – が表示されたら NACK が返ってきたことが一発でわかります。今回はプルアップ抵抗間違えて Si4735 ラジオモジュールが上手くうごきませんでしたが、これで動作確認してみたら NAK が返ってきたりしてるのがわかったので原因を調べるのに役立ちました。

CY8CKIT-044 CapSense の処理をちょっと考えちゅう

先週の出張中全然いじれなかった PSoC4M Pioneer Kit 。夏休みに入ってお墓参りなども済んでやっとのことでいじれるようになりました。

今週は、CapSense のプログラムをやってみようと準備というか超概略な仕様を検討。仕様と言っても指を右にクルクルさせたら右回転を判定するとかそういったレベルでの検討です。ここでのポイントは CapSense は設定にもよりますが同時押しは当然のように発生する前提でプログラムしないと駄目ということです。

ゼスチャ

URDLC は上・右・下・左・センターの略です。例えば U → R は右回転確定で判定したい。ところが同時押しの都合で U → C → R と検知する場合も考えられます。これも右回転確定で判定したい。ということでまとめたのが上の表。わかればいいので必要最低限のゼスチャだけ定義。

左右回転と左右のゼスチャが実装出来ると、Si4735 ラジオモジュールの周波数を替えるダイヤル操作や音量操作に使えるようになります。とりあえず今週はこのあたりがんばってみたいと思います。

PSoC4 M-Series Pioneer Kit CY8CKIT-044 CapSense お試し

2015-08-01 15.59.12

PSoC4 基板に配置されている CapSense の読み込みをやっています。CY8CKIT-042 はスライダの形したセンサーでしたが、こちらはボタンが円形になるように配置されています。

CapSense の使い方の練習ということでサンプルを元に右回り、左回り、右スライド、左スライド、上スライド、下スライドの判定のところがどうなっているのか調査開始。下記 printf デバッグで出したボタン状態をもとに判定するのをどうしようかなぁと考えるところからです。↓の例は右回りに指をスライドさせたときの出力例です。

U: 1 R: 0 D: 0 L: 1 C: 0
U: 1 R: 0 D: 0 L: 1 C: 0
U: 1 R: 0 D: 0 L: 1 C: 1
CLOCKWISE
U: 1 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 0 C: 1
U: 1 R: 0 D: 0 L: 0 C: 1
U: 1 R: 0 D: 0 L: 0 C: 0
U: 1 R: 0 D: 0 L: 0 C: 0
U: 1 R: 0 D: 0 L: 0 C: 0
U: 1 R: 0 D: 0 L: 0 C: 0
U: 1 R: 1 D: 0 L: 0 C: 0
U: 1 R: 1 D: 0 L: 0 C: 0
U: 1 R: 1 D: 0 L: 0 C: 0
U: 1 R: 1 D: 0 L: 0 C: 0
U: 1 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 0 L: 0 C: 0
U: 0 R: 1 D: 1 L: 0 C: 0
U: 0 R: 1 D: 1 L: 0 C: 0
U: 0 R: 1 D: 1 L: 0 C: 0
U: 0 R: 1 D: 1 L: 0 C: 0
U: 0 R: 1 D: 1 L: 0 C: 0
U: 0 R: 0 D: 1 L: 0 C: 0
U: 0 R: 0 D: 1 L: 0 C: 0
U: 0 R: 0 D: 1 L: 0 C: 0
U: 0 R: 0 D: 1 L: 0 C: 1
U: 0 R: 0 D: 1 L: 0 C: 1
U: 0 R: 0 D: 1 L: 0 C: 1
U: 0 R: 0 D: 1 L: 1 C: 1
U: 0 R: 0 D: 1 L: 1 C: 1
U: 0 R: 0 D: 1 L: 1 C: 1
U: 0 R: 0 D: 1 L: 1 C: 1
U: 0 R: 0 D: 1 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 0 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 1 C: 1
CLOCKWISE
U: 1 R: 0 D: 0 L: 1 C: 1
U: 1 R: 0 D: 0 L: 1 C: 1

PSoC4 M-Series Pioneer Kit CY8CKIT-044 が届いた

2015-08-01 15.59.12

CY8CKIT-042 というが工作ショップで普通に買える PSoC4 の基板ですが、後継の CY8CKIT-044 というのが出ていたので購入した次第。マイコンチップは Flash メモリのサイズが大きくなっていたりしますが、基本のところは CY8CKIT-042 と同じ。基板で目立つのは CapSense のパターンがスライドから円形っぽい感じになったことですかね。

ということでグリグリ回すパターンが試せる Touch Gestures Example Project を Build して書き込んでみましたが、PDF のユーザーガイドに書いてるような動きと違いスムーズなセンスを行ってくれません… CapSense のバージョンか何かで感度などが違うのかも知れませんがいきなりデバッグからせなあかん状況になりそうで面倒くさい感じが漂うところ

もうちょっと調べてみよう