Files
esp32-bluetooth-relay/docs/TROUBLESHOOTING.md

13 KiB

Troubleshooting Guide

Common issues and solutions for the ESP32 Bluetooth Relay Controller.

Table of Contents

  1. Bluetooth Issues
  2. Relay Problems
  3. Upload/Programming Issues
  4. Power Supply Problems
  5. Serial Communication
  6. Home Assistant Integration
  7. Hardware Verification

Bluetooth Issues

ESP32 Not Appearing in Bluetooth Scan

Symptoms: Device "ESP32-Relay-8CH" doesn't show up in Bluetooth devices list

Possible Causes & Solutions:

  1. Bluetooth not enabled in firmware

    Solution: Ensure CONFIG_BT_ENABLED is set in Arduino IDE
    - File → Preferences → Check "Enable Bluetooth"
    - Or use PlatformIO with correct platformio.ini
    
  2. ESP32 already paired with another device

    Solution: 
    - Unpair ESP32 from all devices
    - Power cycle the ESP32
    - Try scanning again
    
  3. ESP32 not running/crashed

    Solution:
    - Check serial monitor for boot messages
    - Look for "Bluetooth device ready to pair" message
    - Press reset button on ESP32
    
  4. Bluetooth module disabled on your device

    Solution:
    - Enable Bluetooth on your phone/computer
    - Ensure airplane mode is off
    - Restart your device
    

Can't Connect After Pairing

Symptoms: Device pairs but won't connect or immediately disconnects

Solutions:

  1. Clear pairing and re-pair

    Steps:
    - Forget/unpair the device
    - Restart ESP32
    - Restart your phone/computer
    - Pair fresh
    
  2. Check serial monitor

    Look for error messages indicating:
    - Memory issues
    - Bluetooth stack errors
    - Connection timeouts
    
  3. Interference

    - Move away from WiFi routers
    - Disable WiFi on ESP32 if not needed
    - Try in different location
    

Connection Keeps Dropping

Symptoms: Bluetooth disconnects randomly

Solutions:

  1. Distance issue

    - Move closer to ESP32 (< 10 meters)
    - Remove obstacles between devices
    - ESP32 should have clear line of sight
    
  2. Power supply instability

    - Use quality USB cable
    - Try different power adapter
    - Add capacitor (100-1000µF) across power
    
  3. Radio interference

    - Turn off nearby 2.4GHz WiFi
    - Move away from microwaves
    - Change Bluetooth channel if possible
    

Relay Problems

Relays Not Switching

Symptoms: Commands sent but relays don't click/switch

Diagnostic Steps:

  1. Check wiring

    Verify connections:
    ESP32 GPIO → Relay IN pin
    ESP32 GND → Relay GND
    ESP32 5V → Relay VCC
    
  2. Measure voltage at relay input

    Using multimeter:
    - When relay should be ON: measure ~0V (LOW)
    - When relay should be OFF: measure ~3.3V (HIGH)
    
  3. Test with serial monitor

    Open Serial Monitor (115200 baud)
    Send commands manually:
    - Type: ON1
    - Watch for confirmation messages
    - Check if relay clicks
    
  4. Verify GPIO pin assignment

    // Check this matches your wiring
    const int relayPins[8] = {13, 12, 14, 27, 26, 25, 33, 32};
    

Relays Switch Opposite (ON is OFF, OFF is ON)

Symptoms: Relay activates when you send OFF command

Cause: Active HIGH relay module instead of active LOW

Solution:

Edit the setRelay() function in code:

// Change from:
digitalWrite(relayPins[relayIndex], state ? LOW : HIGH);

// To:
digitalWrite(relayPins[relayIndex], state ? HIGH : LOW);

Or check if your relay module has a jumper for HIGH/LOW trigger selection.

Only Some Relays Work

Symptoms: Some relays work, others don't

Check:

  1. GPIO pin conflicts

    Pins to avoid on ESP32:
    - GPIO 6-11 (connected to flash)
    - GPIO 0, 2 (used for boot mode)
    - GPIO 34-39 (input only, can't drive relays)
    
  2. Damaged relay channels

    - Swap relay positions
    - If problem follows relay: relay is bad
    - If problem stays with pin: GPIO issue
    
  3. Insufficient current

    - Some relays may not get enough current
    - Use external power for relay module
    - Check power supply rating
    

Relays Stuck ON or OFF

Symptoms: Relay won't change state regardless of command

Solutions:

  1. Check relay manually

    - Disconnect from ESP32
    - Apply 5V directly to relay input
    - If still doesn't work: relay is damaged
    
  2. GPIO pin may be damaged

    - Try different GPIO pin
    - Update pin assignment in code
    
  3. Relay contacts welded

    - Possible if relay switched high current
    - Replace relay module
    - Use relay with higher current rating
    

Upload/Programming Issues

"Failed to connect to ESP32"

Symptoms: Upload fails with connection error

Solutions:

  1. Hold BOOT button during upload

    Steps:
    - Click Upload in Arduino IDE
    - When "Connecting..." appears
    - Press and hold BOOT button
    - Release after upload starts
    
  2. Check USB cable

    - Use data cable (not charge-only)
    - Try different USB cable
    - Try different USB port
    
  3. Install drivers

    Windows:
    - CP210x driver (Silicon Labs)
    - CH340 driver (WCH)
    
    Download from:
    - https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
    - http://www.wch-ic.com/downloads/CH341SER_ZIP.html
    
  4. Check COM port

    Arduino IDE:
    - Tools → Port
    - Select correct COM port (try different ones)
    - Should show "ESP32 Dev Module" or similar
    

Upload Succeeds but ESP32 Doesn't Boot

Symptoms: Upload completes but ESP32 doesn't run program

Check:

  1. Serial monitor for errors

    - Open Serial Monitor at 115200 baud
    - Press ESP32 reset button
    - Look for boot messages or errors
    
  2. Partition scheme

    Arduino IDE:
    - Tools → Partition Scheme
    - Select "Default 4MB with spiffs"
    
  3. Flash frequency

    - Tools → Flash Frequency → 80MHz
    - Try 40MHz if 80MHz doesn't work
    

Code Compiles but Has Errors

Symptoms: Build succeeds but runtime errors occur

Check:

  1. Board selection

    Ensure correct board:
    - Tools → Board → ESP32 Dev Module
    - Or your specific ESP32 variant
    
  2. Missing libraries

    Required libraries (usually included):
    - BluetoothSerial (ESP32 core)
    - Preferences (ESP32 core)
    
  3. Memory issues

    If you see watchdog resets:
    - Reduce buffer sizes
    - Add delay() calls in tight loops
    - Check for infinite loops
    

Power Supply Problems

ESP32 Keeps Rebooting

Symptoms: ESP32 restarts randomly, especially when relays switch

Causes & Solutions:

  1. Insufficient power supply

    Solution:
    - Use 5V 2A+ power adapter
    - Don't power from computer USB (limited to 500mA)
    - Add 1000µF capacitor across ESP32 power
    
  2. Voltage drop when relays activate

    Solution:
    - Power relay module separately
    - Use dedicated 5V supply for relays
    - Add bulk capacitors (1000-2200µF)
    
  3. Ground loops

    Solution:
    - Ensure all grounds connected (ESP32, relay, power)
    - Use star grounding (all grounds to single point)
    

Relays Click but Don't Switch Load

Symptoms: Relay audibly clicks but load doesn't turn on

Check:

  1. Load wiring

    Verify connections:
    - Power → Relay COM
    - Relay NO → Load positive
    - Load negative → Power negative
    
  2. Relay contact rating

    - Check relay specs (usually 10A @ 250VAC)
    - Ensure load doesn't exceed rating
    - For high current, use contactor instead
    
  3. Load requires neutral

    For AC loads:
    - Switch only hot/live wire
    - Neutral connects directly to load
    

ESP32 Won't Power On

Symptoms: No lights, no serial output, completely dead

Solutions:

  1. Check power connections

    Multimeter check:
    - 5V pin should read ~5V
    - 3.3V pin should read ~3.3V
    - GND should read 0V
    
  2. USB cable/port

    - Try different USB cable
    - Try different USB port
    - Try different computer
    - Use external 5V power supply
    
  3. Board may be damaged

    - Check for burnt components
    - Check for shorts with multimeter
    - May need replacement
    

Serial Communication

No Output in Serial Monitor

Symptoms: Serial Monitor opens but shows nothing

Solutions:

  1. Baud rate mismatch

    - Ensure Serial Monitor set to 115200 baud
    - Match baud rate in code: Serial.begin(115200);
    
  2. Wrong COM port

    - Tools → Port → Select correct port
    - Unplug/replug ESP32 to see which port appears
    
  3. Reset ESP32

    - Press reset button
    - Should see boot messages
    

Garbled/Random Characters

Symptoms: Serial Monitor shows gibberish

Solutions:

  1. Baud rate mismatch

    - Double check 115200 baud
    - Try 9600 baud as test
    
  2. Loose USB connection

    - Reseat USB cable
    - Try different cable
    
  3. Defective USB-Serial chip

    - Board may be damaged
    - Try different ESP32 board
    

Home Assistant Integration

Bluetooth Serial Not Working

Symptoms: Can't connect ESP32 to Home Assistant via Bluetooth

Solutions:

  1. Check HA has Bluetooth

    - Raspberry Pi with built-in Bluetooth
    - Or USB Bluetooth adapter
    - Run: hcitool scan
    
  2. Find ESP32 MAC address

    sudo hcitool scan
    # Note MAC address of ESP32-Relay-8CH
    
  3. Pair manually first

    bluetoothctl
    scan on
    # Wait for ESP32 to appear
    pair XX:XX:XX:XX:XX:XX
    trust XX:XX:XX:XX:XX:XX
    connect XX:XX:XX:XX:XX:XX
    
  4. Check integration installed

    - Settings → Devices & Services
    - Add Integration → Bluetooth Serial
    - May need HACS for some integrations
    

ESPHome Won't Compile

Symptoms: ESPHome configuration has errors

Solutions:

  1. Check YAML syntax

    - Indentation matters (use 2 spaces)
    - No tabs allowed
    - Validate YAML online
    
  2. GPIO pin conflicts

    - Don't use reserved pins
    - Ensure no duplicate pin assignments
    
  3. Update ESPHome

    pip install --upgrade esphome
    

Hardware Verification

Step-by-Step Hardware Test

Basic Test Procedure:

  1. Visual Inspection

    Check:
    - No loose wires
    - No shorts (touching wires)
    - Proper connections
    - LEDs on boards light up
    
  2. Power Test

    Using multimeter:
    - ESP32 5V pin: ~5V
    - ESP32 3.3V pin: ~3.3V
    - Relay VCC: ~5V
    - All GNDs connected: 0V between any GND points
    
  3. GPIO Test

    Upload blink sketch to test GPIO:
    - Use single_relay_test.ino example
    - Test one relay at a time
    - Confirm relay clicks
    
  4. Bluetooth Test

    - Pair with phone
    - Send STATUS command
    - Verify response
    - Send ON1 command
    - Verify relay activates
    
  5. Load Test (CAREFUL!)

    Start with low voltage:
    - 12V LED strip (safe)
    - Then 24V device
    - Finally AC device (with proper safety)
    

Multimeter Quick Reference

Testing Relay Module:

Measure between relay VCC and GND: Should read 5V ±0.5V
Measure between ESP32 GPIO and GND when OFF: Should read 3.3V
Measure between ESP32 GPIO and GND when ON: Should read 0V
Measure relay coil when triggered: Should have low resistance (< 100Ω)
Measure relay contacts NO-COM when OFF: Should be open (infinite resistance)
Measure relay contacts NO-COM when ON: Should be closed (< 1Ω)

Getting More Help

If none of these solutions work:

  1. Check serial monitor output - Copy exact error messages
  2. Take photos of your wiring - Visual inspection helps
  3. Document your setup - Board model, relay model, power supply
  4. Open an issue on the repository with all above information

Issue Template

**Problem Description:**
[Brief description]

**Hardware:**
- ESP32 Board: [model]
- Relay Module: [model]  
- Power Supply: [voltage/current]

**Software:**
- Arduino IDE: [version]
- ESP32 Core: [version]

**Serial Output:**

[paste serial monitor output here]


**Photos:**
[Attach clear photos of wiring]

**What I've Tried:**
- [List troubleshooting steps attempted]

Document Version: 1.0
Last Updated: December 2025

Found a solution not listed here? Please contribute to this guide!