PSoC4 BLEで作る
簡単無線センサーユニット
PSoCまつり2016
2016/09/17
Kenta IDA (@ciniml)
自己紹介
•Kenta IDA (@ciniml)
•仕事:ワイヤボンダのソフト開発
• 組み込みCPU用とWindows用
•使用言語:C#, C++, 時々VHDL, 仕方なくC
•使用回路CAD:KiCad
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 2
Windows 10 IoT Core on RPi2
部屋の消費電流ロガー作ってみた
PSoC4 BLEで作る簡単無線センサーユニット
分電盤
BLEドングル
液晶画面の
裏にRPi2
2016/9/17 3
電流
センサー
PSoC4
BLE
電流センサーユニット
電流データ on BLE
機能
PSoC4 BLEで作る簡単無線センサーユニット
•直近1分間の消費電流の変化をグラフ表示
リアルタイム表示
(1秒間隔, 1分間分)
2016/9/17 4
機能
PSoC4 BLEで作る簡単無線センサーユニット
•消費電流の履歴保存・表示 表示対象の期間選択
期間内の履歴をグラフ表示
d
2016/9/17 5
センサーユニット構成
2016/9/17PSoC4 BLEで作る簡単無線センサーユニット 6
センサーユニットの構成
PSoC4 BLEで作る簡単無線センサーユニット
カレント
トランス
PSoC4 BLE
(CY8CKIT-142
/EZBLE PSoC)
2016/9/17 7
電池
(CR2032)
•カレントトランス
• 交流電流測定
•電池
• CR2032 (コイン電池)
•PSoC4 BLE
• センサ処理
• BLE通信
カレントトランスの信号
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 8
• カレントトランス
• センサ内に通した導線の交流電流を測定
• 導線の1/nの電流が流れる
• 抵抗で電圧に変換
• あまり大きく出来ない(10Ωとか)
• 線形でなくなる
→10 [mV/A]くらいの出力
→増幅しないとADC辛い…
PSoC4 BLEのアナログ機能
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 9
•アナログコンパレータ
•オペアンプ
• 4個入っている
•SAR ADC
• 差動ADCとしても使える
→差動アンプ+差動ADCで直接取り込み
差動アンプとADCの構成
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 10
•サンプルプロジェクトあり
• ADC_Differential_Preamplifier
•外付け部品3点
• フィードバック用抵抗
センサーユニットの外観
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 11
CR2032用
電池ホルダ
EZ-BLE PSoC
フィードバック用抵抗
センサーユニットの回路
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 12
EZ-BLE PSoC
フィードバック用抵抗
電池
最終的なPSoCの内部設定
2016/9/17PSoC4 BLEで作る簡単無線センサーユニット 13
開発環境
2016/9/17PSoC4 BLEで作る簡単無線センサーユニット 14
開発用キット
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 15
•CY8CKIT-042-BLE
Bluetooth Low Energy Pioneer Kit
• BLEユニット開発に必要な物一式揃う
• Kitprog(デバッガ)付きベースボード
• CY8CKIT-142 PSoC4 BLEモジュール
• CySmart BLE (BLE通信テストモジュール)
• 工事設計認証済み
開発用キット
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 16
CY8CKIT-042-BLE ベースボード
CY8CKIT-142
電流検出ジャンパ
開発用キット
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 17
•余談:新しいやつ出てる
• CY8CKIT-042-BLE-A
• CY8CKIT-143Aが付属
• CY8CKIT-142ではない
→工事設計認証(MIC)どころかFCC/CEすら通ってない
→気を付けよう。
CySmart
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 18
•BLE通信テスト用のモジュール
• Windows用ソフト(CySmart)から使う
•BLE通信の一通りの確認が可能
• スキャン、接続
• キャラクタリスティックの読み書き
•セントラル・ペリフェラルの問題切り分けに便利
• WindowsのBLEスタックがアレだったりもするので。
CySmart
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 19
BLE通信処理
2016/9/17PSoC4 BLEで作る簡単無線センサーユニット 20
BLEの通信処理
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 21
•基本
• 値(キャラクタリスティック)の読み書き
• 値の集まり(サービス)で機能を識別
→サービスを定義する必要あり
•定義済みサービス
• 広く使われる物は定義済み
• Bluetooth SIGが管理
カスタムサービスの定義
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 22
•カスタムサービス
• 定義済みでないものは自分で定義
• 当然、PSoC Creatorでもサポート
• アプリケーションノートあり
• AN91162 - Creating a BLE Custom Profile
カスタムサービスの定義
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 23
カスタムサービス(Current Sensing Service)
定義済みサービス
定義済みサービス
カスタムサービスの定義
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 24
カスタムサービス
(Current Sensing Service)
•Current Sensing Service
• 2つのキャラクタリスティック
• Current
• センサの生の測定値
• Coefficient
• センサ測定値を[A]単位に変換するための係数
• PSoC4 BLEにはFPUが無いのでセントラル側で変換
消費電力
2016/9/17PSoC4 BLEで作る簡単無線センサーユニット 25
消費電力の削減
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 26
•電源:CR2032
• 定格容量 220[mAh]
•目標:1ヶ月連続動作
• 24[h]*30[d] = 720[h]
• 220[mAh]/720[h] ≒ 0.31[mA]
→平均消費電流 0.31[mA]以下
消費電力の削減
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 27
•極力寝る
• =CPU、周辺回路を止める (DEEP SLEEP)
•3つのクロック
• ECO:BLE用 外部水晶発振子(24[MHz])
• IMO:内蔵発振回路(48[MHz]) CPU用
• WCO:外部水晶発振子(32.768[kHz])
→BLE、CPUを極力止める
BLEの通信間隔
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 28
•BLE通信
• CPU+BLE回路が必要
• かなり消費電流大きい
• 定常5[mA]、ピーク~20[mA]
• 極力通信しない
→通信パラメータで1[s]間隔に設定
Connection interval
BLE通信時の電流波形
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 29
•簡易電流プローブ
• 10[mV]=1[mA]
•ピーク18[mA]
•積分値26.3[uAs]
交流電流の測定
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 30
• 3.2[kSPS]、64点
• 50[Hz]の1周期分
• CPU+ADC
• IMO(48[MHz])が必要
• ADCが終われば寝られる
• 1/3.2[ms]で割り込み
• WDT使用
• DEEP SLEEPからタイマ割り込みでは
起きられない
→BLE同様1[s]間隔で測定
20[ms]
交流電流計測時の電流波形
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 31
•3.2[kSPS]、64点
• 50[Hz]の1周期分
•ピーク5.3[mA]
•積分値33.8[uAs]
BLE通信時の注意点
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 32
•データ送信時はBLEの状態を確認
• BLEが起きている時に送信要求
• でないと次の送信タイミングまで寝なくなる
• Cypressリポジトリのサンプルコードを確認
• GitHubのcypresssemiconductorco/BLE
BLE状態取得関数 ECO安定=送信タイミングなので起きた
BLE通信時の注意点
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 33
•計測後に無駄な時間
• CPU+BLEが起きたまま
• 積分値:258[uAs]
•ADCタイミング依存
• 場合によりもっと増える
• 5[mAs]とか
計測 無駄
計測結果送信要求
BLE起動
BLE送信
タイミング
まとめ
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 34
•PSoC4 BLEは
• オペアンプとか内蔵されてて便利
• EZ-BLE PSoCなら数点の外付け部品のみで
センサユニットが作れる
•まずはCY8CKIT-042-BLE買うと良い
ソースコード
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 35
•GitHub
• ciniml/ACCurrentSensor_PSoC4
• 興味がある方はどうぞ。
おしまい
PSoC4 BLEで作る簡単無線センサーユニット 2016/9/17 36

PSoC4 BLEで作る簡単無線センサーユニット