Collection of sample Bluetooth Low Energy applications for iOS, Android, ESP32 and Arduino Nano 33 IoT.
The apps implement basic BLE communication:
Each BLE Central is compatible with each BLE Peripheral, because they use the same service and characteristics UUIDs.
Android BLE Central | iOS BLE Peripheral |
---|---|
![]() |
![]() |
To run and see it working, you need 2 physical devices supporting Bluetooth Low Energy:
...and some development tools:
Platform | Peripheral | Central | Notes |
---|---|---|---|
Android | YES | YES | Android 5.0 and newer, including Android 12 |
iOS | YES | YES | iOS 11.0 and newer |
ESP32 | YES | YES | |
Arduino Nano 33 | YES | YES | Tested on Arduino Nano 33 IoT, but should work on any board compatible with ArduinoBLE library |
Name | UUID |
---|---|
Service | 25AE1441-05D3-4C5B-8281-93D4E07420CF |
Characteristic for read | 25AE1442-05D3-4C5B-8281-93D4E07420CF |
Characteristic for write | 25AE1443-05D3-4C5B-8281-93D4E07420CF |
Characteristic for indicate | 25AE1444-05D3-4C5B-8281-93D4E07420CF |
Peripheral (also called Slave or Server) works similarly on all platforms:
Note 1: technically characteristics can have any amount of permissions (read, write default, write without response, notify, indicate), but in this project each characteristic has only one permission for simplicity.
Note 2: indication is a notification with response - Peripheral notifies, Central confirms that notification received.
Central (also called Master or Client) works similarly on all platforms:
Android BLE (usually articles cover only BLE Central role):
Android BLE Peripheral role (less popular topic):
iOS:
LightBlue: for iOS, for Android
BLE Scanner: for iOS, for Android