#301 BLE SiliconLabs Serial Brick
Overview
SiliconLabs BLE113を使用したBLE(Bluetooth Low Energy)のBrickです。 シリアルにて制御できるFirmwareが書き込まれているため、Arduino等からシリアル通信にてBLEを制御することができます。
BLEの転送レートは9600bpsに設定してあります。
Connecting
Serialコネクタへ接続します。
Serialコネクタは、Arduino用、RaspberryPI用、Ichigojam用のOUT/INシールドでは1箇所のみとなります。
写真はArduinoの接続例です。
Support
Arduino | RaspberryPI | IchigoJam |
---|---|---|
◯ | ◯ | × |
BLE113 Datasheet
Document |
---|
BLE113 Datasheet |
Schematic
Library
for Arduino
-
ライブラリ名:「FaBoBLE-BLE113」
- Document
for RapberryPI
-
ライブラリ名:「FaBoBLE_BLE113」
- Library Document
Sample Code
for Arduino(Advertise)
SerialコネクタにBLE Brickを接続し、BLEを他の端末から接続できる状態(Advertise)にします。
//
// FaBo Brick Sample
//
// brick_serial_ble
//
#include <SoftwareSerial.h>
SoftwareSerial bleShield(12, 13);
long previousMillis = 0;
long interval = 1000;
void setup()
{
// BLEとの通信用
bleShield.begin(9600);
// ログ出力用
Serial.begin(9600);
Serial.write("start!");
}
void loop()
{
// 一定時間ごとにコマンド実行
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
Serial.write("*\n");
previousMillis = currentMillis;
// アドバタイズ開始 (026100が返って来れば成功、BLEを検索すると見つかります)
// bleShield.write((byte)0x06); // パケットモードのみ
bleShield.write((byte)0x00);
bleShield.write((byte)0x02);
bleShield.write((byte)0x06);
bleShield.write((byte)0x01);
bleShield.write((byte)0x02);
bleShield.write((byte)0x02);
}
// 返答を出力
while (bleShield.available()) {
Serial.print(bleShield.read(), HEX);
}
}
for Arduino(Scan)
SerialコネクタにBLE Brickを接続し、他のBLE機器をスキャンしてシリアルモニタに出力します。
//
// FaBo Brick Sample
//
// brick_serial_ble_scan
//
#include <SoftwareSerial.h>
SoftwareSerial bleShield(12, 13);
long previousMillis = 0;
long interval = 1000;
void setup()
{
// BLEとの通信用
bleShield.begin(9600);
// ログ出力用
Serial.begin(9600);
Serial.write("start!");
}
void loop()
{
// 一定時間ごとにコマンド実行
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
Serial.write("*\n");
previousMillis = currentMillis;
// 検索開始 (02620が返って来れば成功、BLEを検索します。)
// bleShield.write((byte)0x05); //パケットモードのみ
bleShield.write((byte)0x00);
bleShield.write((byte)0x01);
bleShield.write((byte)0x06);
bleShield.write((byte)0x02);
bleShield.write((byte)0x02);
delay(1000);
}
int count = 0;
// 返答を出力
while (bleShield.available()) {
if (count==5){
Serial.write('\n');
}
Serial.print(bleShield.read(), HEX);
count++;
}
delay(100);
// 検索終了 (02640が返って来れば成功、検索を終了します)
// bleShield.write((byte)0x04); // パケットモードのみ
bleShield.write((byte)0x00);
bleShield.write((byte)0x00);
bleShield.write((byte)0x06);
bleShield.write((byte)0x04);
delay(100);
// 返答を出力
Serial.write('\n');
while (bleShield.available()) {
Serial.print(bleShield.read(), HEX);
}
Serial.write('\n');
}
Parts
- SiliconLabs BLE113 BluetoothLE ModuleIC