DIY Long-Range LoRa RC Tank Using Arduino
by Shahbaz Hashmi Ansari in Circuits > Arduino
140 Views, 0 Favorites, 0 Comments
DIY Long-Range LoRa RC Tank Using Arduino
In my previous project, I built a custom long-range LoRa controller from scratch using the Reyax RYLR998 module. While the controller worked well, many viewers noticed one important issue during testing. The receiver occasionally responded with noticeable latency, making the RC tank feel less responsive than expected.
Rather than leaving it as it was, I decided to investigate the problem, redesign the receiver, and optimize both the hardware and firmware to improve the overall driving experience.
In this guide, I'll show you how I built a dedicated LoRa receiver and integrated it into a tracked Arduino RC tank. Along the way, you'll learn how to assemble the chassis, mount the electronics, wire the LoRa module safely using a voltage divider, upload the firmware, and test the completed system.
If you haven't built the transmitter yet, I highly recommend starting with my previous guide first, since this receiver is designed to work with that controller.
Previous Project:
Custom Long-Range LoRa Controller From Scratch: https://www.instructables.com/Custom-Long-Range-LoRa-Controller-From-Scratch/
By the end of this tutorial, you'll have a fully functional long-range LoRa-controlled RC tank that is smoother, more responsive, and ready to be used as a platform for your own robotics projects.
Supplies
To build this LoRa RC tank, you'll need the following components:
Mechanical Components
- Acrylic tank chassis panels (body frame)
- Screws, standoffs, spacers, and mounting hardware
- 2× BO DC geared motors
- 4× Tank track hub adapters
- 2× Continuous rubber tank track loops
Find them at: https://jlcmc.com/?from=RL2
Electronics
- Arduino Uno
- L298D Motor Driver Shield
- Reyax RYLR998 LoRa Module
- 1× 2-cell (2×18650) battery holder
- 2× 18650 Li-ion batteries
- Small perfboard (for the voltage divider circuit)
- Assorted jumper wires
- 20 KΩ & 10 KΩ Register
Tools
- Phillips screwdriver
- Soldering iron and solder
- Wire stripper/cutter
- Hot glue gun (optional)
Assemble the Tank Chassis
In this step, we'll assemble the complete mechanical structure of the RC tank.
- Mount the two BO geared motors onto the lower acrylic chassis using the provided screws and motor brackets.
- Ensure all motors are facing the correct direction and are firmly secured.
- Install the metal spacers (standoffs) onto the lower acrylic panel using the appropriate screws.
- Attach the drive pulleys (motor hubs) to the shafts of all two motors and tighten them securely.
- Install the idler gears (free-rotating wheels) on the opposite side of the chassis.
- Verify that all pulleys and idler gears rotate freely without touching the acrylic frame.
- Carefully stretch the tank tracks over the drive pulleys and idler gears on both sides of the chassis.
- Rotate the tracks by hand to ensure smooth movement and proper alignment.
Your tank chassis is now assembled and ready for installing the electronics in the next step.
Elevate Your Electronic Projects - JLCMC
JLCMC is your one-stop shop for all electronic manufacturing needs, offering an extensive catalog of nearly 600,000 SKUs that cover hardware, mechanical, electronic, and automation components. Their commitment to guaranteeing genuine products, rapid shipping (with most in-stock items dispatched within 24 hours), and competitive pricing truly sets them apart. In addition, their exceptional customer service ensures you always get exactly what you need to bring your projects to life.
For my next project, I'm planning to buy a timing belt from their Transmission Components section. What I really like is how easy it is to customize the part. On the left side, you can select all the required options, and just below that, you get the complete specification and documentation, so you know exactly what you're ordering.
If you're building this project, you can also find many of the required components such as screws, nuts, standoffs, bearings, shafts, timing belts, pulleys, and other mechanical hardware on JLCMC. Explore their complete catalog here: https://jlcmc.com/?from=RL2
JLCMC has recently upgraded their new-user registration benefits, increasing the value of the welcome coupon package to $123 in discount coupons. Whether you're building DIY electronics, robotics, or mechanical projects, JLCMC has you covered with quality parts and fast delivery. Don't miss out. Visit https://jlcmc.com/?from=RL2 to explore their extensive product range and claim your new-user discount coupons today.
Install the Upper Chassis
In this step, we'll mount the Arduino Uno, motor driver shield, and complete the upper chassis assembly.
- Attach the mounting spacers to the upper acrylic panel at the Arduino mounting holes.
- Place the Arduino Uno onto the spacers and secure it using the appropriate screws.
- Carefully align the L298D Motor Driver Shield with the Arduino Uno headers.
- Gently press the motor driver shield onto the Arduino Uno until all the header pins are fully seated.
- Double-check that the shield is properly aligned and firmly connected to the Arduino.
- Position the assembled upper chassis above the lower chassis.
- Align the upper acrylic panel with the standoffs installed in the previous step.
- Secure the upper chassis to the standoffs using the provided screws.
- Make sure all screws are tightened evenly without overtightening the acrylic panels.
The upper chassis is now assembled and ready for the wiring and circuit connections in the next step.
Circuit Connection
Now it's time to connect all the electronics inside the tank.
- Connect the two BO geared motors to the output terminals of the L298D Motor Driver Shield.
- Route the motor wires neatly to avoid interference with the rotating tracks.
- Assemble the voltage divider circuit on a small perfboard using the required resistors.
- Solder all the connections securely and verify the output voltage before connecting the LoRa module.
- Connect the Reyax RYLR998 LoRa module to the Arduino Uno according to the circuit diagram.
- Connect the RX pin of the LoRa module through the voltage divider circuit to safely interface with the Arduino's 5 V logic.
- Secure the LoRa module and the voltage divider PCB to the chassis using screws, double-sided tape, or hot glue to prevent movement while driving.
- Install the 2×18650 battery holder in its designated mounting position on the chassis.
- Connect the battery holder to the power input of the motor driver shield, ensuring the polarity is correct.
- Double-check all wiring connections before powering on the system. Verify that there are no loose wires or short circuits.
The receiver hardware is now fully assembled and ready for uploading the firmware in the next step.
Upload the Firmware
What's New in This Firmware?
The original version of the project used SoftwareSerial to communicate with the Reyax LoRa module. During testing, I observed noticeable latency and occasional delays in the receiver's response.
To improve the responsiveness, I updated both the hardware configuration and the firmware. The communication between the Arduino and the LoRa module was optimized, and several changes were made to reduce unnecessary processing delays and improve packet handling.
As a result, the RC tank responds much faster to joystick inputs, making the driving experience significantly smoother and more responsive compared to the previous version.
If you're upgrading from my original LoRa controller project, I highly recommend uploading both the updated transmitter firmware and the new receiver firmware to achieve the best performance.
In this step, you'll upload the receiver firmware to the Arduino Uno and update the transmitter firmware with the latest optimized version.
Receiver Code
Paste the following receiver code into a new Arduino IDE sketch.
Updated Transmitter Code
Replace the existing transmitter sketch with the updated version below.
Upload Instructions
- Download and install the latest version of the Arduino IDE if you haven't already.
- Connect the Arduino Uno (Receiver) to your computer using a USB cable.
- Open the receiver code in the Arduino IDE.
- Go to Tools → Board and select Arduino Uno.
- Go to Tools → Port and select the COM port corresponding to your Arduino Uno.
- Click the Verify button to compile the sketch and ensure there are no errors.
- Click the Upload button and wait for the upload to complete.
- Disconnect the Arduino Uno from your computer once the upload is finished.
- Now connect the Arduino Nano (Transmitter) to your computer.
- Open the updated transmitter firmware in the Arduino IDE.
- Go to Tools → Board and select Arduino Nano.
- Select the correct COM port for the Arduino Nano.
- Click Verify to compile the sketch.
- Click Upload and wait until the upload completes successfully.
- Disconnect the transmitter from your computer and power both the transmitter and receiver.
- Verify that both LoRa modules establish communication and that the RC tank responds correctly to the joystick inputs.
The firmware installation is now complete, and your DIY LoRa RC tank is ready for testing.
Working Video & Tutorial
Congratulations! Your DIY LoRa RC Tank is now complete and ready for action.
To see the complete build process, firmware setup, and real-world testing, watch the full video tutorial below. The video covers every step of the project, including the mechanical assembly, electronics installation, circuit wiring, firmware upload, and the improvements made to reduce the latency issue.
Video Tutorial:
If you found this project helpful, consider subscribing to my YouTube channel for more DIY robotics, Arduino, ESP32, AI, and embedded systems projects.
If you build your own version of this LoRa RC Tank, I'd love to see it. Feel free to share photos of your build or ask any questions in the comments below. Happy building!