Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversFall ResetAmazon USFall reset deals: check better picks before checkoutAmazon US: today's deals, useful picks and quick comparisons.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
Blog

Use Bluetooth to Control a Lamp from Your Smartphone with Arduino (2026 Safety Guide)

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Yes—you can build a working Bluetooth Low Energy (BLE) switch with an Arduino and operate it from a nearby smartphone. The safest path is to prove the circuit with an LED, then use an enclosed relay interface such as a PowerSwitch Tail to control a plug-in lamp. This is a local, educational prototype based on Make:’s 2016 project (page updated in 2023), not a certified in-wall smart-switch installation.

The original design uses an Arduino Uno, an Adafruit nRF8001 Bluefruit LE breakout, the legacy BLEPeripheral library and a generic BLE GATT browser. In 2026, treat that hardware and software combination as a faithful reproduction route rather than the easiest new-build platform.

What you are building

The phone acts as a BLE central and the Arduino as a BLE peripheral. The Arduino advertises a custom service, accepts a value written by the phone, and changes an output. A physical pushbutton changes the same output locally; a notification characteristic reports that change back to a connected phone.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Smartphone BLE app
        ⇅
Custom GATT service
        ⇅
Arduino + BLE module
   ⇅              ⇅
Pushbutton       Enclosed relay
                   ⇅
                Plug-in lamp

This solves a common smart-bulb problem: when somebody turns off the wall switch, a smart bulb loses power and cannot receive commands. A smart switch or relay keeps the switching function outside the bulb. The prototype is different from a certified wall switch because it has no automatic internet access, schedules, voice-assistant integration or guaranteed electrical certification.

#1 Best Overall
Genuine RobotDYN - PWM Ac Programmable Light Dimmer 110V - 220V AC Module Controller Board for Arduino, STM, ARM, AVR, Raspberry Compatible 50/60hz with HeatSink 3.3V/5V Logic from 110V Ac to 220V AC
  • AC Light Dimmer Module Controller Board ARDUINO RASPBERRY Compatible 50/60Hz 3.3V/5V logic 220V/110V
  • SAMPLE: please see images. Can control AC/DC motor, electric pump, tools
  • Compatible with any ARDUINO, RASPBERRY boards. Arduino, STM, ARM, AVR, Raspberry
  • 50Hz or 60Hz. / Working voltage from 110v to 240v. It supports up to 2A . But such currents will require a proper cooling.
  • AC Phase Control Circuit (Dimming Circuit) / Home Automation, School Projects, Work Related Projects

Parts and prerequisites

  • Arduino Uno
  • Adafruit nRF8001 Bluefruit LE breakout (for a faithful reproduction)
  • Solderless breadboard and jumper wires
  • LED and 220-ohm resistor
  • Momentary tactile pushbutton and 10-kilohm resistor
  • Computer with Arduino IDE
  • Enclosed PowerSwitch Tail-style relay interface for a plug-in lamp

The original Make: materials list and project are documented at Make:’s DIY smart light switch guide. Use the LED stages before connecting any mains load.

Build and verify the low-voltage circuit first

1. Blink an LED

Upload the standard Blink example, using pin 13 if you are following the original project. Confirm that the correct board and USB port are selected and that uploads complete before adding a button or radio.

2. Add the pushbutton

The original circuit uses pin 4 for the button and a 10-kilohm pull-down resistor. The resistor gives the input a defined logic-low level when the button is open; it does not, by itself, fully debounce a mechanical switch. For reliable operation, check breadboard connections and add software debounce—for example, accept a transition only after the input has remained unchanged for a short interval.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a common ground, then confirm that pressing the button reliably toggles the LED. Do not proceed to BLE troubleshooting until this basic circuit is stable.

Rank #2
HiLetgo UNO R3 D1 R32 ESP32 ESP-32 CH340G WiFi+Bluetooth+UNO Development Board WiFi Bluetooth 4MB Flash with Micro USB for Arduino
  • DC 5V-12V
  • 1 analog input(3.2V max input)
  • Micro USB connection
  • Compatible with For Arduino
  • D1 R32=WiFi+Bluetooth+UNO

Add BLE using the original project’s definitions

Install BLEPeripheral through the Arduino IDE Library Manager and load the project sketch. With the original nRF8001 wiring, the article assigns:

  • RDY to Arduino pin 2
  • RST to Arduino pin 9
  • REQ to Arduino pin 10

These are board- and sketch-specific assignments, not a universal BLE pinout. A newer BLE board will normally require a different board package, library, wiring and rewritten sketch. For example, Adafruit’s Feather nRF52 Bluefruit LE supports custom GATT work but is not a drop-in replacement for an Uno plus nRF8001.

Service and characteristic model

Element UUID Properties Purpose
Light-switch service FF10 Service Groups the controls
Switch FF11 Read/write Phone writes the requested state
State FF12 Notify Device reports physical-button changes
User description 2901 Descriptor Labels characteristics

The core declarations look like this:

BLEPeripheral blePeripheral = BLEPeripheral(BLE_REQ, BLE_RDY, BLE_RST);
BLEService lightswitch = BLEService("FF10");
BLECharCharacteristic switchCharacteristic =
  BLECharCharacteristic("FF11", BLERead | BLEWrite);
BLECharCharacteristic stateCharacteristic =
  BLECharCharacteristic("FF12", BLENotify);

In setup, the original sketch advertises the names Light Switch and Smart Light Switch, publishes service FF10, and registers a write handler:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
switchCharacteristic.setEventHandler(
  BLEWritten, switchCharacteristicWritten
);

In this project’s convention, byte 0x00 means off and 0x01 means on. Those values are custom choices, not a universal BLE lighting standard.

Rank #3
3 pcs Genuine PWM Ac Programmable Light Dimmer 110V - 220V AC Module Controller Compatible 50/60hz 3.3V/5V Logic Compatible with Arduino, STM, ARM, Raspberry
  • AC Light Dimmer Module Controller Board ARDUINO RASPBERRY Compatible 50/60Hz 3.3V/5V logic 220V/110V
  • SAMPLE: please see images. Can control AC/DC motor, electric pump, tools
  • Compatible with any ARDUINO, RASPBERRY boards. Arduino, STM, ARM, AVR, Raspberry
  • AC Phase Control Circuit (Dimming Circuit) / Home Automation, School Projects, Work Related Projects
  • 3pcs in a bag. The zero crossing is directly derived from the rectified mains AC lines.

Test from a phone without relying on one app’s menus

The original article names LightBlue for iOS and nRF Master Control Panel for Android. App names, permissions and screens change, so use any current BLE GATT browser that can write characteristics and subscribe to notifications.

  1. Enable Bluetooth and grant the app its required nearby-device permission.
  2. Scan for Smart Light Switch and connect.
  3. Discover service FF10.
  4. Find writable characteristic FF11 and write a one-byte hexadecimal value 01.
  5. Confirm that the LED turns on. Write 00 to turn it off.
  6. Subscribe to notifications on FF12.
  7. Press the physical button and verify that a notification reports the new state.

Notifications avoid constant polling. Without a subscription, the phone may continue to display an old value until it reads the characteristic again.

Replace the LED with an enclosed relay interface

A PowerSwitch Tail-style product places the mains relay in an enclosure and provides low-voltage control terminals. In the original wiring, connect +in to +5 V, the middle terminal to the Arduino signal wire and the right terminal to ground. The article states a maximum of 15 A at 120 V for its example interface; always follow the exact rating printed by the manufacturer, including voltage, current, load type and environment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The described setup is active-low. The relay may turn on when the Arduino output is LOW:

Rank #4
ALITOVE WS2812B WS2811 Addressable LED Bluetooth Controller iOS Android App Wireless Remote Control DC 5V~24V for SK6812 SK6812-RGBW WS2812 SM16703 Dream Color Programmable RGB LED Strip Pixel
  • Input voltage: DC5V/DC12V/DC24V; Input current: 4A max, please don't use for project that draws more than 4A current.
  • 【Bluetooth Remote Control.】IOS and Android App remote control via Bluetooth ; IOS 10.0 or Android 4.4 or later edition required. 20m Long distance remote control; convenient to use. Your smart Phone should support Bluetooth 4.0 or later version.
  • 【Wide Compatibility】 Support almost all the LED driver ICs, such as WS2811,WS2812B, SK6812, SK6812-RGBW. But there is no WS2812B option on the setting page, please choose WS2811 when connect it to WS2812B LEDs.
  • 【Rich color modes】Come with 120 kinds of dynamaic color change modes, tons of static color, which are vivid and beautiful. Color hue, brightness and speed are adjustable. When you connect SK6812-RGBW LED Strip, the white channel can be adjusted individually.
  • 【User-friendly design】Support setting IC types, R/G/B sequence and pixels number, control up to 1024 pixels in total. Save user setting when power off. DC 5V~24V wide working voltage; reverse connection protection; hot swap protection.
digitalWrite(LED_PIN, LOW);   // relay on in the described setup
digitalWrite(LED_PIN, HIGH);  // relay off

Confirm the polarity for your particular interface rather than copying LED logic blindly. Normally open is the safer default because the load remains off when the controller is unpowered or fails.

Mains safety

  • Never work on exposed energized conductors.
  • Start with a simple plug-in lamp within the relay’s rating.
  • Keep breadboard electronics and mains conductors physically separated.
  • Do not place this prototype in a wall box or connect it directly to branch-circuit wiring.
  • Use proper enclosure, strain relief, grounding and local-code compliance for any permanent installation; use a licensed electrician for fixed household wiring.

Troubleshooting

Symptom Likely checks
Button changes randomly Check the pull-down, breadboard rows, common ground and software debounce.
Phone cannot find the device Verify power, uploaded sketch, RDY/RST/REQ wiring, Bluetooth permissions and that another phone is not connected.
Device appears but FF10 is missing Check the selected board/library, service definition, advertising UUID and BLE initialization.
Writing 01 does nothing Write to FF11—not FF12—using a byte/hex value; verify the event handler and output pin.
State is stale Enable notifications on FF12 or perform a fresh read.
Relay is backwards Determine whether the interface is active-high or active-low and invert the output if necessary.
LED works but lamp does not Check relay terminals, lamp/plug, rating and load compatibility. Disconnect power before rewiring.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Is this still the best approach in 2026?

Choose based on the outcome you need:

  • Learn BLE and Arduino: Reproduce the original Uno/nRF8001 project, accepting that the library and apps are legacy.
  • Start a new maker build: Use a current BLE-capable board such as a Feather nRF52, but plan for different APIs and firmware.
  • Control a plug-in lamp safely: Use an enclosed relay controller, not a bare relay on a breadboard.
  • Install a dependable wall switch: Buy certified hardware. Aqara’s Light Switch H2 US lists Thread/Zigbee/Bluetooth, with- or without-neutral options and a product-specific 120 VAC, 10 A resistive rating. Lutron Caséta offers a mature ecosystem but costs more; see its official U.S. price list.

BLE here is nearby, local control. It does not automatically provide internet access, remote-away-from-home operation, schedules, dimming, Matter compatibility or voice assistants. The custom writable characteristic also has no complete authentication, authorization, secure-update or anti-replay design. Do not treat the prototype as secure for a permanent household installation.

Frequently Asked Questions

Can this replace a household wall switch?

Not as presented. It is a low-voltage prototype controlling a plug-in lamp through an enclosed relay. A fixed in-wall installation requires certified equipment, suitable enclosure and code-compliant mains work by a qualified electrician.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does it need Wi-Fi?

No. The original design uses nearby BLE between the phone and Arduino, but range and multi-user behavior are limited.

Best Value
DC 5V-24V Mini Bluetooth RGB Controller 6A for 3528 5050 COB LED Strip Light Wireless Smart Phone Controller (Black)
  • Wireless smart LED controller using the latest Bluetooth-compatible 4.0 technology. Bluetooth-compatible mobile phone APP controller is widely used in hotels, bars, KTC, families, etc.
  • Suitable for Android system above 4.3 (including 4.3), Apple (IOS) 4S system above 6.0, etc.
  • Directly controls the on and off of the light, adjusts the color and brightness of the light and also adjusts various beautiful light effects, such as 1, colorful gradient change, various monochrome, bi-color gradient change, all kinds of monochrome, two-color, colorful strobe, colorful flash and so on.
  • colorful flash and so on. Animation Effect: *Colorful gradient *All kinds of monochrome,double color,colorful flashing *Colorful jump *Follow the rhythm of the music changes
  • Output power: 5V <30W, 12V <72W, 24V <144W ,Maximum load current < 6A(2A*3Channel)

Can it dim a lamp?

No. The documented design is on/off only. Dimming requires a compatible, rated dimmer circuit and different hardware and firmware.

Can two phones control it?

Possibly, depending on the BLE peripheral’s connection handling, but the tutorial does not define a robust multi-client or access-control system.

Should I use a smart bulb with this project?

The project is intended to switch an ordinary lamp. Cutting power to a smart bulb makes its wireless electronics unreachable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Bottom Line

Build the LED version first, then test BLE characteristics and notifications before connecting a plug-in lamp through an enclosed, normally open relay interface. In 2026, this remains a useful BLE learning exercise—not a substitute for a certified smart switch or compliant in-wall electrical installation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.