From ElectroDragon
Jump to navigation Jump to search

AT Commands

  • Format for inquiry: Add ? after At commands, for example, AT+CHK?, AT+STOP?
  • Format for setting: add parameter after AT commands, AT+BAUD1, AT+STOP1
  • All the settings will store in the module and keep same after restart
Function Commands Parameter Example
1 General AT check AT - -
2 Set Baud rate AT+BAUD 1-1200; 2-2400; 3-4800; 4-9600; 5-19200; 6-38400; 7-57600; 8-115200 AT+BAUD1 return: OK+SetBaud:1200
3 Set check bit AT+CHK 0: NO CRC, 1: ODD, 2:EVEN -
4 Set Stop bit AT+STP 1:1Stop, 2:2stop -
5 Set UART AT+UART[para1][para2][para3] para1:baud rate, para2:CRC, para3:stop -
(Not available) Set module discoverable status AT+ DISC 0:searchable and connectable, 1:only searchable, 2:connectable only -
(Not available) Set Pio0 function AT+KEY 0: Cancel current status. 1: Cancel current status and restore factory setup. -
(Not available) Set PIO1 output status AT+LED 0:Unconnected Output 500ms High 500ms Low, Connected output High. 1:Unconnected output Low, Connected output High. -
6 Set module PIO Pins output status AT+PIO Length 10, every bit value is 1 or 0. 0: output low; 1:output high AT+PIO? return OK+PIO0000000000; Setup PIO2 and PIO3output high and others output low: AT+PIO1100000000
6.1 Set PIO pins output high or low AT+PIO[para1][para2] Para1 is which PIO pin you want to Query/Set Value: 2,3,4,5,6,7,8,9,A,B. Para2 is Query or setup value. 0 is low and 1 is high AT+PIO21
7 Set name AT+NAME
8 Set name AT+DEFAULT
9 Restart AT+RESTART
10 Set Master and Slaver Role AT+ROLE M: Master S: Slaver -
11 Set Pin Code AT+PIN Max length is 12, Allow A~Z -
13 Clear pair data AT+CLEAR -
(Not available) Scan slave device AT+SCAN? Notice: Work with “AT+IMME0” and “AT+ROLEM” -
15 connect to device AT+CONN -
14 connect to last device AT+CONLAST -
(Not available) Connect to a slave device MAC address AT+LNK Notice: Work with “AT+IMME0” and “AT+ROLEM” -
21 Query Last Connected Device Address AT+RADD? - -
19, 20 Query module address AT+LADD? and AT+ADDR? - -
22 Query/Set Module work type AT+IMME 0: When module is powered on, only respond the AT Command, don’t do anything. until AT + WORK is received 1: When power on, work immediately Notice: This command is only used for Master Role. -
23 Start work AT+WORK
24 Query/Set module connect remote device timeout value AT+TCON Para1 allowed value: 0000~9999 Unit is second. Default: 0000 Connect

forever || -

25 check or set device type AT+COD
26 Query/Set Module Work Mode AT+TYPE 0:Transmission Mode; 1:Remote Control Mode; 2:PIO Collection Mode; Default: 0 -
(Not available) Query/Set report PIO states string delay time(unit ms) AT+TPIO Para1 value is between 0000 and 9999 ms If value >0, when PIO states is changed, module will send PIO states string to remote device delay this value. Default: 0 send once -
28 Switch Remote Control Mode to Transmission Mode(Only this time) AT+START - -
29 Query/Set Buffer save parameter AT+BUFF 0: Not save 1:Save Default: 0 -
(Not available) Query/Set Module Notification AT+NOTI 0: Don’t notify(default) 1:Notify when connected and disconnected -

PIO0 (KEY) and PIO1 LED function

  • PIO0 key: clear pairing info when not connected, disconnect, restart and enter into search mode when it is connected.
  • RST button: Reset the module
  • PIO1 LED: blink when not connected, and stay high when connected.

Working Mode

There are three types of working mode, see our videos to understand how it work firstly:

  • Transmission mode: data can transfer via bluetooth remotely
  • GPIO set mode (w/transmission mode): BC04C external GPIO can set remotely, first set working mode to 1 (AT+TYPE1) and use AT+PIO command to set GPIO.
  • GPIO monitor mode (w/transmission mode): when external GPIO TTL status are changed, this info will send back, in a certain time frame, you need set AT+TYPE2, and AT+TPIO1000 for timing, 1000 means 1000 ms.

Demo code

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX | TX
void setup()
  Serial.println("Enter AT commands:");
void loop()

  if (BTSerial.available())
  if (Serial.available())


  • Use SSOM32 for testing (Un-tick "send new" option), the module do not need any simulate end after commands (\r\n).
  • In arduino use first option on line ending
  • When connected with other bluetooth devices, module will enter into data transmission mode, not command mode
  • AT Command will not work on Data transmission mode (LED stay on)

First time usage and Control

  • On the first time use, if you want to control the GPIOs, you should not connect the module with devices with BlueSPP first, otherwise when you connect to it, the module is working on data transfer mode.
  • Disconnect any devices, and use a normal USB-TTL to setup working mode first, re-power the module and setup will be remembered inside, now you can connect and control.