PSoCボードでBLE実験 株式会社スイッチサイエンス 坪井 義浩 1 スイッチサイエンスとは 電子工作に使う部品や基板を輸入・開発・製造販売 • 2008年創業、2010年法人化 • 従業員 14名 役員 2名 • 2 自己紹介 坪井義浩 (つぼいよしひろ) @ytsuboi スイッチサイエンス取締役 2009 2012-2013 2010- 3 I ♥ Cortex-M!! Cypressの他己紹介 5 No. 1 in SRAMs No. 1 in NOR Flash memories No. 3 provider of automotive MCUs and memories No. 1 in CapSense capacitive-sensing controllers 6 他己紹介ならではの紹介 - Initial e.g. Akira Tanaka→AKIT [email protected] 7 Cypressのマイコン 8 ふーん←→うっひょー! ※個人の感想です PSoCの基礎知識 PSoC PSoCは、MCUコアやプログラマブルアナログブロック、プログラマブルデジタルブロックに加え、 プログラマブルな相互接続および配線、CapSenseをワンチップに統合したプログラマブル組み込み システムオンチップ PSoC 4 ARM Cortex-M0 MCU内蔵のPSoC PSoC 4 BLE BLE無線ブロック1個と、ロイヤリティーフリーのBLEプロトコルスタック1個を 内蔵したPSoC 4 PRoC BLE (プログラマブルラジオオンチップ) BLE無線ブロック1個とCapSense1個、ロイヤリティーフリーのBLEプロトコル スタック1個を内蔵したARM Cortex-M0 MCU EZ-BLE PRoCモジュール CYBLE-022001-00 PSoC 4 BLEモジュール PRoC BLEモジュール EZ-BLE PRoC評価ボード 10 CypressのBLEソリューション 11 Bluetoothの基礎知識 Bluetooth Classic 携帯電話ヘッドセットへのオーディオストリーミングで一般的になったパーソナルエリア ネットワーク用の規格 GFSK変調方式で2.4GHz ISM帯域で動作し、最大3Mbpsデータレートに対応 Bluetooth Low Energy (BLE) ステートや制御情報を通信するための短距離向け低消費電力無線アプリケーションの規格 GFSK変調方式で2.4GHz ISM帯域で作動し、1Mbpsデータレートに対応 Bluetooth Classicと下位互換なし Bluetooth 4.0 BLEを追加したBluetooth Classic仕様のアップグレード版 Bluetooth Smart BLEのみに対応したBluetooth 4.0/4.1製品の商標 Bluetooth Smart Ready Bluetooth ClassicとBLEの両方に対応したBluetooth 4.0/4.1製品の商標 12 SmartとSmart Ready オーディオ Bluetooth Classic センサー データ Bluetooth Smart Ready Bluetooth Smart 13 BLEの基礎知識 GAP 役割、アドバタイズ、接続 Profile Service Health Thermometer “00001809-0000-1000-800000805F9B34FB” 0x1809 Characteristic Temperature Measurement Characteristic Temperature Type Service Characteristic Battery Service UUID(Universally Unique Identifier) https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx 14 BLEの基礎知識(2) 1 2 3 15 BLEの基礎知識(3) ①プロファイルは「サービス」の集合体 例えば、血圧プロファイルは「Generic Access」、 「Generic Attribute」、「Blood Pressure」、および 「Device Information」の4つのサービスで構成 ②サービスは「キャラクタリスティック」の集合体 例えば、Blood Pressureサービスは「Blood Pressure Measurement」、「Intermediate Cuff Pressure」、 および「Blood Pressure Feature」の3つのキャラクタ リスティックで構成 1 3 2 4 ③キャラクタリスティックは「ディスクリプタ」の集合体 例えば、Blood Pressure Measurement 特性は、図で示す通り、Bluetooth仕様の「フィールド」 のセットとして参照される属性で構成 ④ディスクリプタは最小の情報単位 例えば、実際のBlood Pressure値は、右図で示す通り 「Measurement Compound Value」フィールドの いずれかに格納 16 おすすめ書籍 例がnRF51822 17 ソフトウェアのセットアップとインストール 必要なソフトウェアと初期ステップ 提供されたUSBドライブの内容をノートPCにコピーして、下表に示すソフトウェアをインストールしてください。 画面上の指示に従って、所要時間15分程度のインストール作業を行ってください。 ソフトウェア バージョン ファイル名 PSoC Creator 3.3 CP3 PSoCCreatorSetup.exe 使用するハードウェア CYBLE-022001-00 ブレークアウト ssci.to/2503 ¥3,240 LM75B温度センサ ssci.to/1813 ¥378 Cro_Prog2キット ssci.to/2490 ¥3,700 CY8CKIT-002 PSoC MiniProg3 プログラム およびデバッグ キット $89=¥11,500 18 Beaconを試してみる 19 Eddystone • https://github.com/google/eddystone • Googleが2015年7月に発表 • オープン(Apache License 2.0) • Eddystone-UID…16ByteのユニークID • Eddystone-URL…短縮URL (Physical Web) • Eddystone-TLM…Beaconのバッテリ電圧など 20 Projectの作成(1) まず、PSoC Creatorを起動します。起動を終えたら、[File]-[New]-[Project]を選択して、新しいプロジェクトを作ります。 プロジェクトをつくるときには、使用するテンプレート を選択します。ここでは、「Target hardware」として 「Module: CYBLE-022001-00)」を選択します。 21 Projectの作成(2) 次に、Project templateは、「Pre-populated schematic」にしておきましょう。 最後に、プロジェクトに名前を付けます。 ここでは、「PRoC_Eddystone」として おきました。 22 cysch 23 BLE-General ProfileをCustomにします。 24 Custom Service 「Custom Service」のパラメータを変更します。UUIDを16-bitにして、 UUIDをEddystoneの「feaa」にします。 ※bit長のドロップダウンリストボックスが見当たらない場合、ウィンドウ を大きくすると表示されます。 25 Tips UUIDのbit長のボタンが 見当たらない! Windowのサイズを変更 26 GAP Settings 「General」の項に有る、「Silicon generated "Company assigned" part of device address」 にチェックを入れます。これにチェックを入れないと、ビルドしたバイナリを書き込んだBLEモ ジュールのデバイスアドレスが全て同じ値になってしまいます。 「Device name」にはお好みのものを入れてください。AppearanceはUnknownにしておきます。 27 Advertisement 「Advertisement settings」の項に有る、「Advertising type」を「Scannable undirected advertising」にします。 また、「Fast advertising interval」の「Timeout」のチェックを 外します。 28 Advertisement packet 「Service UUID」-「Custom Service」にチェックを入れます。また、「Service Data」「Custom Service」にもチェックを入れます。 すると、Dataの項に入力出来るようになりますので、Eddystoneのフレームを記入します。 ここでは、「10:00:01:73:77:69:74:63:68:2D:73:63:69:65:6E:63:65:00」と入力しました。 29 Eddystone-URLについて https://www. 10:00:01:73:77:69:74:63:68:2D:73:63:69:65:6E:63:65:00 s w i t c h - s c i e n c e .com/ 先頭1バイト目の0x10は、Eddystoneのものであることを意味します。2バイト目の0x00は 送信している電波の強度、GAP SettingsのGeneralでTX power levelを0dBmにしたので、 0dBmにしました。3バイト目はURLスキーム、0x03は「https」を意味します。その後はア スキーコードでURLの文字列を記述し、最後の0x00は、「.com/」を意味します。 https://github.com/google/eddystone/tree/master/eddystone-url 30 ASCIIコード表 0 10 20 30 40 50 60 70 SH SX EX ET EQ AK BL BS HT LF HM CL CR SO SI DE D1 D2 D3 D4 NK SN EB CN EM SB EC → ← ↑ ↓ ! ” # $ % & 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ¥ ] ^ _ a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ‾ 0 1 2 3 4 5 6 7 8 9 A B C D E F ( ) * + , − . / 31 main.c #include<project.h> voidStackEventHandler(uint32event,void*eventParam){ switch(event){ //Mandatoryeventstobehandled caseCYBLE_EVT_STACK_ON: CyBle_GappStartAdvertisement(CYBLE_ADVERTISING_FAST); LED_1_Write(0);//LEDon break; caseCYBLE_EVT_TIMEOUT: LED_1_Write(1);//LEDoff break; default: break; } } intmain() { CYBLE_API_RESULT_TapiResult; //Enableglobalinterrupts CyGlobalIntEnable; //InitializetheBLEdevice. apiResult=CyBle_Start(StackEventHandler); //ValidateBLEstackinitializationsucceeded CYASSERT(apiResult==CYBLE_ERROR_OK); for(;;){ //ServicealltheBLEstackevents. //MustbecalledatleastonceinaBLEconnectioninterval CyBle_ProcessEvents(); } } https://gist.github.com/ytsuboi/1674941119f6bf2a055f 32 Build 33 ライタの接続方向 34 接続の確認と書き込み 35 センサを繋いでみる 36 配線 37 cysch 38 Datasheet 39 ComponentsのName I2CM_Start(); I2CM_I2CMasterSendStart(LM75B_SLAVE_ADDR,1); data[0]=I2CM_I2CMasterReadByte(0); data[1]=I2CM_I2CMasterReadByte(0); I2CM_I2CMasterSendStop(); 40 cydwr 41 source code ├main.c ├htc.c…温度を測るコード ├bas.c…バッテリの残量を処理するコード └debug.c…Semihosting用コード セミホスティングとは セミホスティングとは、ARM ターゲット上のアプリケーションコードから発行される 入出力要求を、デバッガが実行されているホストコンピュータに伝達するメカニズム です。これを使用すると、例えば、printf() や scanf() などの C ライブラリ関数で、 ターゲットシステム上の画面とキーボードではなく、ホストの画面とキーボードを使用 することができます。 出典: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205gj/Bgbjjgij.html #ifdefined(__ARMCC_VERSION) #elifdefined(__ICCARM__)/*IAR*/ #else/*(__GNUC__)GCC*/ 42 PSoC Creatorのファイル <project_name> ├<project_name>.cywrk └<project_name>.cydsn ├TopDesign │└TopDesign.cysch …回路図 ├<project_name>.cydwr …"DesignWideResource” ├<project_name>.cyprj …使用しているコンポーネントなど └*.c,*.h …皆さんが書いたソースコード http://www.cypress.com/knowledge-base-article/revision-control-psoc-creator-projects-kba86358 43 ARM向けコンパイラ 44 Export PSoC CreatorのProject→Export to IDEでExport可能 MDK(uVision) Exportといっても、既存のフォルダにMDK のプロジェクトファイルが追加されるだけ。 MDKでコードを編集 benchmark 40 30 20 37.362925 34.206746 ARM Compiler 5.05 update 1 (build 106) GCC4.8.4 20140526 (release) 10 0 共に-O3でビルド。armccはgccの9.2%高速なバイナリを出力 ※時間の計り方に難がありますので、スコアそれ自体は 参照しないでください。 48 binary size 30000 22500 16,952 20,048 15000 7500 0 ARM Compiler 5.05 update 1 (build 106) GCC4.8.4 20140526 (release) 共に-O3でビルド。armccはgccの84.56%のバイナリを出力 49 ISO/IEEE 11073 ISO/IEEE 11073 Personal Health Data (PHD) Standards /*ConvertfloattotheIEEE-11073FLOAT-Type.*/ int8_texponent=0xFE;//exponentis-2 uint32_tmantissa=(uint32_t)(temperatureCelsius*100); temperatureValue=(((uint32_t)exponent)<<24)|mantissa; 50 開発の情報源 51 開発の情報源 http://www.cypress.com/blog/100-projects-100-days 52 ユニバーシティプログラム 53 ワークショップ http://www.cypress.com/workshops 54
© Copyright 2024 Paperzz