As part of my plan to do everything wrong on my combat robot, I made my own radio transmitter. The motivation for doing this instead of just buying one is not only for fun and coolness, but also because I want to experiment with different control methods and that requires full control over the transmitter and receiver logic.
The body of the radio is an XBox 360 wired controller. I removed the vibration motors and motor mounts and replaced them with a bunch of electronics and a battery so the whole thing is self contained.
The list of components:
- USB port
- LiPo battery charger
- 300mAh LiPo battery
- Power switch
- 3.3v regulator
- 5v regulator
- nRF24L01+ 2.4ghz transceiver
- Ardiuno pro mini
- USB host shield
- USB to serial interface
- 2.42" LED screen
- 0603 smd blue LEDs
- Shitty yellow replacement parts
Everything fits inside the shell except the antenna and display. The display is attached with an aluminum bracket that I made on a small cnc machine. The system draws 100mA-250mA depending on radio the power setting and how much of the screen is lit up - this means 1-3 hours of battery life. It is charged over standard USB, so any off the shelf battery pack could be used to extend the run time.
The biggest obstacle for this project has actually been software - namely the USB host shield freezing up randomly. After a painful amount of experimentation I think this problem is caused by some internal buffer filling up if the USB events are not polled quickly enough. A simple work around is to call USB.task(); every couple of lines. Really I'm just mentioning this in case some poor soul tries google searching for this issue. Lord knows I did.