Bluetooth & BLE DISCUSSION

HC-05, HM-10 or ESP32: should I use Bluetooth Classic or BLE for a serial link to a phone?

Started by patrick HC-05HM-10Bluetooth Classic SPPBLE UART serviceArduino Bluetooth
4 replies 248 views 5 participants
Latest activity · 30 Sep 2026

HC-05, HM-10 or ESP32: should I use Bluetooth Classic or BLE for a serial link to a phone?

patrick Bluetooth & BLE Forum
#1

I want to send sensor values from an Arduino to a phone app and receive a few commands back. The tutorials use an HC-05, but I also see the HM-10 and boards such as the ESP32 with Bluetooth built in. My app has to work on both Android and iPhone.

What is the practical difference between these modules, and does it matter which one I pick for a simple serial-style link?

Community replies 4

Re: HC-05, HM-10 or ESP32: should I use Bluetooth Classic or BLE for a serial link to a phone?

#2

They are two different radios that cannot talk to each other. The HC-05 is Bluetooth Classic (2.0 + EDR) and exposes the Serial Port Profile, which behaves like a wireless UART cable. The HM-10 is Bluetooth Low Energy (4.0) and has no SPP; it emulates a serial link through a custom GATT service with one characteristic that you write to and receive notifications from.

The important consequence is on the phone side. iOS does not let ordinary apps use Classic SPP with arbitrary modules (that requires Apple's MFi programme), while BLE is open to every app through Core Bluetooth. If the iPhone is a requirement, the HC-05 is out.

Re: HC-05, HM-10 or ESP32: should I use Bluetooth Classic or BLE for a serial link to a phone?

#3

For the HM-10 the usual UART service is UUID 0xFFE0 with characteristic 0xFFE1. The app scans, connects, enables notifications on that characteristic and then reads and writes bytes. There is no pairing step in the phone's Bluetooth settings as with the HC-05; the app makes the connection itself.

Keep the 20-byte payload per packet in mind. With the default ATT MTU a longer line from the Arduino arrives in the app as several chunks, so end each message with a terminator such as a newline and reassemble on the phone. Many cheap boards sold as HM-10 are clones with different firmware and AT command sets, so test the exact module you buy.

Re: HC-05, HM-10 or ESP32: should I use Bluetooth Classic or BLE for a serial link to a phone?

#4

Whichever module you choose, check the logic levels. The HC-05 and HM-10 use 3.3 V on their data pins even when the breakout board accepts 5 V on VCC. The module's TX can go straight to a 5 V Arduino RX, but the Arduino TX should reach the module RX through a divider, for example 1 kΩ in series and 2 kΩ to ground, which gives 5 V × 2 / 3 = 3.3 V.

The HC-05 normally ships at 9600 baud in data mode and uses 38400 baud in full AT command mode, entered by holding the KEY/EN pin high at power-up. Use a software serial port or a spare hardware UART so the module does not clash with sketch uploads on pins 0 and 1.

Re: HC-05, HM-10 or ESP32: should I use Bluetooth Classic or BLE for a serial link to a phone?

#5

An ESP32 removes the separate module. The original ESP32 has a dual-mode radio and can do both Classic SPP and BLE, while the ESP32-C3 and ESP32-S3 are BLE only and the ESP32-S2 has no Bluetooth at all, so check the exact chip. For a cross-platform app, implement a BLE UART-style service there as well.

On power: BLE is designed around short bursts with sleep between connection events, so a BLE peripheral averages far less current than a Classic link that is held open. For a mains or USB powered gadget that does not matter; for a battery sensor it decides the design in favour of BLE.

TEP COMMUNITY