Wireless Appliance Control From Mobile Using Arduino and LoRa
by Rachana Jain in Circuits > Arduino
897 Views, 5 Favorites, 0 Comments
Wireless Appliance Control From Mobile Using Arduino and LoRa
Want to control a light or home appliance located hundreds of meters or even kilometers away using only your smartphone. No Wi-Fi routers, no internet connection, and no complicated networking.
That’s exactly what LoRa communication makes possible.
In this project we build a long-range wireless appliance control system using two Arduino Nano boards and the RYLR999 LoRa + BLE module. A smartphone sends commands via Bluetooth, which are then transmitted over LoRa to control electrical loads such as a lamp or fan remotely.
The best part is that LoRa allows reliable communication over kilometers while consuming very little power.
Let’s build it.
Supplies
Hardware
- Arduino Nano (2x)
- RYLR999 LoRa + BLE module (2x)
- 3.3V–5V bidirectional voltage level shifter
- 16×2 I2C LCD display
- 2-channel relay module
- 12V DC fan
- 240V AC bulb
- Jumper wires
- 12V power supply
Software
- Arduino IDE
- LiquidCrystal_I2C library
- LightBlue BLE mobile application
How the System Works
This project is divided into two main sections.
Controller Unit (User Side)
The controller unit acts as the interface between the smartphone and the LoRa network.
A smartphone connects to the RYLR999 module using Bluetooth Low Energy (BLE). When a command is sent from the mobile app, the Arduino reads the command and forwards it to the LoRa transmitter.
The LoRa module then sends the command wirelessly over long distances.
Target Unit (Appliance Side)
The target unit receives the LoRa transmission.
Another RYLR999 module connected to a second Arduino Nano receives the command and passes it to the microcontroller. The Arduino then interprets the instruction and activates a relay module to control electrical appliances.
In this example, the system controls:
- A 240V AC bulb
- A 12V DC fan
After executing the command, the target sends a confirmation message back to the controller, which is displayed on the LCD.
Why a Relay Is Required
Arduino boards operate at low voltage (5V) and can supply only a small amount of current through their digital pins.
However, most electrical appliances operate at much higher voltages and currents, such as 220V AC or 12V DC motors.
Directly connecting such loads to a microcontroller would damage the board and could be dangerous.
A relay module solves this problem by acting as an electrically controlled switch. The Arduino sends a small control signal to the relay, and the relay safely switches the higher-voltage load.
This allows a microcontroller to control real-world appliances while keeping the control electronics isolated from high-power circuits.
Controller Wiring
The controller unit contains:
- Arduino Nano
- RYLR999 LoRa + BLE module
- Voltage level shifter
- I2C LCD
The RYLR999 communicates with Arduino using UART serial communication. Since the LoRa module operates at 3.3V logic while Arduino works at 5V, a bidirectional level shifter is required between them.
Power is supplied from the Arduino’s 5V rail to the module.
The LoRa transmit and receive pins connect to the Arduino serial interface through the voltage shifter, allowing commands to be transmitted over long-range radio.
For Bluetooth communication, an additional serial interface is created in the Arduino code using SoftwareSerial, allowing BLE commands from the smartphone to be received independently.
The LCD is connected through the I2C interface, using Arduino pins A4 and A5 for SDA and SCL.
During operation the LCD displays:
- Module initialization
- Received commands
- Transmission status
- Confirmation messages from the target unit
This feedback makes debugging and system monitoring much easier.
Target Wiring
The target unit contains:
- Arduino Nano
- RYLR999 LoRa module
- Voltage level shifter
- Relay module
- LCD display
The wiring between the Arduino and the LoRa module is similar to the controller setup, except the BLE interface is not used here.
Instead, the module continuously listens for incoming LoRa messages.
When a message is received, the Arduino parses the command and triggers the relay outputs.
Two relay channels are used in this example:
- Relay channel 1 (Pin D11) – Controls the AC bulb
- Relay channel 2 (Pin D12) – Controls the DC fan
When a relay is activated, its internal contacts close and complete the electrical circuit powering the appliance.
This setup allows the Arduino to safely control both AC and DC loads.
⚠️ Safety note:
Always disconnect the AC mains supply while wiring the relay circuit.
Command Format Used in the System
The smartphone sends simple commands to the controller through the BLE app.
Example commands:
The controller extracts the payload and forwards it through LoRa.
The receiver interprets the commands and activates the corresponding relay.
After executing the command, the receiver sends a confirmation message back.
Example response:
Testing the System
To test the project:
- Power both Arduino boards.
- Open the LightBlue BLE app on your smartphone.
- Connect to the RYLR999 module.
- Send the command strings manually.
- Observe the LCD displays on both units.
You should see:
- Command received on controller
- Command transmitted over LoRa
- Command received on target
- Appliance activated
- Confirmation response displayed
With proper antenna placement, LoRa communication can easily reach several kilometers depending on the environment.
Arduino Code for Controller
Arduino Code for Target
Full Code and Detailed Explanation
The complete Arduino source code, command structure explanation, and troubleshooting guide are available in the full tutorial:
👉 Full detailed tutorial:
https://playwithcircuit.com/long-range-appliance-control-from-smartphone-using-arduino/