Search code examples
androidarduinobluetoothesp32arduino-esp32

Should I use Bluetooth Classic or Bluetooth LE to communicate with my mobile application?


I'm making a project with ESP32 that involves communication with a mobile application. Currently I'm using BluetoothSerial(built on Classic) just for debugging, but I plan to make a dedicated mobile application to have all kinds of data related to the project, and I'll gather this data from the controller through duplex communication, maybe via a command-response interface. What I want to know is what kind of Bluetooth would be preferable to communicate with an Android application? Things that I want to keep in consideration:

  • Auto-connection capabilities when in range.
  • OTA possibility.
  • Range.
  • Hardware Requirements (Like timers and such)
  • Data Security
  • Port capability to iOS.

I do not care about:

  • Battery Usage (If the practical difference is minimal)
  • Transmission Speeds (I'm just transmitting 2-3 kb numerical data once a second)

Solution

  • It doesn't make a huge difference as most of the things you listed above can be achieved via either method, so it comes down to your personal preference and your existing familiarity with the wireless technology. However, I would personally go for BLE because unlike classic Bluetooth, BLE is now a lot more mature in terms of applications and resources for both Android and iOS. You will end up finding a lot more documentation and source code when it comes to BLE when compared to classic Bluetooth. Futhermore, as Michael Kotzjan mentioned, classic Bluetooth is relatively new on iOS and has a few restrictions.

    The links below can maybe give you a nudge in the right direction:-