A Year's Work in a Month!

by Nirubxn in Circuits > Remote Control

208 Views, 2 Favorites, 0 Comments

A Year's Work in a Month!

Thumbnail Rc Car.jpg
RC car testing video

RC cars can be a really good choice to have fun. As someone who is obsessed with RC cars, there was only one problem. Unlike real cars, RC cars mostly, do not have a fully functioning headlights, a full instrument cluster that shows the speed of the car, blinkers and much more that could easily be implemented to an RC car.


In my DIY RC car build, I put in all of my thoughts and ideas that I could imagine all within a single month. Do note that there might be some design flaws or errors as I am not a professional something, but if you feel like something is off, wrong, or just a suggestion, feel free to post/ask it in the comments section. I will be really glad to get through/help your ideas/questions.


With that, let's start off with this interesting journey.


*Note :

  1. Keep in mind that I am just a 15 year old student who has a considerable knowledge in electronics and engineering. If something is off or incorrect, please let me know in the comments section.


Features of the car

  1. LED DRL (Daytime Running Lamp)
  2. 12W LED headlamp setup with High / Low beam
  3. Automatic headlamps
  4. Front fog lamps
  5. 1.3 Inch Instrument cluster in the remote control
  6. Turn signal lamps
  7. Virtual clutch
  8. Rear wheel drive
  9. 3.45:1 Gear ratio
  10. 200 milli HorsePower engine (motor)

Supplies

20250112_162631.jpg
Screenshot 2025-01-14 at 06.00.29.png

There are a lot of parts that I have used in this build. You may also need plenty of tools for this build. The most used tool of mine was of course my 3D printer. An approximate of 1.5 Kg of filament was used for this build. I used PLA filament with 0.12mm layer height and 30% infill on my Creality Ender 3 V3 SE because I did not want my parts to break with the high torque produced by my motor.


I recommend you to fully read this before doing anything as I had done a lot of modifications and changes to my already 3D printed parts.


The list and bill of all the component items used are given in an image, prices converted to USD below.


For the other tools, I used my hot glue gun, my drill, a rotary tool. For the rotary tool, I used a circular saw on my drill and it worked perfectly fine to cut the aluminium metal.


I have given all of the 3D model files used below this "Supplies" section as well as under each step where the respective parts are used. Some files are given in STL which are non-editable files as there's nothing much to edit with it, wheras some are given in F3D file which can be edited with Fusion 360.


In total, the cost came to around 180$ for me. If you start from nothing, it would set you back to around 500$.

Planning

20241207_164518.jpg
20241208_153558.jpg
20241221_204611.jpg
20241221_204726.jpg

Basically, I want the car to be as simple to make while packing a ton of features. I went with a 1.5 mm aluminium sheet as the main chassis. You can be creative with the shape of it but I stuck with the rectangular shape of it. This aluminium sheet offers durability to the car. It measures about 42 cm x 25 cm. On it, the main motor will be in the rear side of the chassis directing its rotation to the axles and then to the wheels. This is a rear wheel drive car, enabling it to accelerate quickly, drift and so much more. I firstly thought about a 5 speed AMT gearbox whose lowest gear was 1024:1 which was ridiculous. I then stepped it down to a 3 speed AMT (image attached above) yet still it felt way too complex to do it in a very short span of time. Hence, I settled with a single speed gear system that balances between torque and speed. I had already spent a lot in making the 5 speed AMT gearbox and resulted in many failed models.


Nevertheless, the car would have RWD which stands for Rear Wheel Drive. This reduces the entire complexity of the build and also, offers better traction during a hard acceleration. The steering is done on the front wheels with an MG996R Servo motor. It uses the simple steering mechanism that is used in RC cars. There is a permanently locked differential on the wheels, which would put a bit of stress on the rear wheels when turning but this makes the car more drift-able. The car, also does not have any shock absorbers or suspension as this car is made to be used on smooth surfaces where a suspension/shock absorber is pointless, yet I recommend you to use them if you want your car to run on uneven terrain or something.


For the microcontroller, I used an Arduino Uno board for the car and an Arduino Nano board for the transmitter. I used NRF24L01+PA+LNA+SMA modules for both the transmitter as well as the receiver. Almost all of the pins of both the microcontrollers were used up. The pin configuration is attached below. The coding was a lot harder than I once thought. Too many attempts, failures, mess up, and much more. It was so much that I had to restart from scratch 4 times in total.


On the mechanical aspect, I tried my best to add bearings to all the places where there would be a movement including the places under the front wheel connectors which according to me, is an overkill, yet it does its job. In total, I had used nine bearings in total. Four for the steering part, two for the rear wheel part and three for the gears part. I also, made sure to use bolts rather than using hot glue as much as possible in order to have everything fixed firmly.


Motor and Drivetrain

20250112_091111.jpg
20250105_174745.jpg
20250105_184035.jpg
20250105_184216.jpg
20250105_185932.jpg
20250105_190112.jpg
20250105_190245.jpg
20250105_191128.jpg
20250105_191759.jpg
20250105_192534.jpg
20250105_192915.jpg

Motor:


The first and most important area of this build is the main motor. The one that I have chosen is a 775 motor. It has a really good power output and its easy to use. It has a no load RPM of 12,000, which is plenty for my design. This motor has a stall current of around 38A (Stall current is the current that the motor draws when it is powered on but is not spinning. This is the absolute maximum the motor draws.). So, in order to drive this motor, I have used the BTS7960 motor driver module with a continuous max current of 43A which is certainly enough for me.


Gears:

Coming to the transmission part, I used 2 x 1:2 spur gears that were designed by me, thanks to Autodesk's Fusion 360's Inbuilt gear maker tool. I used a layer height of 0.12mm with a 30% tri-hexagonal infill in order to maximise the layer adhesion and durability of the parts. After printing them, I added the 1/2 inch OD, 5 mm ID bearings to each of the gears both arranged in a sequential manner. The gear ratio of the motor to the wheels is approximately 3.45:1 reducing speed but increasing torque.


The gear ratio is the number of revolutions done by the engine to the number of revolutions done by the wheel. Basically, we compare the RPM of the Input side and the Output side. A higher Input side would mean slower output but more torque and vice versa.

In real life cars, gears are important because cars use Internal Combustion Engines. When starting from rest, if the engine is directly connected to the wheels (1:1 ratio) then the engine would just stop/turn off (stall) . This is because the engine faces a lot of inertia by the car's weight that stops it completely. In order to prevent this, we use gears. At a start from rest situation, we only need more torque and not speed. Hence, the output's RPM is lower than the engine's RPM. This ensures that the engine faces the least inertia. As we accelerate further, torque isn't required since the car's kinetic energy can keep it in motion. Hence, we increase the gear to for example the second gear where the engine's RPM is lower than when in the first gear to maintain the same speed.


Electric vehicles however, use obviously, electric motors in order to move the vehicle. Electric motors are very well capable in starting from rest situations that they do not necessarily need a transmission. This means that the car's acceleration would be noticeably smoother due to the absence of changing the gears. Plus, electric motors can achieve way higher RPMs than traditional Internal Combustion Engine cars. We can see this even in our build. My 775 motor can easily achieve a no load RPM of 20,000 which is way higher compared to engines that have max RPMs ranging from 6000 to 12000.


In my build, I have used a gear ratio of 3.45:1. This means, that my motor has to spin about three times in order to move the wheels once. The 3.45:1 allows us to reach a maximum speed of 30 km/h and can easily climb fairly steep slopes.


I have did so because I am using a 775 motor that has a maximum power of around 200 W. This power is very less to climb slopes while carrying a 5 kg mass. The 5 kg is an estimation of the car's maximum total mass.


For the reverse, I just had to simply reverse the polarity to the motor which can be easily done with the utilised BTS7960 motor driver. This is one of the main reasons why I haven't used brushless DC motors. They require dedicated ESCs, they are too fast to use, they cost a lot more for the same amount of specifications as a brushed DC motor and overall, the complexity is more. However, there are benefits such as reduced wear due to the absence of brushes, more efficiency and so on.


After these two gears, the rotation is then carried out to a larger gear with 38 teeth that is directly connected to the wheel's axle. The axle is held with the brackets (secured with M3 bolt and nut) and hold the 26 mm Outer diameter, 8 mm Inner diameter bearings between the bracket and the axle to smoothen the rotation. The utilised wheels are of 80 mm diameter, which is good for my car and offers a total ground clearance of around 60 mm and 22mm if we consider the minimum.


I have given two values because I had to bring the wheels down in order to have better ground clearance. This is important because otherwise, the front side of the chassis can easily rub against the road / surface on which it is travelling on, when the car, for example, is at a speed bump. Hence, I moved the wheels towards the bottom side of the chassis. Because of this, the wheel's gear, the mounting brackets protrude out. Hence, the two values which are 60 mm and 22 mm which are maximum and minimum ground clearance values are given.


For traction, I used 0.5 mm rubber sheets around the wheels. Also, I haven't used any suspension/shock absorbers in this build because they cost a lot in my region and they are complex to implement in this car. Plus, I have designed this car to work in smooth surfaces where a suspension is not effective. However, if you are planning to make a car that is supposed to work in uneven terrain / off road conditions, a suspension is necessary in order to prevent stress in the components in the car.


Making:

Nothing special. Like I said before, I firstly mounted wheel gear clamps at the bottom with M3 bolts and nuts, and slid the wheel axle along with its gear (38 tooth). I then hammered the wheels onto the axle. This enabled a very smooth rotation. I then continued and mounted the first gear (32 tooth) that connects to the wheel gear (38 tooth). Next, I mounted the second gear which was another 32 tooth gear along with its brackets. Thirdly, I mounted a 32 tooth gear coupled with a 16 tooth, giving a ratio of 1:2 for it. This gear's 16 tooth part connects to the second gear's 32 tooth part, giving us a 2:1 ratio now. Lastly, the motor with its 22 tooth gear is connected to the 32 tooth part of the 3rd gear. This gives us an approximate gear ratio of 3.45 : 1.


Once the motor was mounted with its bracket (I found on thingyverse), it received unnecessarily thick 4 square mm wires. These were soldered to the motor driver. I "Soldered" them because the screw terminals that came with the driver was only rated for 10 A maximum. Since, my motor has a change of drawing more current than that, I desoldered it and soldered the wires directly. Yet the same did not go for the input wires. I did so, in order to prevent the battery wires from being exposed. Though it seemed like a bad idea, it works for me. Still, I do not recommend doing like this. The motor driver's input was connected to the battery via 2.5 square mm wires.


Now, the driver has two MOSFETs . These are known for their better conductivity than traditional transistors. Still, they waste a fair amount of power during operation, which is why, the board was mounted on a heatsink. The only problem here was that I had no option of mounting the heatsink directly to my chassis. So, I unscrewed the heatsink from the board, got a small aluminium piece, used thermal paste between the board, the aluminium piece and the chassis, drilled holes for the M3 bolts and nuts, and secured them on the chassis firmly. Since the chassis is made of aluminium, which is a good conductor of heat, it can radiate the heat passively. It is worth noting that the terminals were covered with masking tape beforehand, in order to prevent them from shorting each other, this is also the reason why I mounted them through an additional aluminium piece : in order to offer clearance between the terminals and the chassis. I also soldered a 6 pin JST connector to the signal pins of the motor driver (more about it later). With this, the drivetrain was complete.

Transmitter & Reception of Signals

20250104_215651.jpg
20250104_215716.jpg
20250104_220552.jpg
20250111_164935.jpg
20250111_164959.jpg
20250107_220842.jpg
20250107_220955.jpg
Screenshot 2025-01-13 at 11.00.08.png
20250113_205421.jpg
20250113_205422.jpg
20250113_205812.jpg
20250113_210131.jpg
20250113_211159.jpg
20250113_214525.jpg
20250113_214531.jpg
20250113_215314.jpg

In order to transmit / receive the data from and to the transmitter and receiver, we need a bidirectional transmitter and receiver. I went with the NRF24 module. This module works with a frequency of 2.4Ghz. I went with the one the NRF24L01 which is the one that has an antenna built in. This aids in the transmission of the signals over a very far distance. There are a lot of values that need to be transmitted and received.


Here's what I had to send:

From the transmitter,

  1. Motor speed
  2. Steering angle
  3. Drive/reverse gear status
  4. Virtual clutch
  5. Headlamp mode - Auto/Parking/High or Low beam
  6. High/Low beam
  7. Front fog lamps on/off
  8. Turn signal


From the car,

  1. Battery level
  2. Temperature


I initially thought of showing the distance between the car and an oncoming obstacle which made the but this is enough for me.


I had used a long string that is sent out with all of the parameters needed. For example, 0 0 0. In this snippet, the first set is for the motor speed (0 to 255). The second set of zero is for the angle for steering (-30 to 30, hence 60). The third set is for Drive/Reverse (0, 1), and so on and on.


This string is sent continuously to the receiver, and the receiver will in turn, send the string of the 2 values.


By using this, we enable a bidirectional communication between the car and the transmitter. Now, its worth mentioning that my way of transceiving data is not the best option, yet for me it makes it easy and simple.


Like I mentioned before, the coding was so difficult for me that I had to restart from scratch. I got too much of frustration when the 3rd attempt failed, as I made the entire GUI of the transmitter for the display.


Making:

Well, I gathered all the components in order to make the transmitter circuit. In the transmitter, I planned to mount the NRF24 module directly on the board. It took a while, about 18 hours of continuous soldering to be exact in order to do this correctly. All the switches, pots, joystick, display would be connected via the headers on the PCB. My advice is to take your time, and do it slowly and correctly. I wish to attach a schematic, but it looks way complex than I can imagine. Hence, I have attached a word document that shows each and every pin of the Arduino Nano connected to the components. For the display, I went with the SH1106 1.3 inch OLED display with a resolution of 128x64. It was perfect for the instrument cluster GUI.


For the receiver, it took me 26 full hours of continuous soldering to achieve it. I know, you may be faster than me, but I prefer slow, steady and perfect job than a hurry and imperfect job. I might be wrong too, with my speed on soldering. Nevertheless, the receiver board has a 5 pin JST connector that connects to the NRF24 module. On the module, I carefully desoldered the 8 pin jumper header on it. I recommend you to use a soldering iron that is ESD safe or grounded. If not, heat it to the desired temperature and then unplug it from the wall (unplug, not turning it off). I did this to prevent static electricity on my iron to damage my NRF24 module as they are very sensitive to these.


Additional notes:

For the analog - connected multi pole switches, I used a voltage divider with different value resistors for each function to read different values through one analog pin. I used this technique for the switch used for the headlamps as well as for the turn signal switches. For the turn signal switches, VCC connected to A6 when left is pressed, GND connected to A6 when right is pressed and a 3.3K + 10K ohm resistor-divider connected to A6 when nothing is pressed. The same for the headlamps switch : with a 1K ohm, 2.2K ohm and 4.7K ohm + 10K ohm divider on the analog pin A3. Now, even though I showed a 21700 cell in the image, I later went with a 18650 cell as it occupied way less space than the other cells. I even planned on using a 26650 cell, but the size was big to fit in the enclosure

Steering

20250108_173646.jpg
20250105_094231.jpg
20250105_094147.jpg
20241221_204207.jpg
20250105_094515.jpg
20250105_100930.jpg
20250105_170832.jpg
20250105_211002.jpg
20250105_170845.jpg
20250105_174544.jpg
20250105_215115.jpg
Screenshot 2025-01-12 at 11.11.20.png
20250112_113023.jpg

Like the drivetrain, steering is really important in an RC car too. I went with a simple mechanism that utilizes an MG996R servo in order to steer the wheels. I firstly cut the shape necessary for the wheels with my rotary drill, after-which two 1/2 inch OD, 5 mm ID bearings are placed under the point of rotation of the steering of the wheels on each side in order to couple the steering mechanism's movement. Though this seems like an overkill, it does the job. On the front wheels, two 1/2 inch OD, 5 mm ID bearings are hammered into their designated slots, onto which the connector is inserted. The large connecting bar connects these two wheel connectors together and ensure proper left/right movement. Then the servo motor is secured with this bar. This setup enables freewheel in the front, making the car a rear wheel drive vehicle. I also added clamps to the wheel in order to hold the wheels to the chassis firmly.


Making:

I firstly hammered 1/2 inch OD, 5 mm ID bearings onto the wheels. I then hammered the connector from wheel to the chassis into the bearings positioned in the wheels. Next, I hammered the couplers to the same type of bearings. Then, I drilled holes on the connector and coupler in order to fix the coupler and connector together with M3 bolts and nuts. Once that was done, we can easily secure the clamps that hold the bearings that are between the connector and the chassis with M3 bolts and nuts, while doing this, I applied too much of force andd...... disaster! The left wheel's shaft broke. It was weird because I applied lesser force to this than on the right wheel, which led me to believe an error during the printing process. Now, this was problematic for me because my filament was almost over. With one wheel requiring 50 g of filament, it seemed to not be possible, yet after weighing it, there was 90 g of filament left (weight of the spool excluded), after starting it, I set the speed to 30% of the speed for the initial layers to prevent warping, but due to my printer's settings changing during it preparing, it went back to 100% of the speed, and like expected, the print warped. I even tried applying some PVA glue to stick it to the bed, which did not work. Almost 20 g of filament was wasted. With barely 70 g of filament left, I restarted it and supervised it for the initial layers, after-which I set the speed to 100%. After 5 hours, the print was done and looked perfect. After that, I cut out a hole and mounted the MG996R Servo motor to the chassis with M3 bolts and nuts. After this, I drilled on the attachment that connects both the wheels together right at the point where the servo's attachment intersects it. It was also mounted with M3 bolt and nut. After trying it out, a steering angle of -30° to 30° was the maximum, which was not that much, but was definitely enough for me. The last thing that caused problems was the bearings barely hanging on the bracket. So, I designed and printed a holder clamp and secured them with M3 bolts and nuts. With this, the steering part was done!

Microcontrollers & Coding

20250111_164935.jpg
20250111_164959.jpg

I have used two Arduino Nano microcontrollers as the main microcontroller in the car and another in the transmitter. It took me a full month of coding to achieve this result. I used Arduino Nano boards instead of Arduino Uno boards for the 2 extra Analog pins on them.


I initially thought of showing the real RPM and speed on the transmitter's display, but the IR sensors and the code were always buggy for me and never worked. So, I opted for a simpler approach. Virtual RPM and speed values. They are obtained by mapping the accelerator's value and assigning values based on my real world tests. Though it looks like its a misleading thing, it matched with the values fairly.


For the instrument cluster, I firstly allocated spaces for each of the functions like fuel level (battery level in the car), RPM, warning signs, speed, battery level in transmitter, Mode, ambient temperature.


The icons for the fog lamp and high beam were solely designed by me using the display.fillTriangle() feature along with drawing lines. These two icons took me 2 full hours to design, every time trying different approaches and reprogramming.

Lighting and Other Features

20250113_140931.jpg
20250111_165607.jpg
20250111_165936.jpg
20250111_170412.jpg
20250111_211738.jpg
20250111_220833.jpg
20250111_220845.jpg

Front Headlamps:

For the front headlamps, I chose 12W COB LEDs measuring 13.5mm x 13.5mm. These require approximately 40V to operate at a constant current of 300mA. These LEDs are incredibly bright, capable of shining through an RFID card to reveal its internals, even at 34V, which is about half their brightness. They begin to glow at around 30V. However, they generate significant heat, which must be quickly dissipated to prevent damage. Initially, I used the traditional method of mounting them with thermal paste on an aluminum piece, but this proved ineffective as the LEDs kept slipping off. To resolve this, I used custom brackets designed specifically for these LEDs, which I found on Thingiverse. After securing them with the brackets, the slipping issue was resolved. I mounted two LEDs on a 90mm aluminum piece, twisted at an approximate angle of 50°. Despite this setup, the aluminum pieces became hot within 10 minutes of operation at 35V, necessitating an active cooling solution. I opted for a 2-inch, 24V fan powered by a separate XL6009 boost converter module. For the LEDs, I used another XL6009 boost converter module set to 35V. Since each LED consumes around 6W at 50% brightness, it was safe to use the module without a dedicated constant current function, as the LEDs never reach their maximum current, providing additional headroom.


For the automatic headlamp feature, I used a simple LDR sensor with a 10k ohm resistor to create a voltage divider such that the Arduino board can detect the changes in the voltages. I positioned it on top of the front panel.


Turn Signal Lamps:

For the turn signal lamps, I used 5 mm yellow LEDs on the two rear corners of the car. The BC547 transistor drives these LEDs. I connected a 470 ohm resistor for the base. For timings, I went with a 400 ms (on) and 400 ms (off) time to replicate the flash lamps in cars. I used the millis() function to do this task without interrupting the code. Though it did not seem like it was 400 ms of on/off time, it still was acceptable. (GIF file attached above).


Fog Lamps:

For the fog lamps, I went with a 12 V LED strip which consists of three LEDs connected in parallel. I chose warm white colour as warm white penetrates through snow more than cool white. The LED strips were connected in parallel through two wires. They were also hooked up to a BC547 transistor with a 560 ohm Base resistor. Since they draw little to no current, a constant current source was not mandatory. After connecting them, I hot glued them to the front panel of the car using the additional pieces

Failures

20250112_222350.jpg
20250112_224841.jpg
20250113_145730.jpg
20250113_145800.jpg
20250113_170535.jpg

Its 10 in the night, I finally finished the motor driver's coding part, uploaded it and it did not work. I checked with the transmitter with the Serial.print() function, I did the same with the receiver side, both outputted the PWM values correctly. I then went onto my circuit design. Checked all the 6 connections. All were fine. Finally, I grabbed my multimeter and probed the EN pin and the PWM pin on the motor driver, the signals showed up there too. I also checked if the motor driver was receiving power, which it did. Apparently, the motor driver was blown up. Its a shame because I already tested this and it worked perfectly fine. It was just sitting on the shelf till it was taken in order to make this car. This really made me sad not just because these were not cheap. I mean, as a student, the price of it was too high for me. The thing that made me even sadder was the process that it took to detach, reapply the thermal paste, allign with the screw holes, desolder and resolder everything felt like a pain.


Nevertheless, I wanted to really make sure nothing was wrong with my side. So, I went ahead and took an unopened L298N motor driver module and connected the PWM and the EN pins, and sure enough, on pwm values around 50, a slight humming was heard, cranking it up more, the wheels started rotating! Yes!, after a full month, I saw the wheels turn by their own. This quickly inverted my mood. I tested the car with this driver on the floor. It was really fun to watch it move. I just can't express this joyous feeling. Its 11:49 in the night, and I am screaming of joy after facing a ton of failures.


Still, I had to purchase a new motor driver, possibly an alternative to this.


Its the next day, got my hands on a driver, this time, without removing the heatsink, I tried it and it still did not work. In disappointment, I returned back to the L298N motor driver, which was working well with my motor but I feared it overheating due to higher current demands. Maybe I don't know how to use the driver? If my method of using was wrong, please let me know through the comments tab or through messages.

Time Constrains

Screenshot 2025-01-13 at 23.28.40.png

As a student enrolled in high school, I had homework, assignments, assessments, notes and other personal stuff to deal with, hence I get little to no time to do this. In spite of this, I have managed to reach this far. Each day, I get to bed at 12 AM and wake up at 5 AM, though these were stressful for me, the end result of the spin of the wheels of the car literally erased these issues from me. The satisfaction was too much. Now, I am left with a bare bone car with a fully completed remote control. I must design the top cover for the car and attach it on top of it.


The remote control was also not perfect, with the clutch function not working properly,(update : now, after soldering back the loose wire, the virtual clutch works) the right turn signal always turned on, the fuel level is fluctuating randomly and overall, some components were not mounted properly. I am sure within the end of January, I would be able to completely finish this car. Its Jan 13th, 11:08 PM when I am writing this, knowing that my hardwork has paid off. I mean, its kind of hard to convey this feeling through a write up, but I am really happy that everything so far works.


Basically, I planned a lot more to do on this car but due to time constrains, I had stopped at this point. I will continue upgrading this car, so stay tuned.

Verdict

20250113_231939.jpg

So, even though I was not able to fully complete the car, I got a lot more experience from this journey. I have to thank these people :

  1. TRDB (On Instructables), who helped and guided me through making this car a success.
  2. Haritham_Kob (On Thingiverse), who provided me the 775 motor's mounting bracket and allowed me to use without any copyright issues.
  3. Leogala (On Thingyverse), who provided me the led mounting bracket in order to fix the 12 W LEDs in position.
  4. Rasmus Additive (On Printables), who provided me with the potentiometer knob for the accelerator.

In the end, I went to bed with a sad, happy, exciting and a more experienced version of myself. I hope my Instructable has inspired you to make something similar.


Thanks for reading it till the end. Consider commenting your thoughts, suggestions. This is Nirubxn, signing off.