Arduino Nano ESP32 - DIYables Bluetooth App Multiple Apps
Overview
This example demonstrates running 9 Bluetooth app widgets simultaneously on a single Arduino Nano ESP32 using BLE. Using BLE (Bluetooth Low Energy), the sketch combines Monitor, Chat, Slider, Joystick, Temperature, Plotter, Table, Analog Gauge, and Rotator into one sketch. All widgets share a single BLE connection and can interact with each other. Suitable for comprehensive dashboards, complex IoT projects, and learning multiple widget types at once.
Note: The Arduino Nano ESP32 supports BLE only — Classic Bluetooth is not supported. The DIYables Bluetooth App works on both Android and iOS with BLE.
Features
9 Widgets in One: Monitor, Chat, Slider, Joystick, Temperature, Plotter, Table, Analog Gauge, Rotator
Cross-Widget Interaction: Slider updates gauge and table; joystick updates table, etc.
Single BLE Connection: All widgets share one connection efficiently
Real-Time Updates: Each widget updates at its own configured interval
Comprehensive Dashboard: View all data from a single device
Android & iOS Support: BLE is compatible with both platforms
No Pairing Required: BLE connects without manual pairing
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you. Additionally, some of these links are for products from our own brand, DIYables .
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - Multiple Apps Example
Waiting for Bluetooth connection...
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2
Mobile App
Install the DIYables Bluetooth App on your smartphone: Android | iOS
Note: The DIYables Bluetooth App works on both Android and iOS with BLE. No manual pairing is required.
Launch the DIYables Bluetooth App.
On first launch, grant the following permissions:
Nearby Devices (Android 12+) / Bluetooth (iOS) — required to scan and connect to Bluetooth devices
Location (Android 11 and below only) — required by older Android versions to scan for BLE
Ensure Bluetooth is enabled on your device.
Tap Connect on the home screen. The app will scan for BLE devices.
Tap "DIYables Multi-App" in the scan results.
After connecting, the home screen displays all available app widgets. The 9 widgets initialised in the Arduino sketch will respond and function — other widgets on the home screen will appear but will not work with this sketch.
The example creates a table with 10 rows showing data from all apps:
Row
Label
Description
0
Status
Connection/running status
1
Uptime
Time since boot
2
Slider 1
Current slider value
3
Slider 2
Second slider value
4
Joystick X
Joystick X position
5
Joystick Y
Joystick Y position
6
Temperature
Current temperature
7
Gauge Value
Current gauge percentage
8
Rotator Angle
Current rotation angle
9
Messages
Chat message count
Creative Customization - Adapt the Code to Your Project
Add or Remove Widgets
Include only the widgets required for your project:
// Minimal setup: just Monitor and SliderDIYables_BluetoothMonitor bluetoothMonitor(bluetoothServer);DIYables_BluetoothSlider bluetoothSlider(bluetoothServer, 0, 100, 1);// That's it! The app will only show these two
Custom Cross-App Logic
// Example: Temperature alarm via Monitorvoid checkTemperatureAlarm(float temp) {if (temp > 40.0) { bluetoothMonitor.send("⚠️ HIGH TEMP ALERT: " + String(temp, 1) + "°C"); bluetoothChat.send("Temperature alarm triggered!"); }}
Troubleshooting
Common Issues
1. Device not visible in the app
Confirm the board is powered on and the sketch is uploaded
Verify Bluetooth is enabled on your phone
On Android 11 and below, enable Location services as well
2. Some widgets not showing in the menu
All initialised widgets will appear automatically
Verify each widget object is properly created
The app discovers available widgets from the Arduino
3. Updates seem slow
Each widget has different update intervals by design
BLE bandwidth is limited; too many rapid updates can cause congestion
Reduce update frequency for widgets that do not require real-time data
4. Cross-widget updates not working
Verify the callback functions are properly registered
Check that table row names match exactly (case-sensitive)
Confirm the target widget object is accessible within the callback scope
5. Memory issues or crashes
Running 9 widgets uses significant memory
Remove unused widgets to free resources
Reduce table row count if needed
6. Upload fails or board not recognized
Install the latest Arduino Nano ESP32 board package via Board Manager
Try a different USB cable or port
Project Ideas
Comprehensive IoT dashboard
Robot control panel (joystick + monitor + sliders)
Weather station (temperature + gauge + plotter + table)
Home automation hub (sliders + pins + monitor + chat)
STEM learning platform (all apps for experimentation)
Next Steps
After completing the Multiple Apps example, explore each individual tutorial for deeper understanding:
Bluetooth Chat — Messaging details
Bluetooth Slider — Value control details
Bluetooth Plotter — Data visualisation details
Bluetooth RTC — Time synchronisation using the built-in hardware RTC
Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!