Skip to the content
2 layers66.5 × 39 mmReceiver PCB, the printed circuit board in 3D

KiCad schematics and PCB layouts for a wireless RC car — ATtiny85 remote (TX) and ATmega328P motor-control receiver (RX), linked over NRF24L01+.

Size
66.5 × 39 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
41
Pads
108
Tracks, vias
287, 4
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
8 Sep 2026
Updated
8 Sep 2026

Overview

Receiver PCB is an open-source printed circuit board by devansh2004sharma-tech, from the devansh2004sharma-tech/nrf24-rc-car-controller repository on GitHub. It is a 2-layer board of 66.5 × 39 mm with 21 parts on 41 nets, routed with 287 tracks and 4 vias.

It is built around the ATMEGA328P-PU, DRV8833PW and AMS1117-3.3, with the TP4056-42-ESOP8 among its other parts. Its parts include 10 capacitors, 5 ICs, 3 connectors, 2 resistors and 1 crystal. It belongs with the robots and motor control boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

nrf24-rc-car-controller

A two-board wireless RC car electronics design, built as a solo project: a compact ATtiny85-based handheld remote transmitting over an NRF24L01+ 2.4GHz radio link, and an ATmega328P-based receiver board that decodes commands and drives two DC motors through a DRV8833 dual H-bridge. Designed end-to-end in KiCad — schematics, PCB layout, and manufacturing (gerber) files for both boards.

Table of contents

Overview

The goal of this project was to design the complete electronics for a simple, battery-operated RC toy car: a handheld remote that a user holds and presses buttons on, and a receiver board mounted inside the car that reads those commands wirelessly and moves the car accordingly.

The car supports four commands — forward, reverse, left, right — sent over a 2.4GHz wireless link and translated into motor driver signals on the receiving end.

text
Transmitter → Wireless communication → Receiver → Motor driver → Motors

System architecture

At the top level, the remote (TX) is a battery-powered handheld device with four buttons. Pressing a button causes the TX's microcontroller to send a corresponding command byte over SPI to its NRF24L01+ radio module, which transmits it over 2.4GHz.

The car's receiver (RX) board listens continuously with its own NRF24L01+ module. When a command arrives, its microcontroller decodes which button was pressed and sets the appropriate control lines on the DRV8833 motor driver, which in turn drives the two onboard DC motors — one motor handles forward/reverse, the other handles left/right steering.

Both boards use the same RF module and the same SPI pin mapping convention, which kept firmware and sourcing simpler — one driver, one part number, two boards.

Transmitter (TX) board

Purpose: a small, battery-powered handheld remote with four buttons.

FunctionComponent
MicrocontrollerATtiny85-20PU
WirelessNRF24L01+ breakout module (SPI)
Input4x 6x6mm tactile switches
Power2x AAA batteries (3V), no regulator needed since both the ATtiny85 and the NRF24L01+ run happily at 3V
Decoupling100nF ceramic caps at the MCU and RF module's supply pins, plus a 10µF bulk cap at the RF module (its transmit bursts draw noticeably more current than idle)

The pin-count constraint. The ATtiny85 has only 5 usable GPIOs (PB0–PB4). Between 4 buttons and a 5-signal SPI bus (MOSI, MISO, SCK, CSN, CE) to the NRF24L01+, that's 9 signals competing for 5 pins. Two things were done to make it fit:

  1. CE tied permanently to VCC. Since the remote doesn't need to dynamically enable/disable the radio, CE is hardwired high, freeing up one pin.
  2. All 4 buttons read through a single ADC pin. Instead of one GPIO per button, the buttons are wired into a resistor voltage-divider network: a pull-up resistor from VCC to a shared node (also tied to the ADC pin), and each button connects that node to GND through its own distinctly-valued resistor (or directly to GND, for one of the four). Each button press produces a different, distinguishable voltage on the ADC pin, which the firmware reads and maps back to a specific button.

This kept the whole design on a single small, cheap 8-pin MCU rather than moving to a larger chip just for pin count.

Receiver (RX) board

Purpose: the board that lives inside the car, decodes commands, and drives the motors.

FunctionComponent
MicrocontrollerATmega328P-P (DIP-28)
WirelessNRF24L01+ breakout module (SPI)
Motor driverDRV8833 dual H-bridge (TSSOP-16)
Battery chargingTP4056 Li-ion charge/protection module
Voltage regulationAMS1117-3.3 linear regulator
Battery1S Li-ion 18650 cell
Motors2x DC gear motor (one drive, one steering)

Two separate power rails. The receiver needs more current and a different voltage than the transmitter, so the board runs two rails off the same battery:

  • VBAT — the raw Li-ion voltage (~3.7–4.2V), feeding the DRV8833's motor supply pin directly, since motors want the higher voltage and the extra current headroom.
  • 3V3 — a regulated, clean rail from the AMS1117, feeding the ATmega328P and NRF24L01+, which are more sensitive to supply noise than a brushed DC motor.

Motor control signals. The ATmega328P drives the DRV8833's four logic inputs (AIN1, AIN2, BIN1, BIN2) directly from four GPIO pins, letting firmware set each motor's direction and (with PWM-capable pins) speed. AISEN and BISEN (the DRV8833's current-sense pins) are tied to GND, disabling active current limiting — an acceptable simplification for small hobby motors, though a production design would typically use these for over-current protection.

A firmware-availability tradeoff worth noting. Early in wiring, the motor control lines were placed on PD0/PD1 (the ATmega328P's hardware UART pins). Since those pins are also needed to reprogram or serial-debug the chip later, they were moved to PC1–PC4 instead, keeping UART free for firmware development and debugging.

Bill of materials

TX — handheld remote

ComponentPart / valueApprox. price (₹)
MCUATtiny85-20PU60–80
RF transmitterNRF24L01+ module90–120
Tactile switches (x4)6x6mm THT tact switch12
Battery + holder2x AAA (3V)40–60
Decoupling capacitors100nF x2, 10µF x110
Pull-up resistor10k (button-ladder ADC pin)4
Ladder resistors2k2, 4k7, 1k8
PCB fabrication2-layer, ~40x60mm, 5pcs~150

RX — car board

ComponentPart / valueApprox. price (₹)
MCUATmega328P-P (DIP-28)150–200
RF receiverNRF24L01+ module90–120
Motor driverDRV8833 (TSSOP-16)80–100
Battery chargerTP4056 Li-ion charge/protect80–120
Voltage regulatorAMS1117-3.315
Crystal16MHz + 2x 22pF load caps15
Battery1S Li-ion 1865080–100
Motors2x TT gear motor (drive + steering)120–200
Decoupling capacitors100nF x4, 10µF x2, 100µF x130
Reset pull-up10k2
Charge-current resistor1.2k (TP4056 PROG pin)2
PCB fabrication2-layer, ~80x60mm, 5pcs~150

Approximate total per unit (TX + RX, excluding one-time PCB fab batch cost): ₹1,000–₹1,300 in components.

Design decisions and reasoning

Why NRF24L01+ over a simpler 433MHz ASK/OOK pair? The NRF24L01+ gives a digital SPI interface with built-in auto-acknowledgement, which is significantly more reliable in noisy environments than basic OOK modulation. Using the identical module on both ends also meant writing one SPI driver and reusing it on both boards, rather than maintaining two different RF stacks.

Why ATtiny85 on TX but ATmega328P on RX? The transmitter's job is simple — read buttons, push bytes over SPI — so a small, cheap, low-power 8-pin MCU is sufficient. The receiver has to decode incoming packets, drive four motor-control lines, and manage two power rails and a battery charger, which needs more I/O and headroom than the ATtiny85 offers.

Why DRV8833 for motor driving? A single small IC contains two independent H-bridges, so one part drives both the forward/reverse motor and the steering motor, rather than needing two separate driver chips. It also includes internal current limiting and thermal shutdown, covering basic motor protection without extra components.

Why TP4056 + AMS1117 instead of designing charging from scratch? The TP4056 is a purpose-built, inexpensive Li-ion charge/protection IC — reinventing that circuit from discrete parts adds risk (over-charge, over-discharge protection is safety-critical) for no real benefit at this scale. The AMS1117 then steps the raw battery voltage down to a clean 3.3V for the digital logic, kept on a separate rail from the higher-voltage, higher-noise motor supply.

Why 2xAAA on TX but rechargeable Li-ion on RX? The remote is handled constantly and benefits from simple, swappable batteries. The car's board benefits more from rechargeability and a compact single-cell form factor that fits inside a small chassis.

PCB layout considerations

  • RF and motor sections kept apart. On the RX board, the NRF24L01+ module and the DRV8833 + motor connectors are placed in diagonally opposite corners of the board, to reduce the chance of motor-switching noise coupling into the radio's signal path.
  • Wider traces for motor current. Power traces feeding the motors and the DRV8833's VM pin are routed noticeably wider than the thin signal traces used for SPI and control lines.
  • Ground pour. Both boards use a solid copper ground pour on the bottom layer rather than individually routed ground wires, which lowers ground impedance and simplifies routing around dense areas.
  • Decoupling placed close to each IC's supply pin, not routed in from a shared point several millimetres away.
  • Antenna keep-out. No copper pour or trace passes directly under the NRF24L01+ module's antenna trace, on either board.

Repository structure

text
/tx-remote/     KiCad project for the transmitter board (schematic, PCB, gerbers)
/rx-car/        KiCad project for the receiver board (schematic, PCB, gerbers)
/docs/          BOM + design write-up document, exported schematic PDFs

Tools and how to open the project

Designed in KiCad 9.0.5. To open either board:

  1. Install KiCad (free, cross-platform).
  2. Open the .kicad_pro file inside tx-remote/ or rx-car/.
  3. The schematic (.kicad_sch) and PCB (.kicad_pcb) files are both included and editable.

Deliverables checklist

  • System block diagram
  • Component selection and BOM, with reasoning for main components
  • Full schematics for both boards (power, switches, RF, motor driver, motors, battery, decoupling, protection)
  • PCB layout for both boards
  • Gerber and drill files for both boards

Possible future improvements

  • Add active current limiting on the DRV8833 by using its AISEN/BISEN pins instead of tying them to GND.
  • Add a status LED (charge/low-battery) on the RX board using TP4056's CHRG output, currently left unconnected.
  • Move to PWM-capable pins for motor speed control rather than simple on/off direction control.

License

This project is shared openly for reference and reuse — feel free to fork or adapt for your own RC or wireless-control projects.

Parts

21
QtyValueFootprintReferences
4100nFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC3, C4, C5, C6
3Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ1, J2, J3
210uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC7, C8
222pFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2
11.2kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2
1100uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC9
110kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
110nFCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC10
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U5
1ATmega328P-PPackage_DIP:DIP-28_W7.62mmU1
1Crystal_GND24Crystal:Crystal_HC49-4H_VerticalY1
1DRV8833PWPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU3
1NRF24L01_BreakoutRF_Module:nRF24L01_BreakoutU2
1TP4056-42-ESOP8Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.41x3.3mm_ThermalViasU4

More from devansh2004sharma-tech/nrf24-rc-car-controller

1
  • 2 layers49.5 × 78 mmTransmitter Schematics, the printed circuit board in 3D

    Transmitter Schematics

    devansh2004sharma-tech/nrf24-rc-car-controller

    KiCad schematics and PCB layouts for a wireless RC car — ATtiny85 remote (TX) and ATmega328P motor-control receiver (RX), linked over NRF24L01+.

    14 parts

Similar boards

  • 2 layersSaltOMeter, the printed circuit board in 3D

    SaltOMeter

    basil-squared/SaltOMeter

    a device that makes salty magic players saltier

    45 parts
  • 2 layers104 × 76 mmSuntracker, the printed circuit board in 3D

    Suntracker

    Wudker/Suntracker

    Solar tracker powerbank with MPPT prototype

    115 parts
  • 4 layers62 × 46.9 mm4LayerLabProject, the printed circuit board in 3D

    4LayerLabProject

    ZharbolatDinmukhamed/Haptic-Glove-PCB

    A wrist-mounted PCB for a haptic feedback glove, developed as part of my Research Assistantship at the Tactile Laboratory, Nazarbayev University.

    122 parts
  • 4 layers102 × 100 mmZelvicka, the printed circuit board in 3D

    Zelvicka

    RoboticsBrno/Robutek

    Robůtek je robotická platforma založená na čipu ESP32-S3. Je velice rozšitiřelný, ale ze základu umí jezdit, kreslit fixou, jezdit po čáře, pohybovat se bludištěm. Programování je přes Jaculus.

    214 parts12
  • 4 layers89.5 × 62.6 mmPenguin, the printed circuit board in 3D

    Penguin

    jeevan9s/penguin-bot

    intelligent hybrid robot

    165 parts1
  • 2 layers72.1 × 39.4 mmTheANTPCBV1, the printed circuit board in 3D

    TheANTPCBV1

    DauntlessDog/The-Ant

    Small lightweight pusher bot powered by 2 N20 motors, a LiHv 1s battery, on an ESP32. Custom PCB, custom 3D printed chassis, and custom gearbox design and integration

    23 partsMIT
  • 2 layers83 × 68.5 mmPower subsystem, the printed circuit board in 3D

    Power subsystem

    Sipho-Junior/EEE3088F_Power_Subsystem_Group61

    Power Subsystem for EEE3088F

    58 parts
  • 2 layers116 × 75.1 mmTemp monitoring, the printed circuit board in 3D

    Temp monitoring

    HarshiKrishn/Temperature-monitoring-thermal-control-system

    Embedded system for monitoring and automatic fan control using aurdino,lcd,and pcb design in kicad

    35 parts

Questions

How big is the Receiver PCB PCB?

It measures 66.5 × 39 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Receiver PCB use?

21 parts, built around the ATMEGA328P-PU, DRV8833PW, AMS1117-3.3 and TP4056-42-ESOP8. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Receiver PCB KiCad files?

From the devansh2004sharma-tech/nrf24-rc-car-controller repository on GitHub, at the commit this page was made from: the board is Receiver_PCB.kicad_pcb and its schematic Receiver_Schematics.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Receiver PCB design in my own project?

Its repository states no licence, so its author keeps all rights: ask devansh2004sharma-tech before reusing the design.