From ArduinoInfo
Jump to navigation Jump to search

BlueTooth Command Utility: For setup of HC-05 BlueTooth Modules

Make sure you understand about this module first. See THIS PAGE


  • GND to GND
  • Pin 2 to HC-05 TXD
  • Pin 3 to HC-05 RXD
  • Pin 4 to HC-05 KEY
  • Pin 5+6 to HC-05 VCC for power control

The module has two modes of operation:

  1. Command Mode where we can send AT commands to it
  2. Data Mode where it transmits and receives data to another bluetooth module.

This Arduino Utility uses this method to enter Command Mode: "Connect the CMD pin high before applying power to the module". This will put the module we will communicate to from Arduino into command mode at 38400 baud. See the software sketch listing below for Arduino to module connections.

Set Serial Monitor to 'Both NL & CR' and '9600 Baud' at bottom right

A few commands to test with:

  • AT ( Test command. Should respond with OK)
  • AT+VERSION? ( Get the firmware version)
  • AT+PSWD? (Get the current password)
  • AT+UART=9600,0,0 ( Set baud rate to 9600, 1 stop bit, no parity)

Detailed Command and Error Code listing is at the bottom of this page.

Command Utility Sketch: Copy and paste into blank Arduino IDE window.

/* Example: BlueTooth HC-05 Setup
   - Sets "Key" pin on HC-05 HIGH to enable command mode
   - THEN applies Vcc from 2 Arduino pins to start command mode
   - SHOULD see the HC-05 LED Blink SLOWLY: 2 seconds ON/OFF 
 Sends, Receives AT commands
   For Setup of HC-05 type BlueTooth Module
   NOTE: Set Serial Monitor to 'Both NL & CR' and '9600 Baud' at bottom right   
 - SEE the comments after "//" on each line below
   - GND
   - Pin 2 to HC-05 TXD
   - Pin 3 to HC-05 RXD
   - Pin 4 to HC-05 KEY
   - Pin 5+6 to HC-05 VCC for power control
 - V1.02 05/02/2015
   Questions: */

/*-----( Import needed libraries )-----*/
#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define HC_05_TXD_ARDUINO_RXD 2
#define HC_05_RXD_ARDUINO_TXD 3
#define HC_05_SETUPKEY        4
#define HC_05_PWR1            5  // Connect in parallel to HC-05 VCC
#define HC_05_PWR2            6  // Connect in parallel to HC-05 VCC

/*-----( Declare objects )-----*/
SoftwareSerial BTSerial(HC_05_TXD_ARDUINO_RXD, HC_05_RXD_ARDUINO_TXD); // RX | TX
/*-----( Declare Variables )-----*/

void setup()   /****** SETUP: RUNS ONCE ******/
  pinMode(HC_05_SETUPKEY, OUTPUT);  // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
  pinMode(HC_05_PWR1, OUTPUT);      // Connect in parallel to HC-05 VCC
  pinMode(HC_05_PWR2, OUTPUT);      // Connect in parallel to HC-05 VCC

  digitalWrite(HC_05_SETUPKEY, HIGH);  // Set command mode when powering up

  Serial.begin(9600);   // For the Arduino IDE Serial Monitor
  Serial.println(" HC-05 Bluetooth Module AT Command Utility V1.02");
  Serial.println("Set Serial Monitor to 'Both NL & CR' and '9600 Baud' at bottom right");
  Serial.println("Vcc Power Up DELAY");
  Serial.println("Applying VCC Power. LED should blink SLOWLY: 2 Seconds ON/OFF");
  digitalWrite(HC_05_PWR1, HIGH); // Power VCC
  digitalWrite(HC_05_PWR2, HIGH);
  Serial.println("Enter AT commands in top window.");
  BTSerial.begin(38400);  // HC-05 default speed in AT command mode

}//--(end setup )---

void loop()   /****** LOOP: RUNS CONSTANTLY ******/
  // READ from HC-05 and WRITE to Arduino Serial Monitor
  if (BTSerial.available())

  // READ Arduino Serial Monitor and WRITE to HC-05
  if (Serial.available())

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//*********( THE END )***********


1 AT Test UART Connection
2 AT+RESET Reset Device
3 AT+VERSION Querry firmware version
4 AT+ORGL Restore settings to Factory Defaults
5 AT+ADDR Query Device Bluetooth Address
6 AT+NAME Query/Set Device Name
7 AT+RNAME Query Remote Bluetooth Device’s Name
8 AT+ROLE Query/Set Device Role
9 AT+CLASS Query/Set Class of Device CoD
10 AT+IAC Query/Set Inquire Access Code
11 AT+INQM Query/Set Inquire Access Mode
12 AT+PSWD Query/Set Pairing Passkey
13 AT+UART Query/Set UART parameter
14 AT+CMODE Query/Set Connection Mode
15 AT+BIND Query/Set Binding Bluetooth Address
16 AT+POLAR Query/Set LED Output Polarity
17 AT+PIO Set/Reset a User I/O pin
18 AT+MPIO Set/Reset multiple User I/O pin
19 AT+MPIO? Query User I/O pin
20 AT+IPSCAN Query/Set Scanning Parameters
21 AT+SNIFF Query/Set SNIFF Energy Savings Parameters
22 AT+SENM Query/Set Security & Encryption Modes
23 AT+RMSAD Delete Authenticated Device from List
24 AT+FSAD Find Device from Authenticated Device List
25 AT+ADCN Query Total Number of Device from Authenticated Device List
26 AT+MRAD Query Most Recently Used Authenticated Device
27 AT+STATE Query Current Status of the Device
28 AT+INIT Initialize SPP Profile
29 AT+INQ Query Nearby Discoverable Devices
30 AT+INQC Cancel Search for Discoverable Devices
31 AT+PAIR Device Pairing
32 AT+LINK Connect to a Remote Device
33 AT+DISC Disconnect from a Remote Device
34 AT+ENSNIFF Enter Energy Saving mode
35 AT+EXSNIFF Exit Energy Saving mode


0 Command Error/Invalid Command
1 Results in default value
2 PSKEY write error
3 Device name is too long (>32 characters)
4 No device name specified (0 length)
5 Bluetooth address NAP is too long
6 Bluetooth address UAP is too long
7 Bluetooth address LAP is too long
8 PIO map not specified (0 lenght)
9 Invalid PIO port Number entered
A Device Class not specified (0 lenght)
B Device Class too long
C Inquire Access Code not Specified (0 lenght)
D Inquire Access Code too long
E Invalid Iquire Access Code entered
F Pairing Password not specified (0 lenght)
10 Pairing Password too long (> 16 characters)
11 Invalid Role entered
12 Invalid Baud Rate entered
13 Invalid Stop Bit entered
14 Invalid Parity Bit entered
15 No device in the Pairing List
16 SPP not initialized
17 SPP already initialized
18 Invalid Inquiry Mode
19 Inquiry Timeout occured
1A Invalid/zero lenght address entered
1B Invalid Security Mode entered
1C Invalid Encryption Mode entered