psoc4 bleで作る簡単無線センサーユニット

36
PSoC4 BLE ででで でででででででででででで PSoC ででで 2016 2016/09/17 Kenta IDA (@ciniml)

Upload: kenta-ida

Post on 16-Apr-2017

530 views

Category:

Technology


4 download

TRANSCRIPT

PSoC4 BLE で作る簡単無線センサーユニットPSoC まつり 20162016/09/17

Kenta IDA (@ciniml)

2

自己紹介

•Kenta IDA (@ciniml)•仕事:ワイヤボンダのソフト開発•組み込み CPU 用と Windows 用

•使用言語: C#, C++, 時々 VHDL, 仕方なく C•使用回路 CAD : KiCad

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

3

Windows 10 IoT Core on RPi2

部屋の消費電流ロガー作ってみた

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

分電盤

BLE ドングル

液晶画面の裏に RPi2

2016/9/17

電流センサー

PSoC4

BLE電流センサーユニット

電流データ on BLE

4

機能

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

•直近 1 分間の消費電流の変化をグラフ表示

リアルタイム表示(1 秒間隔 , 1 分間

分 )

2016/9/17

5

機能

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

•消費電流の履歴保存・表示 表示対象の期間選択

期間内の履歴をグラフ表示d

2016/9/17

6

センサーユニット構成

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

7

センサーユニットの構成

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

カレントトランス

PSoC4 BLE(CY8CKIT-142/EZBLE PSoC)

2016/9/17

電池(CR2032)

•カレントトランス•交流電流測定

•電池• CR2032 ( コイン電池 )

•PSoC4 BLE•センサ処理

• BLE 通信

8

カレントトランスの信号

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

•カレントトランス• センサ内に通した導線の交流電流を測定

• 導線の 1/n の電流が流れる

• 抵抗で電圧に変換• あまり大きく出来ない (10Ω とか )

• 線形でなくなる

→10 [mV/A] くらいの出力

→ 増幅しないと ADC 辛い…

9

PSoC4 BLE のアナログ機能

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

•アナログコンパレータ

•オペアンプ• 4 個入っている

•SAR ADC•差動 ADC としても使える

→ 差動アンプ + 差動 ADC で直接取り込み

10

差動アンプと ADC の構成

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

•サンプルプロジェクトあり• ADC_Differential_Preamplifier

•外付け部品 3 点•フィードバック用抵抗

11

センサーユニットの外観

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

CR2032 用電池ホルダ

EZ-BLE PSoC

フィードバック用抵抗

12

センサーユニットの回路

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

EZ-BLE PSoC

フィードバック用抵抗

電池

13

最終的な PSoC の内部設定

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

14

開発環境

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

15

開発用キット

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

•CY8CKIT-042-BLE Bluetooth Low Energy Pioneer Kit•BLE ユニット開発に必要な物一式揃う• Kitprog( デバッガ ) 付きベースボード

• CY8CKIT-142 PSoC4 BLE モジュール

• CySmart BLE (BLE 通信テストモジュール )•工事設計認証済み

16

開発用キット

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

CY8CKIT-042-BLE ベースボード

CY8CKIT-142

電流検出ジャンパ

17

開発用キット

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

•余談:新しいやつ出てる•CY8CKIT-042-BLE-A• CY8CKIT-143A が付属• CY8CKIT-142 ではない

→ 工事設計認証 (MIC) どころか FCC/CE すら通ってない→気を付けよう。

18

CySmart

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

•BLE 通信テスト用のモジュール•Windows 用ソフト (CySmart) から使う

•BLE 通信の一通りの確認が可能•スキャン、接続

•キャラクタリスティックの読み書き

•セントラル・ペリフェラルの問題切り分けに便利•Windows の BLE スタックがアレだったりもするので。

19

CySmart

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

20

BLE 通信処理

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

21

BLE の通信処理

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

•基本•値 ( キャラクタリスティック ) の読み書き

•値の集まり ( サービス ) で機能を識別

→ サービスを定義する必要あり

•定義済みサービス•広く使われる物は定義済み

•Bluetooth SIG が管理

22

カスタムサービスの定義

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

•カスタムサービス•定義済みでないものは自分で定義

•当然、 PSoC Creator でもサポート

•アプリケーションノートあり• AN91162 - Creating a BLE Custom Profile

23

カスタムサービスの定義

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

カスタムサービス (Current Sensing Service)

定義済みサービス

定義済みサービス

24

カスタムサービスの定義

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

カスタムサービス(Current Sensing Service)

•Current Sensing Service• 2 つのキャラクタリスティック

•Current• センサの生の測定値

•Coefficient• センサ測定値を [A] 単位に変換するための係数• PSoC4 BLE には FPU が無いのでセントラル側で変換

25

消費電力

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

26

消費電力の削減

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

•電源: CR2032•定格容量 220[mAh]

•目標: 1 ヶ月連続動作• 24[h]*30[d] = 720[h]• 220[mAh]/720[h] ≒ 0.31[mA]→ 平均消費電流 0.31[mA] 以下

27

消費電力の削減

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

•極力寝る• =CPU 、周辺回路を止める (DEEP SLEEP)

•3 つのクロック• ECO : BLE 用 外部水晶発振子 (24[MHz])• IMO :内蔵発振回路 (48[MHz]) CPU 用

•WCO :外部水晶発振子 (32.768[kHz])→BLE 、 CPU を極力止める

28

BLE の通信間隔

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

•BLE 通信•CPU+BLE 回路が必要

•かなり消費電流大きい• 定常 5[mA] 、ピーク~ 20[mA]

•極力通信しない

→ 通信パラメータで 1[s] 間隔に設定

Connection interval

29

BLE 通信時の電流波形

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

•簡易電流プローブ• 10[mV]=1[mA]

•ピーク 18[mA]•積分値 26.3[uAs]

30

交流電流の測定

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

• 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]

31

交流電流計測時の電流波形

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

•3.2[kSPS] 、 64 点• 50[Hz] の 1周期分

•ピーク 5.3[mA]•積分値 33.8[uAs]

32

BLE 通信時の注意点

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

•データ送信時は BLE の状態を確認•BLE が起きている時に送信要求

•でないと次の送信タイミングまで寝なくなる

•Cypress リポジトリのサンプルコードを確認• GitHub の cypresssemiconductorco/BLE

BLE状態取得関数

ECO安定 =送信タイミングなので起きた

33

BLE 通信時の注意点

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

•計測後に無駄な時間•CPU+BLE が起きたまま

•積分値: 258[uAs]•ADC タイミング依存•場合によりもっと増える• 5[mAs] とか

計測 無駄

計測結果送信要求

BLE起動

BLE送信タイミング

34

まとめ

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

•PSoC4 BLE は•オペアンプとか内蔵されてて便利

• EZ-BLE PSoC なら数点の外付け部品のみでセンサユニットが作れる

•まずは CY8CKIT-042-BLE買うと良い

35

ソースコード

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

•GitHub• ciniml/ACCurrentSensor_PSoC4•興味がある方はどうぞ。

おしまい

PSoC4 BLE で作る簡単無線センサーユニット 2016/9/17 36