This HC-05 Bluetooth module, made by DSD Tech, has two types of modes: Configuration mode and Transparent mode. In configuration mode, the enable pin is connected to a 3.3V power source which allows you to use the button on the device to turn it on or off. In transparent Mode, the enable pin is floated and the AT command is not responsive.
The HC-05 Bluetooth module has 6 pins: enable, Vcc, Ground, Tx, Rx, and State, and Vcc can be powered from 3.3V – 6V. For our project, enable and state are floated, Vcc and ground are connected to the Arduino Uno’s 5V supply and ground, and TX and RX from the module are connected to the Arduino’s RX and TX serial pins accordingly.
Explanation of RX and TX:
The RX and TX pins on the Arduino Uno are used to receive (RX) and transmit (TX) TTL serial data. When using serial communication at TTL (Transistor-Transistor Logic) level the logic level will always be between 0V and Vcc. With this in mind, the logic high (1) is represented by Vcc and the logic low (0) is represented by 0V.
ATmega328P Voltage Logic Characteristics
Figure 2. ATmega328P Input and output Logic Voltage characteristics
When we look at the ATmega328P Input and output logic voltage characteristics, we see that the minimum input high voltage of the Arduino is VIH = 0.6VCC when VCC is between 2.7V-5.5V. The minimum output high voltage that the Arduino can transmit is VOH = 4.1V when VCC is at 5V
Min. VIH = 0.6*Vcc = 0.6*5 = 3V Min. VOH = 4.1V
HC-05 Logic Voltage Characteristics
Below is the circuit schematic for the HC-05 from DSD Tech. From the datasheet, the HC-05 module can be powered from 3.3V-6V but has a 3.3V logic level voltage. This 3.3V logic level is obtained via an on-chip linear regulator on the Bluetooth module that converts the Vcc voltage to a regulated 3.3V. From DSD Tech’s datasheet, they claim that the logic voltage from the linear regulator ranges from (3.1V~4.2V) with the current in pairing in the range of 30~40mA.
Figure 3. HC-05 Circuit Schematic
Figure 4-5. Datasheet of ITead Studio & REYAX
Comparing Other Companies HC-05 Bluetooth Module
To see if DSD Tech’s claim of their absolute ratings of the logic voltage of their chip were valid I looked at other companies who make the same Bluetooth module. Looking at two different companies, ITead Studio and REYAX, their on board linear regulators had the same characteristics of DSD Tech’s module with ITead Studio having a slightly better minimum voltage of 3.15V.
Why do we need a resistor voltage divider on the Arduino TX line to HC-05 RX pin?
Min VIH = 3V VIH = Input high Logic Voltage
Min VOH = 4.1VVOH= Output high Logic Voltage
Max VIH = 4.2V
Min VOH = 3.1V
When we look at the minimum output high logic voltage that the Arduino can transmit to the HC-05, we see that the minimum output of the Arduino is VOH= 4.1V compared to the max input that the HC-05 can receive at VIH = 4.2V. Since the minimum input voltage of the Arduino is only 100mV more than the max input of the HC-05, there is a high chance that the HC-05 can be damaged when the Arduino TX is connected directly to the HC-05 RX. To avoid this damage, a resistor voltage divider from the Arduino TX pin to the HC-05 RX pin is needed to lower the 5V Vcc from the Arduino power to a 3.3V logic, so that data can be transferred safely to the Bluetooth Module.
Why do we not need a voltage divider on the HC-05 TX line to Arduino RX pin?
A voltage divider is not needed between the HC-05 TX line to Arduino RX because the minimum high logic voltage that the Arduino can receive is VIH = 3V and the HC-05 will always be able to supply enough voltage since the minimum logic output that the HC-05 can transmit is VOH = 3.1V. With the typical VOH of the HC-05 being 3.3V, there should not be a problem with the Arduino registering the Bluetooth’s transmitted data as a logic high(1).
In conclusion, the HC-05 should be able to communicate with the Arduino without issue, given that we use a resistor divider on the Arduino TX pin to the HC-05 RX pin to set the voltage to 3.3V. As far as using this Bluetooth module for our project, the Bluetooth module uses Bluetooth 2.0 technology which is compatible with Android phones but not with IOS given that the module would have to use the current Bluetooth 4.0 technology. Since we are using an Android phone to run the ArxRobot application, the Bluetooth module will not have issues communicating to the phone to run the app.