I know I just started the RC Car project, but upon further reflection, I need to do another project first. For the RC car, I wanted to add an RF transceiver among many other things to the board, but I decided to do a separate, smaller project dedicated to trying out RF routing first, something I have little experience in. By doing this, I will reduce risk by getting experience, and it’ll yield a very useful product I’ve wanted to make for a long time. This project should be relatively straightforward: an MCU, an RF transceiver, and a power amplifier. Let’s take a look at the block diagram:

First, power: the USB provides +5V to an LDO through a diode. The LDO generates 3.3 V, which powers everything on the board. Alternatively, VIN will power the LDO, the diode preventing VIN from pumping current into the USB interface. This means the board can be bus powered or self-powered. This is important for the USB interface, as the microcontroller must know how it is powered, and communicate that to the USB interface. I’ll elaborate in a future post.
The signal chain: the microcontroller will convert USB into a simpler interface like SPI, the RF transceiver will convert that to something that can be transmitted and received using an antenna, and the power amplifier will boost the range and strength of the signal. This way, two of these dongles will allow two computers to communicate, or allow my computer to receive the wireless telemetry from the RC car. I’m sure this will be very useful for future projects. Let’s look at the parts:

From STM32’s website
- Microcontroller: I’ve been quite taken with the STM32 microcontrollers lately; they offer a wide range of products, making the series suitable for almost any application, and the STM32 Cube IDE is very user-friendly. For this reason, I was looking into STM32’s for this project (and the RC car). Since this project is relatively straight forward, I was looking at the cheapest, weakest microcontrollers that supported USB, and I originally wanted to use the STM32F0 series. Unfortunately, at this time, they’re very difficult to get; Mouser, Digikey, etc. didn’t have them. So I switched to the STM32L0 series; STM32L072KB to be specific. While I praise STM32’s IDE for its ease of use, we must be wary of the size of the code it outputs; the vendor provided Hardware Abstraction Layer (HAL) consumes a lot of memory, and the USB middleware is huge. The microcontroller I chose has 128 KB of Flash and 20 KB of RAM, and I’ll need about a third of each for my application.
- RF transceiver: I’m going with the trusty NRF24L01P for this application. It’s very popular and and well supported by the Maker/DIY community, so it’s a safe bet for my first dip into RF design. I read the datasheet, and it can do what I can just fine, as well as surprisingly simple to design for, schematically speaking.
- Power amplifier: I honestly don’t know much about power amplifiers, but a lot of RF modules that use the NRF24L01P use the RFX2401C as the amplifier. It has a Low Noise Amplifier (LNA) to amplify the received RF, and a Power Amplifier (PA) for the outgoing RF, so it cam amplify signals in both directions. It’s also got a shockingly simple electrical interface, so that’s a plus. The power amplifier probably isn’t necessary for indoor communication, but if I take the RC car outside, then the amplifier will be very useful in a parking lot or something like that. Using one will also give me a chance to gain more experience with it.
I spent most of my time on this project looking for a microcontroller; most of that time was discovering my chosen chips were either unobtainable, or didn’t have enough Flash or RAM. Now that that’s behind us, I’ll start working on the schematic.
On a side note, I plan to break out a lot of the pins on the microcontroller to headers, so if desired this project can be used for other things (eg. read ADCs using USB, or USB to I2C, etc.)