Table of Contents
A generic transmitter based on ESP32 \ Arduino boards using nRF24 transceiver module. This project aims to provide an extremely simple-to-use-and-build transmitter for remotelly controlling RC vehicles: be it a drone, an RC airplane or even an RC car. The components used in this project are the cheapest available. They are also _super easy to find anywhere. This project proves that you can build a somewhat decent remote controller with the cheapest available components.
This remote controller was mainly used to control drones and RC airplanes thus you'll hear the terms: Throttle
, Pitch
, Roll
and Yaw
a lot!
You don't need to be familiar with these terms. These are just 4 values that this remote controller sends for controlling a drone \ RC airplane.
This project was built using PlatformIO. In order to use this project, you only need to have a basic knowledge
of how PlatformIO works.
Otherwise, if you're using ArduinoIDE then all you need to do is to copy the arduino/transmitter.ino
into a local repository.
This project uses the following components:
- X1 ESP32s as a microcontroller
- X1 nrf24l01+ transceiver module as a radio-frequency transceiver module
- X2 1K Ohm Linear Potentiometer
- X2 KY-023 Joystick Module as 2-axis analog input
- X1 LCD display 16x2 WITH i2c Interface (or any other display)
- X1 2-Way Toggle Switch as an ON \ OFF switch
The folder schematics
contain ESP32 and Arduino circuit schematics.
All essential libraries are provided in the lib
folder. Thus, thus there is no need to look for any prerequisites, everything
this project needs (in terms of code) is included in this project.
If you're using ArduinoIDE then make sure to install the libraries existing in lib
folder.
- Clone the repo
git clone https://github.com/github_username/repo_name.git
- Open the source code file
src/transmitter.cpp
- Upload code to your microcontroller
The source code file src/transmitter.cpp
is well-explained and well-documented.
As the above picture shows, there are two joysticks thus a total of 4 controlling values can be sent.
- Left Joystick: Horizontal Axis is used for
Yaw
. Vertical Axis is used forThrottle
- Right Joystick: Horizontal Axis is used for
Roll
. Vertical Axis is used forPitch
- Top Left Potentiometer: Used for controlling the sensitivity of both joysticks. This is useful for cases where subtle change in values is needed.
- Top Right Potentiometer: Used for switching between different channels (default: 3 channels). This is useful for rapidly switching between controlling different RC vehicles.
- LCD Display: Displays information. See source code for more details.
Any contributions are more than welcome! 🤠
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.