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.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesSmartphone 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
- 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.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteUse 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
- 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:
RDYto Arduino pin 2RSTto Arduino pin 9REQto 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:
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
- 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.
- Enable Bluetooth and grant the app its required nearby-device permission.
- Scan for
Smart Light Switchand connect. - Discover service
FF10. - Find writable characteristic
FF11and write a one-byte hexadecimal value01. - Confirm that the LED turns on. Write
00to turn it off. - Subscribe to notifications on
FF12. - 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.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →The described setup is active-low. The relay may turn on when the Arduino output is LOW:
Rank #4
- 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. |
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.
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
- 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.
Recommended Free Tools
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.
Quick Recap
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