BLEデバイス製作とiPhoneからのコントロールの基本

Similar documents
1. 目次 PixiModule ターミナルアプリ (ios 版 ) ソース説明 2. ios 版ご利用の前に ソースファイル内の用語の説明... 4 サンプル 4. ソースファイルの構成 Main.storyboard の説明 ViewControlle

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

AKI-PIC16F877A開発キット (Ver1

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

スライド 1

Taro-82ADAカ.jtd

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

まず,13 行目の HardwareTimer Timer(1); は,HardwareTimer というクラスを利用するという宣言である. この宣言によって Timer というインスタンスが生成される.Timer(1) の 1 は,OpenCM に 4 個用意されているタイマのうち,1 番のタイマ

HDLトレーナーサンプルプログラム説明書

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Microsoft Word - USB60F_Raspi_ doc

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

CONTEC DIOプロバイダ ユーザーズガイド

目次 各装置仕様... 2 各部の名称... 3 簡易操作手順... 6 データフォーマット... 7 無線設定... 8 無線設定変更手順... 9 Ethernet 設定 HYBRID ROUTER の追加機能について 制限事項... 15

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

1. 概念 STM32F4 Discovery 基板は Mini USB を接続して デバッグやプログラムの書き込みができるようになっています 通常は CPU の 0x 番地からプログラムを実行します では なぜわざわざこのプロジェクトの雛形を使用して CPU の 0x

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

Microsoft Word - BLEBluetooth Low Energy.docx

IEEE1888 開発キットの活用 電力管理システムを作る 慶應義塾大学 メディアデザイン研究科 秋山寛子

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

ZEAL-LE0-C_ユーザーズマニュアル_rev1.pages

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

ワイヤレスバーコードリーダー CM-520W1 設定資料 Bluetooth SPPの設定

RL78 BLE Dongle ユーザーズマニュアル RL78 BLE Dongle ユーザーズマニュアル テセラ テクノロジー株式会社 TS-TUM03625 Rev : /1/13-1 -

Micro Focus Enterprise Developer チュートリアル メインフレーム COBOL 開発 : MQ メッセージ連携 1. 目的 本チュートリアルでは CICS から入力したメッセージを MQ へ連携する方法の習得を目的としています 2. 前提 使用した OS : Red H

三菱電機マイコン機器ソフトウエア株式会社

PowerPoint Presentation

EB-RL7023+SB/D2

訂正 _ 第 1 回 1 Arduino Arduino を用意する 入力 アナログ Analog 入出力 任意の電圧を扱える 電源系 外部入力 7 12V デジタル digital 入出力 リセットボタン Low High いわゆる 01 が入出力される 通常は Low 0V GND High 5

プログラミング基礎

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

4. 環境変数の設定実行にあたり 次のように環境変数を設定する必要があります 1)SJIS ロケールの指定コマンド例 )export LANG=ja_JP.sjis 2)MQ 環境の指定コマンド例 ). /opt/mqm/bin/setmqenv s 3)COBOL 実行環境の指定コマンド例 ).

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で

tri_s_tg12864_vcp の説明 2014/02/05 飛石伝ひ CPU 基板 の LCD TG12864 の表示プログラムです 漢字表示 (JIS208) を行うことができます USB の VCP ( 仮想 COM ポート ) を使用して非同期シリアル通信により 表示試験を行うことができ

TFTP serverの実装

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

講習会 Arduino

KEW Smart for KEW3552BT 取扱説明書

PIC

RN4020 を操作しよう 山本恵理 RN4020 を操作しよう : 準備編 RN4020 の操作を試す際の手軽な構成を図 1 に示します 以降は この構成で使用例を紹介します 図 1 RN4020 を試すオススメのシステム構成 RN4020 をブレットボードで使う準備 RN4020 のピッチパター

PowerPoint プレゼンテーション

G800SE HTMLdocument update

Microsoft Word - USB60BCR_10.doc

UMB-CP2114 User's Manual

Java講座

Arduinoで計る,測る,量る

株式会社日新テクニカ USB シリアル CAN 変換器 /8/22 ホームページ : メール

SystemDirector Developer's Studio(V3.2) 適用ガイド

自作デバイスボード製作 データ作成 データ登録方法 Rev.A 2017/07/29 Mille-feuille のプロジェクトに自作のデバイスを追加して自分で販売したい方向けの情報です 誰でも参加可能なコミュニティにしていきたいと思っています 大まかな流れは以下の通りです 基本的には回路設計がわか

RXファミリ搭載マイコン評価ボード

A 既製のプロジェクトがある場合

KEW Smart for KEW3441BT 取扱説明書

Microsoft Word - BluetoothV21接続手順書3_CM520BT.docx

1. ボードの複数台制御 コンフィグ ROM から FPGA が起動できる場合を想定しています FPGA 回路には 特定のレジスタアドレスにプリセットしたデータが必要です 製品出荷時のサンプル FPGA 回路では レジスタ No.3 を 8bit 幅に設定し FPGA 外部の 4bit ディップスイ

PowerPoint プレゼンテーション

Microsoft Word - PIC-USBマイコンボード_v1-02@WEB公開用資料.docx

ギョロモガイガー Ⅱ 操作ガイド ギョロガイガー Ⅱ 操作ガイド 本書では ギョロガイガー Ⅱ の操作方法についてご説明いたします 目次 1. 概要 コンセプト 主な機能 基本仕様 インストール 使い方...

SmartBrowser_document_build30_update.pptx


内容 1 製品内容 基本仕様 特長 規格認証 電気的仕様 定格 ブロックダイアグラム ibeacon / Beacon 外形図 ibeacon / Beacon

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

Studuino ライブラリ環境設定Windows編

Studuinoライブラリ環境設定Mac編

Si 知識情報処理

[参考資料] Bluetooth対応タブレットでインターネット(MSP1000)

デジタル回路入門

KEIm-25ヘッダーボードハードウェアマニュアル

GR-SAKURA-SAのサンプルソフト説明

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

前回の内容 マイクロコンピュータにおけるプログラミング PC上で作成 コンパイル マイコンに転送 実行 プログラムを用いて外部の装置を動作させる LED turnonled turnoffled LCD printf プログラムを用いて外部の装置の状態を読み取る プッシュスイッチ getpushsw

POWER EGG 3.0 Office365連携

Microsoft PowerPoint LC_15.ppt

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

目次 1.BT UPDATER PRO を Windows PC へインストールする BT UPDATER PRO を起動する 操作説明 (1) 操作説明 (2) インカムのファームウェア ( ソフトウェア ) をアップデートする

PRONETA

Transcription:

BLE デバイス製作と IPHONE からのコントロールの基本 2013/02/02 Koki Ogura CEO Laksmi-Do Corp. Twitter: @idev_jp Mail: idev@laksmido.com

目的 : 何ができるようになるの? BLEデバイスにはLEDとプッシュスイッチがついているとする iphoneからledの明るさを調節したり スイッチが押された回数をiPhoneが知ること ができるようになる

3 パート構成 1 BLEの基本 2 デバイス製作の基本 3 iphoneアプリ作成の基本

BLE の基本 GATT(Generic Attribute Profile) を使う 1-1 ペリフェラル ( デバイス ) 1-2 サービス uuid, description advertise 1-3 キャラクタリスティック ( 値 ) uuid, description value properties Read, Indicate, Notify Write,, WriteWithoutResponse ペリフェラルサービスキャラクタリスティックキャラクタリスティックサービスキャラクタリスティックキャラクタリスティックキャラクタリスティック

ペリフェラル 具体例 General Access デバイスの名前 種類 Device Information モデル番号 製造者 Demo Service( 独自サービス ) LED( 独自のキャラ ) SW( 独自のキャラ ) Generic Access (0x1800) Device Name (0x2a00) Appearance (0x2a01) Device Information (0x180a) Model Number String (0x2a24) Manufacture Name String (0x2a29) Demo Service LED - Read,WriteNoResponse SW - Indicate,Read,Write

GATT について すでに決まっているサービスやキャラクタリスティックが多くある 決まっているもののUUIDは2バイトで表されている そうでない自前のものは16バイトのUUIDを独自に生成し使用する 以下のURLを参照 http://developer.bluetooth.org/gatt

休憩

デバイス製作の基本 BLUEGIGA 社のBLE112を使う http://www.bluegiga.com/bluetooth-low-energy BLEに必要な機能を1チップに内蔵 マイコン (TI 社 CC2540) チップアンテナ ( 最高出力は+3dB) XMLとスクリプト言語を使って動作を記述する

BLE112 の入出力ポート GPIO 17 ADC 8 USART 2 SPI 2 TIMER 3 PWM 4 割り当て表はBLE112 Datasheet Page 8

回路図 電源部 3.3V プログラム用コネクタ SW LED 3.3mA BLE112

製作したデバイス

BLE112 のプログラム ハードウェア記述ファイル (hardware.xml) GATT 記述ファイル (gatt.xml) スクリプト記述ファイル (DemoProg.bgs) プロジェクト記述ファイル (project.bgproj)

ハードウェア記述ファイル 使用するハードウェア機能を記述する ( 拡張子 xml) <?xml version="1.0" encoding="utf-8"?> <hardware> <sleeposc enable="true" ppm="30" /> <sleep enable="false" /> <timer index="1" enabled_channels="0x3" divisor="0" mode="2" alternate="2" /> <txpower power="15" bias="5" /> <script enable="true" /> </hardware>

GATT 記述ファイル GATTを記述する ( 拡張子 xml) <?xml version="1.0" encoding="utf-8"?> <configuration> サービス1 サービス2 サービス3 </configuration>

GATT 記述ファイル ( サービス 1) <service uuid="1800"> <description>generic Access</description> <characteristic uuid="2a00"> <properties read="true" const="true" /> <value>ble112 Demo Prog</value> </characteristic> <characteristic uuid="2a01"> <properties read="true" const="true" /> <value type="hex">0000</value> </characteristic> </service>

GATT 記述ファイル ( サービス 2) <service type="primary" uuid="180a" id="manufacturer"> <description>device Information</description> <characteristic uuid="2a24"> <properties read="true" const="true" /> <value>lsd20130127</value> </characteristic> <characteristic uuid="2a29"> <properties read="true" const="true" /> <value>idev_jp</value> </characteristic> </service>

GATT 記述ファイル ( サービス 3) <service uuid="542eed63-5cd0-4184-a840-cb4814efd9f2" advertise="true"> <description>demo Service</description> <include id="manufacturer" /> <characteristic uuid="100bfb9e-a739-498b-a2d0-893db70ddd97" id="xgatt_led"> <description>led</description> <properties read="true" write_no_response="true"/> <value type="hex">0000</value> </characteristic> <characteristic uuid="b550fba0-78a0-45d8-b2fe-caf6b5ceff44" id="xgatt_sw"> <description>sw</description> <properties indicate="true" read="true" write="true"/> <value type="hex">0000</value> </characteristic> </service>

スクリプト記述ファイル BGScript 言語を使ってデバイスの動作を記述する ( 拡張子 bgs) BGScript 言語はBASICライクな言語 BGScript 言語はイベントドリブン 実際のファイルを見ながら説明します LEDの明るさの変化はタイマー 1チャネル1のPWMで実現する SWが押されたかは割り込みを使って知る

プロジェクト記述ファイル プロジェクト全体のプログラム要素をxmlで記述する ( 拡張子 bgproj) <?xml version="1.0" encoding="utf-8"?> <project> <gatt in="gatt.xml" /> <hardware in="hardware.xml" /> <script in="demoprog.bgs" /> <image out="out.hex" /> </project>

出来上がったプログラムをアップロード TI 社のCC DebuggerでPCとデバイスを接続する BLE Updateというアプリを使ってアップロード CC Debuggerのポートを指定 作ったプロジェクト記述ファイルを指定 あとはUPDATEボタンを押すだけ! コンパイルやエラーチェック 問題なければアップロード そしてデバイスは起動してサービスをAdvertiseしはじめる

入手方法 最初は開発キットDKBLE112を購入するのがお勧め http://www.bluegiga.com/evaluation_ble112 評価ボード CC Debugger BLE112 x2 BLED112 x1 日本の代理店を通すと納期が1カ月 値段も非常に高くなる (6 万程度 ) Mouserで購入するのが早い ( 在庫あれば4 日程度 ) 安い (3 万 5 千程度 ) http://jp.mouser.com BLE112 単体では1700 円程度 CC Debugger 単体では5 千円程度

休憩

IPHONE アプリ作成の基本 Core Bluetoothを使う 利用可能なBLEペリフェラルを知る 告知されているサービスを知る ペリフェラルと接続する ペリフェラルから切断する キャラクタリスティックに値を書込む キャラクタリスティックから値を読込む 汎用クラスを作ってみた 汎用クラスを使ったアプリ作成

CORE BLUETOOTH を使う Linked Frameworks and Libraries に CoreBluetooth.framework を追加する 使用するプログラムに #import <CoreBluetooth/CoreBluetooth.h> を追記する デリゲートを指定しておく @interface HogeHogeClass : SuperHogeClass <CBCentralManagerDelegate> 使用するクラスのインスタンスを作っておく @property (strong) CBCentralManager* CentralManager; _CentralManager = [[CBCentralManager alloc] initwithdelegate:self queue:nil];

利用可能な BLE ペリフェラルを知る 接続可能な BLE ペリフェラルは一定時間間隔でサービスの告知をおこなっており それを受信するには次のようにすればよい If ([_CentralManager state] == CBCentralManagerStatePowerOn) { } [_CentralManager scanforperipheralswithservices:nil options:nil]; この結果は次のデリゲートで通知される - (void)centralmanager:(cbcentralmanager*)central diddiscoverperipheral:(cbperipheral*)peripheral advertisementdata:(nsdictionary*)advertisementdata RSSI NSNumber*)RSSI: この advertisementdata に告知された GATT のサービスの情報が入っている なお告知の受信が必要なくなれば次のようにして止める [_CentralManager stopscan];

告知されているサービスを知る 先のadvertisementDataから告知されたサービスのuuidを取り出すには NSArray* services; services = [advertisementdata objectforkey:@ kcbadvdataserviceuuids ]; 必要とするサービス (UUID) が次のように定義されていたとする #define MY_SERVICE = @ 123456-789a-bcde-f0123456789a ; これが告知されたサービスに含まれるかどうかの判定は If ([services containsobject:[cbuuid UUIDWithString:MY_SERVICE]) { // このservicesに必要とするサービスが含まれている! }

ペリフェラルと接続する 必要としているサービスが services に含まれていれば 次はデリゲートで services 同時に得ることができた peripheral を使ってペリフェラルと接続する その方法は次のようになる [_CentralManager connectperipheral:peripheral options:nil]; 結果はデリゲートで次の 2 つのうちの一つが呼ばれる 接続が成功したとき - (void)centralmanager: (CBCentralManager*)central didconnectedperipheral:(cbpheripheral*)peripheral; 接続が失敗したとき - (void)centralmanager: (CBCentralManager*)central didfailtoconnectedperipheral:(cbpheripheral*)peripheral;

ペリフェラルから切断する 接続しているペリフェラルからは次のようにして切断する [_CentralManager cancelperipheralconnection:peripheral]; そしてこの結果はデリゲートで次が呼ばれる - (void)centralmanager:(cbcentralmanager*)central diddisconnectperipheral:(cbperipheral*)peripheral error:(nserror*)error;

ペリフェラルのサービス一覧を得る 告知で得られるサービスはペリフェラルの提供するサービスの一部 従って接続に成功したらペリフェラルの提供する全てのサービスを知る必要がある まずデリゲートを受け取るクラス @interface HogeClass : SuperClass <CBPeripheralDelegate> そして通知を得るには次のようにする [peripheral setdelegate:hogeclass のインスタンス ]; [peripheral discoverservices:nil]; 結果はデリゲートで次が呼ばれる - (void)peripheral:(cbperipheral*)peripheral diddiscoverservices:(nserror*)error; この時 peripheral.services にサービス一覧がすでに入っている

サービスのキャラクタリスティック一覧 サービス一覧を得ることができたら 次はそれぞれのサービスのキャラクタリスティック一覧を得るようにする これは先のデリゲートの関数内で次のようにする _peripheral = peripheral; // _peripheral はクラスの @property で確保しておく for (CBService* service in _peripheral.services) { } [_peripheral discovercharacteristics:nil forservice:service]; 結果は今までと同様にデリゲートで呼ばれるが この結果自体は _peripheral.services 内の各 service の service.characteristics に入っているのでデリゲート関数は書かなくても良い つまり _peripheral.services から各サービス service service.characteristics から各キャラクタリスティックを網羅できる

必要なキャラクタリスティックを得る サービスの uuid を s_uuid キャラの uuid を c_uuid とした時 キャラのクラス CBCharacteristic への参照は次のようにして得ることができる for (CBService* service in _peripheral.services) { } if ([service.uuid isequal:[cbuuid UUIDWithString:s_uuid]]) { } for (CBCharacteristic* characteristic in service.characteristics) { } if ([characteristic.uuid isequal:[cbuuid UUIDWithString:c_uuid]]) { } // 見つかった!

キャラクタリスティックに値を書込む GATT で Write を指定しているキャラクタリスティックへの書込みは - (void)write:(cbcharacteristic*)characteristic buffer:(void*)buf length:(int)len { } NSData* data = [NSData datawithbytes:buf length:len]; [_peripheral writevalue:data forcharacteristic:characteristic type:cbcharacteristicwritewithresponse]; GATT で WriteWithoutResponse を指定しているキャラクタリスティックなら最後のパラメタを CBCharacteristicWriteWithoutResponse とする

キャラクタリスティックから値を読込む 読込む時は 読込む為の依頼 をし 結果はデリゲートの関数で得ることとなる 読込みの依頼は [_peripheral readvalueforcharacteristic:characteristic]; 結果は次のデリゲート関数に通知される (void)peripheral:(cbperipheral*)peripheral didupdatevalueforcharacteristic:(cbcharacteristic*)characteristic error:(nserror*)error; このキャラクタリスティックの値は NSData* data = characteristic.value; const void* buf = [data bytes]; NSInteger len = [data length]; で得ることができる

INDICATE や NOTIFY の依頼 接続するだけでは Indicate や Notify は実行されない このプロパティを持っているキャラクタリスティックに対して通知の要請をするには次のようにする [_peripheral setnotifyvalue:true forcharacteristic:characteristic]; これ以降は読込み依頼に対するのと同じデリゲートで値の更新があった時に通知されるようになる

汎用クラスを作ってみた CoreBluetooth は結果がデリゲートで通知される場合が多く非同期処理が必要になる そこでこれら ( の多く ) を隠蔽した汎用クラスを作ってみた BLEBaseClass.h BLEBaseClass.m

汎用クラスの使い方 1 ヘッダーのインポート #import BLEBaseClass.h デリゲートの設定 @interface HogeClass () <BLEDeviceClassDelegate> プロパティの追加 @propterty (strong) BLEBaseClass* BaseClass; @propterty (readwrite) BLEDeviceClass* Device; 初期化とサービスのスキャン開始 _BaseClass = [[BLEBaseClass alloc] init]; [_BaseClass scandevices:nil];

汎用クラスの使い方 2 接続 切断 _Device = [_BaseClass connectservice:service_uuid]; [_BaseClass disconnectservice:service_uuid]; デリゲートの指定 ( 値を読込んだ時の通知 ) _Device.delegate = self; キャラクタリスティッククラスへの参照 CBCharacteristic* c = [_Device getcharacteristic:service_uuid characteristic:characteristic_uuid]; 書込み NSData* data = [NSData datawithbytes:&a length:2]; [_Device writewithresponse:c value:data]; [_Device writewithoutresponse:c value:data];

汎用クラスの使い方 3 読込み依頼 通知依頼 [_Device readrequest:c]; [_Device notifyrequest:c]; 通知を受けた時のデリゲート - (void)didupdatevalueforcharacteristic:(bledeviceclass*)device Characteristic:(CBCharacteristic*)characteristic; 値の取出し NSData* data = characteristic.value; const void* buf = [data bytes]; NSInteger len = [data length];

汎用クラスを使ったアプリ作成 ソースファイルで説明

休憩

BLE 指南 常に連続してキャラクタスティックを変更する場合はプロパティとして write ではなく write_no_response= true として不必要な通信を抑制する 公開するサービス記述には advertise= true として iphone に知らせるようにする 自前のサービスやキャラクタスティックの UUID は必ず生成した 128bit のものを使用する キャラクタリスティックの変数長は 16 進数で記述したものが反映される 例えば <value type= hex >0000000000</value> なら 5 バイトの変数 また const= true を付けていない変数は自分でプログラムから初期化する必要がある 変数長は 20 バイトまでが一回の通信パケットで送れるのでパフォーマンスが良い

BLE112 指南 P1_0 は USB Pull Up でシステムが使用する (USB 使用時 ) P1_7 は DC-DC コントロールでシステムが使う ADC の 14 番は IC 内の温度センサとつながっている USB(cdc.xml) を記述していると TIMER1 を使った PWM が機能しない PWM は TIMER1 の ALTERNATE= 2 のポートでないとできない GPIO の入力に ( チャタリング防止等で ) キャパシタを付けると発振するのか動作がおかしくなる 特に割り込みを記述している時 P0_0, P0_1 を入力にしているとソフトタイマーの割り込み時 ( もしくは AD 変換要求時か?) に不必要な電圧降下を起こす 入力ポートについては外部にプルアップ プルダウンは付けない方が良い

BGSCRIPT 指南 イベント内で長い処理が必要ならタイムアウトにならないように config.xml 内に <script_timeout value= 0 /> と記入しておく デバイスがスリープするのを防ぐためには hardware.xml 内に <sleep enable= false /> と記述する

CORE BLUETOOTH 指南 iphone からデバイスを切断しても 接続開始時から約一分間はシステムから切断しない ( デバイス側からみると繋がったままとなる ) GATT を変更した場合は iphone の設定から Bluetooth を一旦切ってから入れなおさないとデバイス GATT が反映されない デバッグ時にこれがはまる

THANKS Downlod http://www.laksmido.com/bledemo/bledemo.zip