ESP32 S3 UNO - DIYables Bluetooth App Rotator

Overview

This ESP32 S3 Uno Bluetooth rotator tutorial shows you how to turn a knob on your phone and send the angle to the ESP32 S3 Uno form board over BLE. The DIYables Bluetooth STEM app gives you a rotatable disc. Each time you drag it, the board gets a new angle value, so you can move a servo, step a motor or set a volume level without any wires to the phone.

In this tutorial, you will:

  1. Install the DIYables Bluetooth library in the Arduino IDE
  2. Upload the BLE rotator example to the ESP32 S3 Uno
  3. Connect the DIYables Bluetooth app and read angle values in the Serial Monitor
  4. Switch between limited and continuous rotation modes
  5. Use the angle to control a servo motor, a PWM output or a stepper motor
ESP32 S3 Uno Bluetooth rotator

※ NOTE THAT:

The ESP32 S3 Uno supports only BLE (Bluetooth Low Energy). It has no Bluetooth Classic radio, so the BluetoothSerial library and the Classic Bluetooth example (Esp32Bluetooth_Rotator) do not work on it. This page uses only the BLE example (Esp32BLE_Rotator). The good news: BLE works with the app on both Android and iOS, and you do not need to pair the board first.

Features

The rotator turns your phone screen into a round control knob. Here is what it gives you.

A knob you can drag

You touch the disc and drag it around. The app sends the new angle to the board as a float value in real time.

Two rotation modes

Continuous mode lets the disc spin a full 360° and wrap around. Limited mode keeps the angle inside a range you choose, such as 0° to 180° for a servo.

Two-way updates

The board can also send an angle back to the app. This keeps the knob in sync with the real position, for example after a reconnect.

BLE on Android and iOS

BLE works on both phone types and needs no manual pairing. It also uses less power than Classic Bluetooth.

Hardware Preparation

1×ESP32 S3 Uno-form Board
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×(optional) Servo Motor
1×Breadboard
1×Jumper Wires

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
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 .

Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.

ESP32 S3 Uno Pinout

The image below shows the pinout diagram of the ESP32 S3 Uno form board. Use it to find the Uno header pins (D9, D10, 5V, GND…) and their GPIO numbers if you add a servo or another part to this project.

ESP32 S3 Uno pinout diagram

ESP32 S3 Uno Code

The basic example needs no wiring at all. You only need the board, a USB cable and your phone. The steps below install the library and upload the BLE rotator sketch.

Detailed Instructions

  1. New to the ESP32 S3 Uno? Follow ESP32 S3 Uno - Getting Started first.
  2. Connect the board to your computer with a USB Type-C cable.
  3. Open Arduino IDE, choose the ESP32S3 Dev Module board and the correct COM port.
  4. Set the partition scheme: go to Tools > Partition Scheme and pick "Huge APP (3MB No OTA/1MB SPIFFS)". The Bluetooth library is big and does not fit in the default app space.
  5. Open the Library Manager: click the Libraries icon on the left bar of the Arduino IDE.
  6. Find the library: search "DIYables Bluetooth" and find the DIYables Bluetooth library by DIYables.
  7. Install it: click the Install button.
  • Search for DIYables Bluetooth created by DIYables and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
DIYables Bluetooth by DIYables
A comprehensive Bluetooth library that connects Arduino to the DIYables Bluetooth STEM mobile app (Android & iOS) via BLE and Classic Bluetooth. Features 11 built-in apps: Monitor, Chat, Digital Pin Control, Joystick, Sliders, Plotter, Analog Gauge, Rotator, Temperature, RTC, and Data Table. Clean architecture with platform abstraction. Works with Arduino Uno R4 WiFi, Arduino Nano 33 BLE, ESP32, and other BLE-capable boards. No mobile coding required. More info
1.0.1
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Install the dependencies: when the IDE asks about other libraries, click Install All.
  2. Tip: if the upload fails with a "Sketch too big" message, check the partition scheme again. It often resets when you change the board.

ESP32 S3 Uno BLE Code (works with the app on Android and iOS)

This sketch starts a BLE server named "ESP32BLE_Rotator" and adds the rotator app to it. The knob works in limited mode from 0° to 180°, and every new angle is printed to the Serial Monitor. When the phone connects, the board sends the last known angle, so the knob in the app shows the right position.

  1. Load the example: in Arduino IDE, go to File Examples DIYables Bluetooth Esp32BLE_Rotator, or copy the code below into the editor.
/* * This ESP32 S3 Uno code was developed by newbiely.com * * This ESP32 S3 Uno code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-s3-uno/esp32-s3-uno-diyables-bluetooth-app-rotator */ /* * DIYables Bluetooth Library - ESP32 S3 Uno BLE Rotator Example * Works with DIYables Bluetooth STEM app on Android and iOS * * This example demonstrates the Bluetooth Rotator feature: * - Rotatable disc/knob control (0-360 degrees) * - Continuous or limited angle range * - Perfect for servo control, compass display, volume knobs * * Board: ESP32 S3 Uno form board (BLE only, no Classic Bluetooth) * * Note: Select "Huge APP (3MB No OTA/1MB SPIFFS)" partition scheme * in Arduino IDE: Tools > Partition Scheme * * Optional: Servo motor for visual feedback * * Setup: * 1. Upload the sketch to your ESP32 S3 Uno * 2. Open Serial Monitor (115200 baud) to see connection status * 3. Use DIYables Bluetooth App to connect and rotate the knob * * Tutorial: https://diyables.io/bluetooth-app * Author: DIYables */ #include <DIYables_BluetoothServer.h> #include <DIYables_BluetoothRotator.h> #include <platforms/DIYables_Esp32BLE.h> // BLE Configuration const char* DEVICE_NAME = "ESP32BLE_Rotator"; const char* SERVICE_UUID = "19B10000-E8F2-537E-4F6C-D104768A1214"; const char* TX_UUID = "19B10001-E8F2-537E-4F6C-D104768A1214"; const char* RX_UUID = "19B10002-E8F2-537E-4F6C-D104768A1214"; // Create Bluetooth instances DIYables_Esp32BLE bluetooth(DEVICE_NAME, SERVICE_UUID, TX_UUID, RX_UUID); DIYables_BluetoothServer bluetoothServer(bluetooth); // Create Rotator app instance DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_LIMITED, 0, 180); // Variables to store current angle float currentAngle = 0.0; // Optional: Servo control (uncomment if using the ESP32Servo library) // #include <ESP32Servo.h> // Servo myServo; // const int SERVO_PIN = 46; // ESP32 S3 Uno pin D9 (GPIO46) void setup() { Serial.begin(115200); delay(1000); Serial.println("DIYables Bluetooth - ESP32 S3 Uno BLE Rotator Example"); // Optional: Initialize servo // myServo.attach(SERVO_PIN); // myServo.write(0); bluetoothServer.begin(); bluetoothServer.addApp(&bluetoothRotator); bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothRotator.send(currentAngle); }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); }); bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; Serial.print("Rotator angle: "); Serial.print(angle); Serial.println("°"); // TODO: Add your control logic here based on angle // Example: myServo.write((int)angle); }); Serial.println("Waiting for Bluetooth connection..."); } void loop() { bluetoothServer.loop(); delay(10); }
  1. Upload: click the Upload button.
  2. Open the Serial Monitor and set it to 115200 baud.
  3. Check the output. It should look like this:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
DIYables Bluetooth - ESP32 S3 Uno BLE Rotator Example Waiting for Bluetooth connection...
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2
  1. Tip: the servo lines in the sketch are commented out. Remove the // marks when you wire a servo to D9 (GPIO46), as shown in the Servo Control example below.

Mobile App

The app is where you turn the knob. Because the ESP32 S3 Uno uses BLE, you connect from inside the app and skip the phone's Bluetooth pairing menu.

  1. Install the app: get the DIYables Bluetooth App for Android or iOS.
  2. Open the app and grant the permissions it asks for:
  • Nearby Devices (Android 12+) or Bluetooth (iOS), needed to scan and connect
  • Location (Android 11 and below only), needed by older Android versions to scan for BLE devices
  1. Turn on Bluetooth on your phone.
  2. Scan: on the home screen, tap the Connect button.
DIYables Bluetooth App - Home Screen with Scan Button
  1. Connect: tap "ESP32BLE_Rotator" in the scan results.
  2. Open the Rotator: the app returns to the home screen after it connects. Tap the Rotator app.
DIYables Bluetooth App - Home Screen with Rotator App

※ NOTE THAT:

You can tap the settings icon on the home screen to show or hide apps. For more details, read the DIYables Bluetooth App User Manual.

  1. Turn the knob: drag the disc to change the angle.
DIYables Bluetooth App - Rotator Screen

Go back to the Serial Monitor in the Arduino IDE. You will see each new angle as you turn the knob:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
Bluetooth connected! Rotator angle: 45.00° Rotator angle: 90.00° Rotator angle: 135.00° Rotator angle: 180.00°
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Creative Customization - Adapt the Code to Your Project

The example only prints the angle. The snippets below show the library functions you can use to shape the knob and react to it in your own ESP32 S3 Uno project.

Configure Rotator Mode

You pick the mode when you create the rotator object. You can also change it later while the sketch runs, and read the current settings back.

// Option 1: Continuous mode (0-360°, wraps around) DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_CONTINUOUS); // Option 2: Limited mode (constrained angle range) DIYables_BluetoothRotator bluetoothRotator(ROTATOR_MODE_LIMITED, 0, 180); // Change mode at runtime: bluetoothRotator.setRotatorMode(ROTATOR_MODE_LIMITED, 0, 270); // Read current configuration: int mode = bluetoothRotator.getRotatorMode(); float minAngle = bluetoothRotator.getMinAngle(); float maxAngle = bluetoothRotator.getMaxAngle();

Handle Angle Changes

The onRotatorAngle() callback runs every time the app sends a new angle. Put your control logic inside it.

bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; Serial.print("Rotator angle: "); Serial.print(angle); Serial.println("°"); // TODO: Add your control logic here });

Handle Configuration Request from App

When the app opens the rotator screen, it can ask the board for its current state. Answer with the current angle so the knob starts in the right place.

bluetoothRotator.onGetConfig([]() { // Send current angle to the app bluetoothRotator.send(currentAngle); Serial.println("App requested config - sent current angle"); });

Send Angle to App

The ESP32 S3 Uno can move the knob on the phone by itself. It can also send a short text message.

// Send angle value to update the app display bluetoothRotator.send(90.0); // Set rotator to 90° // Send text message bluetoothRotator.send("Calibrated");

Handle Connection Events

These two callbacks tell you when the phone connects or leaves. Sending the angle on connect keeps the app in sync.

bluetoothServer.setOnConnected([]() { Serial.println("Bluetooth connected!"); bluetoothRotator.send(currentAngle); // Send current position }); bluetoothServer.setOnDisconnected([]() { Serial.println("Bluetooth disconnected!"); });

How to Use the Rotator

It helps to know what each part of the screen does before you build on it.

App Interface Controls

Rotatable disc

Touch the disc and drag it around to change the angle.

Angle display

The number in the middle shows the current angle.

Position marker

A marker on the disc points to the current position.

Rotator Modes

ROTATOR_MODE_CONTINUOUS (value 0) gives a full 360° turn that wraps back to 0°. ROTATOR_MODE_LIMITED (value 1) keeps the angle between the min and max values you set.

Programming Examples

These examples show real uses for the angle. Each one is a part of a sketch, so add it to the full BLE example above.

Servo Control

Limited mode from 0° to 180° matches a normal servo, so you can write the angle straight to the servo. Install the "ESP32Servo" library by Kevin Harrington first. The standard Servo library does not run on the ESP32 S3 Uno.

Wire the servo like this. Power it from the 5V pin, because servos need 5V. The signal goes out of the board, so the 3.3V level is safe and most servos read it fine.

Servo Pin ESP32 S3 Uno Pin
VCC (red) 5V
GND (brown) GND
Signal (orange) D9 (GPIO46)

WARNING

D9 (GPIO46) is a boot strapping pin on the ESP32 S3 Uno. The board reads it at startup to choose the boot mode. A servo signal line is normally fine, but if the board will not boot or upload while the servo is connected, unplug the signal wire, upload, and then plug it back in.

#include <ESP32Servo.h> Servo myServo; const int SERVO_PIN = 46; // ESP32 S3 Uno pin D9 (GPIO46) void setup() { myServo.attach(SERVO_PIN); myServo.write(0); // Limited mode: 0-180° matches servo range // bluetoothRotator already configured as (ROTATOR_MODE_LIMITED, 0, 180) bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; myServo.write((int)angle); Serial.print("Servo: "); Serial.print((int)angle); Serial.println("°"); }); }

For a pan-tilt mount, add a second servo on D10 (GPIO10) and drive it from another control, such as a Bluetooth slider.

Volume/Brightness Knob

Here the knob runs in continuous mode. The sketch maps 0–360° to a PWM value of 0–255 and also prints it as a percentage. Connect an LED (with a resistor) or another PWM input to D5 (GPIO20).

const int PWM_PIN = 20; // ESP32 S3 Uno pin D5 (GPIO20) void setup() { pinMode(PWM_PIN, OUTPUT); // Continuous mode: 0-360° mapped to 0-255 bluetoothRotator.setRotatorMode(ROTATOR_MODE_CONTINUOUS); bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; int pwmValue = map((int)angle, 0, 360, 0, 255); analogWrite(PWM_PIN, pwmValue); int percentage = map((int)angle, 0, 360, 0, 100); Serial.print("Volume: "); Serial.print(percentage); Serial.println("%"); }); }

Compass Display

This time the data flows the other way. The board reads a compass heading every 500 ms and moves the knob in the app to match it. Compass modules use I2C, so wire them to the SDA (GPIO8) and SCL (GPIO9) header pins.

// Read compass heading from sensor and display on rotator float getCompassHeading() { // TODO: Read from HMC5883L, QMC5883L, or BMM150 // Return heading in degrees 0-360 return 0.0; } void loop() { bluetoothServer.loop(); static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 500) { lastUpdate = millis(); float heading = getCompassHeading(); bluetoothRotator.send(heading); // Update rotator display } delay(10); }

Stepper Motor Control

A stepper driver with STEP and DIR inputs can follow the knob. The sketch turns the angle into a target step count for a 200-step motor, and stepper.run() moves it there. Wire STEP to D2 (GPIO18) and DIR to D3 (GPIO17).

#include <AccelStepper.h> AccelStepper stepper(AccelStepper::DRIVER, 18, 17); // STEP = D2 (GPIO18), DIR = D3 (GPIO17) const int STEPS_PER_REV = 200; void setup() { stepper.setMaxSpeed(1000); stepper.setAcceleration(500); bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; // Convert angle to stepper position long targetSteps = (long)(angle / 360.0 * STEPS_PER_REV); stepper.moveTo(targetSteps); Serial.print("Stepper target: "); Serial.print(targetSteps); Serial.println(" steps"); }); } void loop() { bluetoothServer.loop(); stepper.run(); delay(1); }

Advanced Programming Techniques

Once the basics work, you can change how the angle is handled before you use it.

Angle Snap to Increments

This code rounds the angle to the nearest 15° step and sends the rounded value back. The knob in the app then jumps to clean positions.

bluetoothRotator.onRotatorAngle([](float angle) { // Snap to nearest 15° increment float snapped = round(angle / 15.0) * 15.0; currentAngle = snapped; Serial.print("Snapped angle: "); Serial.print(snapped, 0); Serial.println("°"); // Update app to show snapped value bluetoothRotator.send(snapped); });

Zone-Based Control

You can split the circle into four zones and run different actions in each one. Here every zone sets a different RGB LED color. Write your own setColor() function for your LED.

bluetoothRotator.onRotatorAngle([](float angle) { currentAngle = angle; // Divide 360° into zones if (angle < 90) { Serial.println("Zone: NORTH"); setColor(0, 0, 255); // Blue } else if (angle < 180) { Serial.println("Zone: EAST"); setColor(0, 255, 0); // Green } else if (angle < 270) { Serial.println("Zone: SOUTH"); setColor(255, 0, 0); // Red } else { Serial.println("Zone: WEST"); setColor(255, 255, 0); // Yellow } });

Why BLE Only on the ESP32 S3 Uno?

Some other boards offer both BLE and Classic Bluetooth. The ESP32 S3 Uno has a BLE radio only, so the choice is made for you. That is fine for this project, as the table shows.

Feature BLE on the ESP32 S3 Uno
iOS Support Yes
Android Support Yes
Power Use Low
Range About 30 to 100 m in open space
Pairing Not needed, connect from the app
Example Name Esp32BLE_Rotator

Common Issues and Debugging

Most rotator problems come from the connection, the mode settings or the servo power. Check these first.

The device does not show up in the app

Make sure the sketch is uploaded and the board is powered. Turn on Bluetooth on your phone, and on Android 11 and below also turn on Location. Remember to look for "ESP32BLE_Rotator", not a Classic Bluetooth name.

The knob moves but nothing happens

Look at the connection status in the app and in the Serial Monitor. If you see no "Bluetooth connected!" line, disconnect and connect again.

The angle values look wrong

Check the mode (continuous or limited) and the min and max angles. Use getMinAngle() and getMaxAngle() to print the real settings.

The servo jitters

Ignore very small angle changes in your code, power the servo from a separate 5V supply, and add a capacitor across the servo power pins.

The connection drops often

Move the phone closer to the ESP32 S3 Uno and away from other BLE devices. A weak USB port can also cause drops.

Sketch too big

Go to Tools > Partition Scheme and pick "Huge APP (3MB No OTA/1MB SPIFFS)" or "No OTA (Large APP)". The default scheme leaves only about 1.2 MB for your code, which is too small for the Bluetooth library.

Debug Tips

This helper prints the angle, the mode and the range in one block. Call it inside onRotatorAngle() while you test.

void debugRotatorValue(float angle) { Serial.println("=== Rotator Debug ==="); Serial.println("Angle: " + String(angle, 1) + "°"); Serial.println("Mode: " + String(bluetoothRotator.getRotatorMode() == ROTATOR_MODE_CONTINUOUS ? "Continuous" : "Limited")); Serial.println("Range: " + String(bluetoothRotator.getMinAngle(), 0) + "° - " + String(bluetoothRotator.getMaxAngle(), 0) + "°"); Serial.println("====================="); }

Project Ideas

A knob is a simple input, but it fits many projects. Here are some ideas for your ESP32 S3 Uno.

Motor Control

A servo position knob, a stepper angle selector, a motor speed dial or a robot arm joint.

Display Projects

A compass heading display, analog clock hands, a wind direction indicator or a dial gauge.

Audio Projects

A volume knob, a tone frequency selector, an equalizer band or a radio tuner dial.

Lighting Projects

An LED ring position, a color wheel for hue, a spotlight direction or a stage light angle.

Integration with Other Bluetooth Apps

The rotator works well together with other DIYables Bluetooth apps on the same board.

Combine with Bluetooth Slider

Use the rotator for direction and a slider for speed. The code turns both into X and Y values for two motors.

float speed = 50; bluetoothSlider.onSliderValue([](int slider1, int slider2) { speed = slider1; }); bluetoothRotator.onRotatorAngle([](float angle) { // Combine angle (direction) with speed (intensity) float radians = angle * PI / 180.0; float x = speed * cos(radians); float y = speed * sin(radians); controlMotors(x, y); });

Combine with Bluetooth Table

Show the angle, the quadrant and the angle in radians in a table on the phone.

bluetoothRotator.onRotatorAngle([](float angle) { bluetoothTable.sendValueUpdate("Angle", String(angle, 1) + "°"); bluetoothTable.sendValueUpdate("Quadrant", String((int)(angle / 90) + 1)); bluetoothTable.sendValueUpdate("Radians", String(angle * PI / 180.0, 3)); });

Next Steps

When the rotator works, try these other examples on your ESP32 S3 Uno:

  1. Bluetooth Joystick for 2D direction control
  2. Bluetooth Slider for linear value control
  3. Bluetooth Analog Gauge for gauge-style feedback
  4. Multiple Bluetooth Apps to combine the rotator with other controls

Support

If you get stuck, these places can help:

  1. The API Reference documentation of the DIYables Bluetooth library
  2. The Arduino community forums

FAQ

Does the ESP32 S3 Uno support Classic Bluetooth for the rotator?

No. The ESP32 S3 Uno has BLE only. Use the Esp32BLE_Rotator example. The Esp32Bluetooth_Rotator example uses BluetoothSerial and will not compile or work on this board.

Which library do I need for the Bluetooth rotator on the ESP32 S3 Uno?

Install the "DIYables Bluetooth" library by DIYables and its dependencies. The ESP32 S3 Uno uses platforms/DIYables_Esp32BLE.h, while the UNO R4 WiFi uses platforms/DIYables_ArduinoBLE.h. The rotator functions are the same on both boards.

Can I power a servo from the ESP32 S3 Uno 5V pin?

A small SG90 servo with no load usually works from the 5V pin. A bigger servo, or one under load, can pull a current spike that resets the board. In that case use an external 5V supply and connect its GND to the ESP32 S3 Uno GND.

Is the 3.3V signal of the ESP32 S3 Uno enough for a 5V servo?

Yes, for most hobby servos. The signal goes out of the board, so it cannot harm the pin. Never connect a 5V signal into an ESP32 S3 Uno pin, because the pins are not 5V tolerant.

Why does my upload fail with "Sketch too big"?

The BLE stack and the DIYables library need more flash than the default partition gives. Select "Huge APP (3MB No OTA/1MB SPIFFS)" under Tools > Partition Scheme and upload again.

What if my project needs more pins than the Uno headers give?

The ESP32 S3 Uno has two extra rows of holes with more GPIOs: GPIO15 and GPIO16 (I/O, PWM, analog), GPIO45 and GPIO35 to GPIO42 (I/O, PWM), and GPIO47/GPIO48 (output only, PWM). Solder pin headers to use them and write the GPIO number in code. For extra servos or stepper drivers, GPIO35 to GPIO42 are a good choice. Be careful with two things. First, GPIO47 and GPIO48 may run at 1.8V instead of 3.3V on some modules (especially ones with "V" in the name, like R8V or R16V), so 3.3V devices can be damaged or act strangely. Second, GPIO0, GPIO3 (D6), GPIO45 and GPIO46 (D9) are boot strapping pins, and a wrong connection can stop the board from booting or uploading code. Use the other extra pins first.

Troubleshooting

Problem Possible Cause Solution
No COM port in Arduino IDE USB driver missing or board not in download mode Install the CP210x or CH340 driver, try another USB cable, or hold BOOT while you press RESET
Upload fails with Sketch too big Default partition scheme is too small for BLE Select Huge APP (3MB No OTA/1MB SPIFFS) in Tools > Partition Scheme
ESP32BLE_Rotator not in the scan list Sketch not running, or phone Bluetooth or Location is off Check the Serial Monitor for Waiting for Bluetooth connection, then turn on Bluetooth (and Location on Android 11 and below)
Compile error about BluetoothSerial Classic Bluetooth example used Use the Esp32BLE_Rotator example, as the ESP32 S3 Uno has no Classic Bluetooth
Servo does not move Wrong pin, ESP32Servo not installed or attach() missing Wire the signal to D9 (GPIO46), install ESP32Servo and call attach(46)
Board resets when the servo moves Servo pulls too much current from the 5V pin Use an external 5V supply for the servo and share GND with the board
Board does not boot with the servo connected D9 (GPIO46) is a boot strapping pin Unplug the servo signal wire during boot or upload, then plug it back in
Serial Monitor shows strange characters Wrong baud rate Set the Serial Monitor to 115200 baud

※ OUR MESSAGES

  • As freelancers, We are AVAILABLE for HIRE. See how to outsource your project to us
  • 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!