RC Transmitter and Receiver for Models from scratch
While there are ready-made options available for remote-controlled models, I chose to create my own from scratch because I enjoy understanding how things work and exploring different possibilities. The goal is to have a design that can be easily changed by adding or removing features, depending on how complex your model is.
Keep in mind that the current system is in the proof of concept phase, so the final design will look quite different. You can find the project source files on GitHub here.
The project consists of two boards: a transmitter and a receiver. In the current design, both boards are printed on the same PCB, so you’ll need to cut them apart (Figure 1). Both boards use the ATTiny824 microcontroller, which can be swapped for a more advanced one if your project requires it.
Figure 1: Transmitter and Receiver PCB design.
To send data between the transmitter and receiver, I use a serial interface (USART). I’ve integrated FS1000A and XY-MK-5V 433MHz radio modules into the boards to establish the connection. In the future, I plan to experiment with different radio modules to enhance the system’s capabilities.
Figure 2: FS1000A and XY-MK-5V 433MHz radio modules.
Transmitter
The transmitter board has an L-shaped design, which makes it easy to hold without accidentally touching other parts.
Figure 3: Transmitter module.
On this board, you’ll find two potentiometers that help adjust the PWM signals on the receiver board. Additionally, there are four switches that can be used to turn on or off extra signals.
Since there’s just one channel, the transmitter sends 5 bytes of information:
- The first byte is always set to 0xFF.
- The second byte represents the throttle value. It’s the analog value read and converted from the RV1 resistor.
- The third byte indicates the steering value, which comes from the RV2 resistor.
- The fourth byte shows the status of the switches. Only four bits are used for this purpose.
- The fifth byte is an 8-bit CRC value calculated from the previous three values to ensure data accuracy.
Receiver
The Receiver board has two PWM outputs and four digital outputs. You can adjust the pulse width using the potentiometers on the transmitter board and the digital outputs using the switches.
Figure 4: Receiver module.
Each output has a jumper to connect to a MOSFET transistor, which helps the connected device draw power from the source. However, for steering, this isn’t needed because the servo motor gets its power separately.
The PWM signals have a set frequency of 50Hz. The PWM0 signal controls the throttle, and it can vary the pulse width from 0% to 100%, giving you control over speed or power. The PWM1 signal is great for steering, and it’s tuned to work with a servo motor, allowing you to steer your model.
Here’s how the logic on the receiver board works:
- The microcontroller first waits for the 0xFF byte which indicates the start of a data package.
- Then, it reads four more bytes: one for throttle, one for steering, one for controlling the outputs, and one for the CRC value, which helps verify that the data is correct.
- It then calculates an 8-bit CRC value using the data it just read (throttle, steering, and outputs).
- If the calculated CRC value matches the one it received, the microcontroller updates the values. If they don’t match, it ignores the data. This helps ensure that only the correct and accurate data gets used.
Car Model
To test these boards, I created a basic RC car frame using FreeCAD and then 3D printed it. This frame is quite simple, with just the essential features: a steering system, places to hold the battery, DC motor, and servo motor.
Figure 5: RC Car Frame Model.
In my workshop, I had some spare portable phone chargers, so I used them to power both the transmitter and receiver boards.
Since I’m new to 3D printing, I made a few design mistakes and learned some lessons. I’ll keep these in mind for future designs. For example, I found that the PLA material is flexible but not the strongest, the 3D printed pins with a 2mm diameter can break easily. Lastly, it can be tricky to add extra features to a small model. So, in future projects, I’ll aim to design larger models to overcome these challenges.
Figure 6: Final Assembly and testing.
Future Improvements
Here’s a list of improvements I’m planning for future iterations:
- In my tests, the FS1000A and XY-MK-5V radio modules were unstable and had a limited range of just a few feet. In the next round, I’m considering experimenting with different radio modules, possibly even some that can send and receive signals.
- I’m thinking of adding support for additional push buttons, switches, servo andDC motors. This might require using a different chip model.
- The output pins on the receiver board currently follow a non-standard arrangement. I plan to redesign and rearrange them to make them more like the ones commonly found in the market.
- It might be a good idea to design cases for both the transmitter and receiver to keep the components safe and organized.
- I’m considering a redesign of the power connectors and possibly adding some power protection features to ensure a more stable and secure power supply.