Build a Two-Way LoRa System With RYLR993 Lite and Arduino

by lucascreator in Circuits > Arduino

356 Views, 3 Favorites, 0 Comments

Build a Two-Way LoRa System With RYLR993 Lite and Arduino

202_thumb_2.jpg
15.jpg

If you’ve ever wanted to send data wirelessly between two Arduino boards - whether it’s a sensor reading, a button press, or a full weather-station dataset - the RYLR993 Lite LoRa module is one of the simplest and most reliable ways to get started.

In this tutorial, you’ll learn exactly how this tiny module works, how to wire it, and how to build a practical two-board communication project from scratch using beginner-friendly Arduino code.

By the end, you’ll understand the fundamentals of long-range communication and have a working LoRa setup you can expand into real-world projects like remote monitoring, alarms, or IoT systems.

Supplies

19-1.jpg
19-2.jpg
19-3.jpg
19-4.jpg
19-5.jpg
19-6.jpg
19-7.jpg
19-8.jpg

2 × Arduino boards (Uno, Nano, or similar)

2 × RYLR993 Lite LoRa modules

2 × LEDs (any color)

2 × 220Ω resistors

6 × 5kΩ resistors (for voltage dividers)

2 × push buttons

Breadboards

Jumper wires

YouTube Tutorial

RYLR993 Lite LoRa Module with Arduino [COMPLETE GUIDE]

I've recently posted a tutorial about this project on YouTube explaining everything you can read on this article. You can watch it right above.

Introduction

4.jpg

LoRa is one of the most exciting wireless technologies available to makers today. With just a tiny module and an Arduino, you can send data across kilometers - without Wi-Fi, without a SIM card, and with barely any power consumption.

In this tutorial, you’ll learn how to use the RYLR993 Lite LoRa module with Arduino, how to configure it using AT commands, and how to build a practical two-way communication system where pressing a button on one board controls an LED on another (completely wirelessly).

Whether you're a beginner exploring LoRa for the first time or an Arduino user wanting to expand into long-range communication, this tutorial will guide you step-by-step through theory, wiring, configuration, and code.

What Is LoRa and Why Is It So Powerful?

6-7.png
6-8.png
6-9.png
6-10.png

Before building anything, let’s quickly understand what makes LoRa so unique.

LoRa stands for Long Range. It’s a communication technology developed by Semtech to solve a very specific problem:

  1. How can small, low-power devices communicate across very long distances?

Traditional wireless options fall short:

  1. Wi-Fi works only within a house or room and drains a lot of power.
  2. Cellular networks cover long distances but require SIM cards, subscriptions, and even more energy.
  3. Bluetooth works only across a few meters in most cases.

But imagine you need to:

  1. Monitor soil moisture in a farm 2 km away.
  2. Record river levels in a remote village.
  3. Track air quality in a forest with no connectivity.
  4. Build smart-city sensors across large areas.

That’s where LoRa shines.

LoRa is designed to send small packets of data - like temperature, humidity, sensor readings, or GPS coordinates - across distances that can reach 10 km or more, depending on your antenna and terrain.

All while consuming very little energy.

This is why LoRa is used everywhere:

  1. Precision agriculture.
  2. Environmental monitoring.
  3. Smart cities.
  4. Industrial automation.
  5. Home automation.

When people talk about LoRa, there are two main layers:

  1. LoRa Transceivers: individual modules, like the RYLR993 Lite, that transmit and receive data directly.
  2. LoRaWAN Gateways: bigger devices that receive LoRa data from dozens or hundreds of nodes and route it to the Internet.

But in this project, we’ll focus on the simplest and most beginner-friendly setup: two modules talking directly to each other (point-to-point communication).

Special Thanks to Reyax

image-18.png
image-19.png
image-20.png
image-21.png

Before we jump into the project, I want to give a huge thank you to Reyax for sponsoring this tutorial and providing the RYLR993 Lite modules I’m using here.

Reyax is a well-known manufacturer of IoT communication hardware - including LoRa modules, Wi-Fi and Bluetooth modules, GNSS receivers, cellular solutions, and more. Their products are widely used by makers, educators, and professionals because they’re:

  1. Reliable: they work consistently across different environments
  2. Easy to integrate: simple wiring, simple commands, and clear pinouts
  3. Well-documented: their datasheets and guides actually explain things
  4. Affordable: good performance without destroying your budget

And because Reyax has distributors worldwide, it’s usually pretty easy to get your hands on their modules no matter where you live.

If you want to explore more of what they offer, take a look at their product catalog on their website. They have a lot of interesting modules that are fun to build with.

And if you are interested in the module I'm using today, I can find it in the following online stores:

  1. Amazon
  2. Ebay
  3. Digikey
  4. Grupo Aut-comp (Brazilian distributor)

I highly recommend you check it out. Thank you again to Reyax for sponsoring this project and help making STEM education accessible to everyone.

Getting to Know the RYLR993 Lite Module

10.jpg
11.jpg
8.jpg

The RYLR993 Lite is a compact LoRa transceiver with five pins:

  1. VCC: power input (3.0–3.6V only)
  2. GND: ground
  3. TX: UART transmit
  4. RX: UART receive (max 3.6V!)
  5. RESET: hardware reset (optional)

A few important notes:

Power

The module runs ONLY on 3.0-3.6V. So don't connect it directly to 5V. It will damage the LoRa module.

The Arduino’s 3.3V pin is enough for simple demos, but because the module can draw up to 140 mA during transmission, larger projects should use a dedicated 3.3V regulator.

Logic Levels

The RX pin cannot accept 5V. So when connecting it to an Arduino board, you must use a voltage divider (three 5kΩ resistors work perfectly as we'll see later).

Reset Pin

The RESET pin can erase configurations, but we won’t use it in this project. Leave it unconnected.

With that out of the way, let’s move on to the fun part.

What We’re Building

16-1.png
16-2.png
16-3.png

In this hands-on project, we’ll use two LoRa modules and two Arduinos to demonstrate full two-way wireless communication.

Here’s what the system does:

  1. Press a button on Board 1 → LED toggles on Board 2
  2. Press a button on Board 2 → LED toggles on Board 1

Both boards:

  1. Send messages
  2. Receive messages
  3. Parse commands
  4. Update their LED state

It’s simple, visual, and an excellent introduction to LoRa.

Wiring the Hardware

22.png
18.jpg

Each board uses the same wiring.

1. Power

  1. RYLR993 VCC → Arduino 3.3V
  2. RYLR993 GND → Arduino GND

2. Communication

  1. Module TX → Arduino pin 5
  2. Module RX → Arduino pin 4 through a voltage divider (refer to the schematics above)

3. LED

  1. LED anode → 220Ω → Arduino pin 2
  2. LED cathode → GND

4. Button

  1. One leg → Arduino pin 3
  2. Other leg → GND
  3. Use Arduino’s internal pull-up resistor in software

Repeat this wiring for both boards, according to the schematics above.

Configuring the LoRa Modules With AT Commands

24.png
Master Arduino Serial Monitor - Lesson #8

Before the modules can communicate, we must configure them.

Open the sketch set_up_lora from the project GitHub repository.

Upload it to your Arduino and open the Serial Monitor at 115200 baud.

Send this command first:

AT

If the module responds with OK, everything is wired correctly.

If not, double-check the wiring (TX, RX, power supply, etc).

Then, send the following command:

AT+OPMODE=1

Mode 1 is Proprietary Mode, used for direct module-to-module communication. The default value is 0, and it's used for LoRaWAN networks.

Next, we need to define the frequency the module will operate. So, type:

AT+BAND=915000000

915 MHz is used in countries like USA and Brazil. If you're in other parts of the world, your regional frequency may differ. Please check your local LoRa frequency and update this value accordingly.

Next, type this last command:

AT+ADDRESS=1

The address is similar to an ID for the LoRa module. Each module in the same network must have a unique address.

After you send the following commands to the first board, disconnect it and connect the second one. The commands are the same, except for:

AT+ADDRESS=2

As I mentioned earlier, each device must have a unique address.

Reyax provides a detailed AT Command Manual on their website (inside the Download tab) worth reading if you want to configure advanced features or explore what your LoRa module is capable of.

If you don't know how to use the Serial Monitor the right way, I have a tutorial all about that. Don’t forget to check it out.

Writing the Arduino Code

28-1.png
28-2.png
Master Arduino Programming – Lesson #6

The GitHub repository includes three sketches:

  1. set_up_lora - initial configuration
  2. device_1 - main code for board 1
  3. device_2 - same as board 1 but with a different address

Open the sketch device_1.

Here’s a breakdown of what it does.

This is the main sketch that runs on our Arduino.

At the top of the code, we define some constants and variables - the button pin, LED pin, and some helper variables to keep track of button states.

#include <SoftwareSerial.h>

const int blueLed = 2;
const int button = 3;
const int rx_pin = 4; // LoRa RX -> Arduino TX
const int tx_pin = 5; // LoRa TX -> Arduino RX
SoftwareSerial ReyaxLoRa(tx_pin, rx_pin); // (TX, RX)

bool ledState = false;
bool lastButtonState = HIGH;

In the setup() function, we start serial communication with both the LoRa module and the Serial Monitor. Then we automatically send a few AT commands to make sure the module is properly configured when the Arduino powers up.

// Initialize LoRa module
ReyaxLoRa.println("AT");
delay(200);
ReyaxLoRa.println("AT+OPMODE=1");
delay(200);
ReyaxLoRa.println("AT+BAND=915000000");
delay(200);
ReyaxLoRa.println("AT+ADDRESS=1");
delay(200);

If you take closer attention, they are the same AT commands we sent in the previously sketch. You now be wondering:

  1. Why sending them by hand if we could have configured them through code since the beginning?

Well, I wanted you to write them down for two reasons:

  1. Firstly, to understand what AT commands are and how to use them manually.
  2. Second, to realize the need for automating this task as typing commands one by one isn’t practical for larger projects.

Moving on, in the loop() function, we have the main logic:

  1. First, we check if the button is pressed. If it is, we send a small text message through the LoRa module to the other board.
  2. Then, we check if our module has received any messages. If it has, we read it, verify where it came from, the sender, and if everything is right, then change the LED state - turning it on if it was off, or off if it was on.

If you’re having trouble understanding this sketch or wish to code with confidence, I have a tutorial all about Arduino programming. Don't forget to check it out.

Uploading and Testing

FFYOCBFMHMCL9AQ.jpg
FBJ0J91MHMCL9DW.jpg
FTPDMF2MHMCL9HB.jpg

Upload:

  1. device_1 to board 1
  2. device_2 to board 2

Power both boards.

Now press the button on one board - the LED on the other should toggle instantly.

Congratulations!

You’ve just built a two-way LoRa communication system.

Announcement

32.png

If you enjoyed this project, I’ve got something exciting coming soon.

I’m preparing a masterclass on how to build your own Arduino-powered drone from scratch!

This upcoming course won’t be for complete beginners as we’ll dive into:

  1. Flight control systems
  2. Wireless communication
  3. PCB design
  4. 3D printing and mechanical structure
  5. And much more.

By the end, you’ll have a working drone you can actually fly - and a solid understanding of how it works from the inside out.

If that sounds like something you’d love to build, join the waiting list to be notified when enrollment opens.

What’s Next?

209_thumb_9.jpg
208_thumb_8.jpg
201_thumb_1.jpg
211_thumb_11.jpg

LoRa opens the door to a whole world of long-range IoT experiments. With this foundation, you can now build:

  1. Weather stations
  2. Precision agriculture solutions
  3. River level monitoring
  4. Smart home automation across large distances
  5. Wild life monitoring systems

Thank you so much for reading this article. If you enjoyed it, you'll also like this another one where I talk about how to leverage AI to predict air quality from landscape photos.