FSC-BT691 user guide

Introduction

Description

This design guide is suitable for engineers developing FSC-BT691 series Bluetooth modules

Module Default Settings

Name

Feasycom

Service UUID

FFF0

Write UUID

FFF2

Notify UUID

FFF1

UART Baudrate

115200/8/N/1

Hardware Description

Pin Diagram

_images/BT691引脚.png

Pin Description

Pin

Pin Name

Type

Pin Descriptions

1

UART_TX

O

UART data output

2

UART_RX

I

UART data input

6

MODE

I

L=throughput mode ,H=command mode

6

RESET

I

External reset input: Active LOW, with an inter an internal pull-up.

7

VDD

Power

Power supply voltage 3.3V, LDO power supply preferred

8

GND

GND

GND

15

DISCONNECT

I

High-level disconnect (must be connected first)

17

LED

O

Bluetooth not connected output square wave, Bluetooth connection output high level

18

STATUS

O

Bluetooth not connected output low level, Bluetooth connection output high level

20

EXT_ANT

ANT

Changing the 0 ohm resistance near the antenna, it is possible to connect a Bluetooth antenna externally

Hardware Design Notes

  • The simple test of the module only needs to connect VDD/GND/UART_RX/UART_TX to use

  • If the MCU needs to obtain the connection status of the Bluetooth module, it needs to be connected to the STATUS pin

  • After drawing the schematic diagram, please send it to Feasycom for review, so as to prevent the Bluetooth distance from not reaching the best effect

Function Description

GPIO state

MODE PIN is PIN 6

State

Description

Low level

Throughput mode

High level

AT command mode

Note

To use this function, the pin function needs to be enabled using the AT command. Please refer to AT+PIOCFG for more details.

DISCONNECT PIN is PIN 15

tate

Description

Low level

High level

disconnected

Note

To use this function, the pin function needs to be enabled using the AT command. Please refer to AT+PIOCFG for more details.

LED PIN is PIN 17

State

Description

1Hz square wave

disconnect state

high level

connected state

Connection status PIN is PIN 18

State

Description

low level

disconnect state

high level

connected state

Mode

Throughput mode

when disconnected, the data received by the serial port is analyzed according to the AT command;
when connected, all the data received by the serial port is sent to the remote Bluetooth as it is.

Command mode

when disconnected, the data received by the serial port is analyzed according to the AT command;
when connected, The data received by the serial port is still parsed according to the AT command.
when it is necessary to send data to the remote end, send AT+LESEND command.

GATT Throughput Service

type

UUID

Permissions

Description

Service

0xFFF0

GATT Throughput Service

Write

0xFFF2

Write,Write Without Response

APP send data to module

Notify

0xFFF1

Notify

Module send data to remote

AT command description

Command description

Throughout this specification:

  • Content between { } is optional

  • Content behind << represents a COMMAND from Host

  • Content behind >> represents a RESPONSE/EVENT to Host

Command

The command is the control command sent by the host to the module actively. After receiving the command, the module needs to reply <CR><LF>OK<CR><LF> as a response.

Command Format

AT+Command{=Param1{,Param2{,Param3…}}}<CR><LF>
  • All commands start with AT, end with <CR><LF>

  • <CR> means “carriage return”, corresponds to hex value 0x0D

  • <LF> means “line feed”, corresponds to hex value 0x0A

  • If Command has Parameter, Parameter follows behind ‘=’

  • If Command has multiple Parameters, Parameter must be separated by ‘,’

  • If Command has Response, Response starts with <CR><LF>, ends with <CR><LF>

  • The module should always return the result of instruction execution (success returns OK,failure returns ERROR)

Example:
Read module’s name
<< AT+VER
>> +VER=1.0.0,FSC-BT691
>> OK

Write invalid baudrate
<< AT+BAUD=0
>> ERROR

Event

Event is the data that the module actively sends to the host. Generally used to indicate a change of state or data received.

Event Format

<CR><LF>+Indication{=Param1{,Param2{,Param3…}}}<CR><LF>
  • All Events start with <CR><LF>, end with <CR><LF>

  • If Event has Parameter, Parameter follow behind ‘=’

  • If Event has multiple Parameters, Parameter must be separated by ‘,’

Example:
Receive data from APP in command mode
>> +DATA=10,1234567890

Commands Table

AT - Serial communication test

Command

AT

Response

OK

Description

When powering on or changing the baud rate, test the UART communication between the host and the module

Example:
<< AT
>> OK

AT+VER - Get Firmware Version

Command

AT+VER

Response

+VER=Param

Param

Firmware version

Description

Get Firmware Version

Example:
<< AT+VER
>> +VER=1.0.0,FSC-BT691
>> OK

AT+ADDR - Get MAC Address

Command

AT+ADDR

Response

+ADDR=Param

Param

Module’s MAC address (12 Bytes ASCII)

Description

Get MAC Address

Example:
<< AT+ADDR
>> +ADDR=DC0D30010203
>> OK

AT+NAME - Get/Set Local Name

Command

AT+NAME{=Param1{,Param2}}

Param1

local name(1~29 Bytes ASCII)

Param2

MAC address suffix(0/1,default:0)
0: Disable suffix
1: Enable suffix “XXXX” (lower 4 bytes of MAC address) after local name

Response

+NAME=Param

Param

local name

Description

Write local name if parameter exist, otherwise read current local name

Example:
Read current local name
<< AT+NAME
>> +NAME=Feasycom
>> OK

Change module’s local name to “ABC”
<< AT+NAME=ABC
>> OK

Change module’s local name to “ABC” and enable suffix
<< AT+NAME=ABC,1
>> OK

AT+BAUD - Get/Set Uart Baudrate

Command

AT+BAUD{=Param}

Param

baudrate(2400/4800/9600/14400/19200/28800/38400/
57600/115200/230400/460800/500000/921600/1000000,
default:115200)

Response

+BAUD=Param

Param

baudrate

Description

Module will change baudrate to target value immediately

Example:
Query baudrate
<< AT+BAUD
>> +BAUD=115200
>> OK

Change baudrate
<< AT+BAUD=9600
>> OK

AT+TXPOWER - Get/Set TX Power

Command

AT+TXPOWER{=Param}

Param

tx power(default:3)

Response

+TXPOWER=Param

Param

tx power

Description

Get/Set TX Power

Example:
Get tx powe
<< AT+TXPOWER
>> +TXPOWER=3
>> OK

Set tx power to 0dbm
<< AT+TXPOWER=0
>> OK

AT+LPM - Get/Set low power config

Command

AT+LPM{=Param}

Param

low power mode (0/1, default: 0)
0: disable
1: enable low power and wake up by UART

Response

+LPM=Param

Param

low power mode

Description

Get/Set low power config

Example:
Get low power config
<< AT+LPM
>> +LPM=0
>> OK

Set serial port wakeup mode
<< AT+LPM=1
>> OK

AT+ADVIN - Get/Set advertising interval

Command

AT+ADVIN{=Param}

Param

advertising interval (100~10000 ms0 ms, 默认: 687ms)

Response

+ADVIN=Param

Param

advertising interval

Description

Get/Set advertising interval

Example:
Get advertising interval
<< AT+ADVIN
>> +ADVIN=687
>> OK

Set advertising interval to 100ms
<< AT+ADVIN=100
>> OK

AT+DISC - Disconnect specified connection

Command

AT+DISC

Response

OK

Description

disconnect Bluetooth connection

Example:
disconnect device
<< AT+LEDISC
>> OK

AT+LECCONN - Initiate a connection to the specified address

Command

AT+LECCONN{=Param1{,Param2{,Param3{,Param4}}}}

Param1

12-byte device address + 1-byte address type

Param2

Communication Service UUID

Param3

Communication UUID with write/write without rsp permission

Param4

Communication UUID with notification permission

Response

OK

Description

Initiate a connection to the specified device, the parameter consists of 12 bytes (device address) and 1 byte
(address type), generally the address type is “0” or “1”. address
How to get the address type:
Send AT+SCAN=1 command, get parameter2. example:
+SCAN=0,0,DC0D30001ED4,-65,10,FSC-BT946
Connection command:
AT+LECCONN=DC0D30001ED40
Example:
Connect to the specified device, 0 is the address type
<< AT+LECCONN=DC0D3000039E0
>> OK

Initiate a connection to the specified address, using FFF0, FFF2, FFF1 for communication
<< AT+LECCONN=DC0D3000039E0,FFF0,FFF2,FFF1
>> OK

AT+SCAN - SCAN for nearby devices

Command

AT+SCAN{=Param1{, Param2{, Param3}}}

Param1

scanning method(0~1)
0: stop scanning
1: Scan nearby devices, filter duplicate addresses, up to 8 devices can be found

Param2

Scan Timeout Setting(200ms~2s,100 is equal to 1000ms)

Param3

Scan Filter Name/MAC (If it’s a 12-digit standardized MAC, filter by MAC; otherwise, filter by name)

Response

+SCAN=Param1,Param2,Param3,Param4,Param5

Param1

MAC Address type (1 byte)

Param2

MAC address (12 bytes)

Param3

RSSI

Param4

Device name length

Param5

Device name

Description

AT+SCAN=1 Commonly used for searching before connecting
Example:
SCAN device
<< AT+SCAN=1
>> +SCAN={
>> +SCAN=1,70CFC9A98840,-43,24,LE-Bose QuietControl 30
>> +SCAN=1,DC0D30001ED4,-65,10,FSC-BT946
>> +SCAN=}

Set a 5-second timeout and filter devices with “BT618” in their names.
<< AT+SCAN=1,500,BT618
>> OK
+SCAN{
+SCAN=0,dc0d300002f9,-48,9,FSC-BT618
+SCAN}

Set a 5-second timeout and filter devices with the name “70CFC9A98840”.
<< AT+SCAN=1,500,BT618
>> OK
+SCAN{
+SCAN=0,70CFC9A98840,-52,9,Feasycom
+SCAN}

AT+TPMODE - Get/Set throughput mode

Command

AT+TPMODE{=Param}

Param

Mode(0~1,default 1)
0: Command Mode
1: Throughput Mode

Response

+TPMODE=Param

Param

Mode

Description

Command Mode:
When bluetooth connected and in throughput mode,
the AT command will be de-active.
Throughput Mode:
every byte received via physical UART will be sent
to remote.
Example:
Throughput Mode
<< AT+TPMODE=1
>> OK

Command Mode
<< AT+TPMODE=0
>> OK

AT+ADVDATA - Get/Set advertising manufacturer specific data

Command

AT+ADVDATA{=Param}

Param

manufacturer specific data, tag 0xff(len <= 25>)

Response

+ADVDATA=Param

Param

manufacturer specific data, tag 0xff

Description

Get/Set advertising manufacturer specific data

Example:
Get advertising manufacturer specific data, \x is hexadecimal data
<< AT+ADVDATA
>> +ADVDATA=\x03\x01\x02
>> OK

Set advertising manufacturer specific data, \x is hexadecimal data
<< AT+ADVDATA=\x03\x01\x02
>> OK

AT+LESEND - Send data to remote device

Command

AT+LESEND{=Param1,Param2}

Param1

Connection index

Param2

data

Response

OK

Description

Send data to remote device

Example:
Send data to the connected device
<< AT+LESEND=4,2022
>> OK

AT+REBOOT - Soft Reboot

Command

AT+REBOOT

Response

OK

Description

Module release all Bluetooth connections then reboot

Example:
<< AT+REBOOT
>> OK

AT+RESTORE - Restore Factory Settings

Command

AT+RESTORE

Response

OK

Description

Module restore all factory settings then reboot

Example:
<< AT+RESTORE
>> OK

AT+PIOCFG - 开关引脚功能

Command

AT+PIOCFG{=param1,param2}

param1

Enable/Disable the function of the mode selection pin(default : 0) | 0: Disable | 1: Enable

param2

Enable/Disable the disconnect pin function(default : 0) | 0: Disable | 1: Enable

Response

OK

Description

Query and modify pin function

Example:
<< AT+PIOCFG=1,1
>> OK

Event Table

+SCAN - AT+SCAN=1 Scan Result

Indication

+SCAN=Param1,Param2,Param3,Param4,Param5,Param6

Param1

MAC address type (1 byte)

Param2

MAC address (12 Bytes ASCII)

Param3

RSSI

Param4

remote device name len

Param5

remote device name

Description

After the module receives AT+SCAN=1, it will continue to scan, and report through +SCAN after finding the device

Example:
SCAN device
<< AT+SCAN=1
>> +SCAN={
>> +SCAN=1,70CFC9A98840,-43,24,LE-Bose QuietControl 30
>> +SCAN=1,DC0D30001ED4,-65,10,FSC-BT946
>> +SCAN=}

+GATTSTAT - GATT State

Indication

+GATTSTAT=Param1,Param2

Param1

Connection Index

Param2

GATT State (1~3)
1: Standby
2: Connecting
3: Connected

Description

In the command mode, if the connection status of the module changes, it will be actively reported through +GATTSTAT

Example:
Connected
>> +GATTSTAT=0,3

+DATA - GATT Received Incoming Data

Indication

+DATA=Param1,Param2,Param3

Param1

Payload length

Param2

Payload

Description

In the throughput mode: report data without +DATA header
In the command mode: report data with +DATA header +DATA=1,5,12345
Example:
received data 1234567890
>> +DATA=10,1234567890

Application scenarios

Get/Set the default parameters of the module

When the module is disconnect state, it will parse the uart data according to the AT command. The host can get and set the default parameters of the module, as shown in the figure below:

  1. Set the device name to ABC

  2. Get device name

  3. Get MAC address

@startuml
hide footbox
skinparam sequenceMessageAlign center

box "local" #LightBlue
participant Host as host
participant Module as bt
end box


rnote over host, bt: Set the device name to ABC

host -> bt: AT+NAME=ABC\\r\\n
bt -> host: \\r\\nOK\\r\\n"

rnote over host, bt: Get device name

host -> bt: AT+NAME\\r\\n
bt -> host: \\r\\n+NAME=ABC\\r\\n\\r\\nOK\\r\\n"

rnote over host, bt: Get MAC address

host -> bt: AT+ADDR\\r\\n
bt -> host: \\r\\n+ADDR=DC0D30010203\\r\\n\\r\\nOK\\r\\n

@enduml

Process of sending data

When the module is powered on, it will continue to send advertising data, and the remote device (mobile phone) can scan the advertising packet. And initiate a connection request to the module. After the connection is successful, the module will pull up the connection status pin to notify the host that the Bluetooth connection is successful. The host can send data to the remote device through the Bluetooth module, and the remote device can also send data to the host.

@startuml
hide footbox
skinparam sequenceMessageAlign center

box "local" #LightBlue
participant Host as host
participant Module as bt
end box

box "remote" #LightBlue
participant ”Remote BT“ as remote
end box

rnote over host, remote: create connecion

        bt --> remote: adv pkt
        bt <-  remote: scan
        bt --> remote: adv pkt
        bt <-  remote: req create connection

rnote over host, remote: connecion successful

host <- bt: pull up the connection status pin

rnote over host, remote: send data

host -> bt: uart send ABC
        bt ->  remote: bt send ABC
        bt <-  remote: bt send DEF
host <- bt: uart send DEF

        bt <-  remote: disconnect connection

host <- bt: disconnect connection

host <- bt: pull down the connection status pin
        bt --> remote: adv pkt

@enduml

The module acts as the central to connect to the remote device

The module can be used as a master device to connect to the slave device, and the host can send commands to control the module to scan and connect and disconnect. The figure below shows the process of connecting other devices:

@startuml

hide footbox
skinparam sequenceMessageAlign center

box "local" #LightBlue
participant Host as host
participant Module as bt
end box

box "remote" #LightBlue
participant ”Remote BT“ as remote
end box

host -> bt: AT+SCAN=1\\r\\n
host <- bt: \\r\\nOK\\r\\n
        bt ->  remote: SCAN
        bt <-- remote: adv pkt
host <- bt: \\r\\n+SCAN=1,DC0D30001ED4,-65,10,FSC-BT946\\r\\n
host -> bt: AT+LECCONN=DC0D30001ED41\\r\\n
host <- bt: \\r\\nOK\\r\\n
        bt ->  remote: req create connection

rnote over host, remote: connection success

host <- bt: pull up the connection status pin

rnote over host, remote: send data

host -> bt: uart send ABC
        bt ->  remote: bt send ABC
        bt <-  remote: bt send DEF
host <- bt: uart send DEF

host -> bt: AT+DISC\\r\\n
host <- bt: \\r\\nOK\\r\\n
        bt ->  remote: disconnect remote

rnote over host, remote: disconnect connection

host <- bt: pull down the connection status pin
        bt --> remote: adv pkt

@enduml

Appendix

Download PDF Document

Download PDF Document