Monday, November 30, 2020

nerfnet: Streaming Video over nRF24L01

A couple of days ago I published a blog discussing how I used NRF24L01 radios to implement a point-to-point network between two Raspberry Pi computers. I implemented this as a virtual network device and sent packets between the radios.

Since then, I have made numerous improvements to the software and more than tripled the throughput from ~90kbps to nearly 300kbps. These improvements were through a variety of changes that I will cover in this blog post.

Streaming video from one headless Raspberry Pi to another

Thanks to the higher throughput, I was able to implement streaming video using the h264 HEVC video codec and monaural audio using the Opus codec at 32kbps. The result is great, especially when considering the link.

Continue reading to learn more!

Friday, November 27, 2020

nerfnet: Wireless Networking over nRF24L01 2.4GHz Radios

I recently picked up a set of nRF 2.4GHz radio transceivers. These are low-cost radios with a SPI interface that allow exchanging 32 byte packets across a radio link that can run at up to 2MBit on-air data rates. They are popular among hobbyists who want to introduce wireless to their Arduino-flavored projects. I was able to buy ten of these radios with trace antennas for just $11 and three more with SMA-connected antennas for $18.

NRF24L01 Radios

My first inclination is to try something a bit more extreme with this hardware. There is a GitHub project named RF24Audio that allows transmitting audio data over these radios. I wondered if video could be possible and started brainstorming about how a video transport over this link would look. The further I got into the specifics of streaming video the more convinced I was that an abstract link that could carry any form of data would be more fun.

This led me to build nerfnet: a simple application that allows sending network frames over NRF24L01 radios. This is implemented by exploiting the TUN/TAP virtual network device API under Linux on a Raspberry Pi. The code is available on GitHub for you to review and use.

I was able to demonstrate nearly 90kBit throughput as measured by iperf. I suspect this is the first time that iperf has been used to characterize a link composed of these radios.

andrew@andrew-pi:~/Projects/nerfnet $ iperf -c
Client connecting to, TCP port 5001
TCP window size: 43.8 KByte (default)
[  3] local port 34490 connected with port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec   110 KBytes  89.4 Kbits/sec

Continue reading or watch the video to learn more about how I pulled this off.

Friday, September 25, 2020

Plaid Model S Excitement

If you have been following my blog for a while, you probably know that I am an unabashed Tesla fan. My heart lies with the Model S, the only car that I have ever bought twice.

The recent Laguna Seca record-setting lap has me excited. One thing that stood to me was the e-stop stuck to the dash. I wonder what it does. Does it cut the main battery pack contactor? Wouldn't it be too late by the time it needs to be disengaged? Does it dump fire suppressant over the vehicle? Well, I might be too far out of the loop to ever know what function it performs but decided to re-create the look for fun.

The Resistor Network Plaid Model S :]
The total cost was $15 for a pair of dubious e-stop switches and a couple of small squares of 3M VHB. I put on my longboarding attire and snapped a few photos with my new Canon R5. After a little futzing about in Adobe Lightroom, I ended up with this.

My blog has been a little light on projects lately. Work definitely keeps me busy. It is fun to head out and be creative every once in a while though. This was taken near The Computer History Museum in Mountain View, California. There is a Supercharger nearby.

I hope you enjoy my fun and congratulations to Sebastian Vittel on the impressive lap!

Tuesday, July 28, 2020

Amateur Radio from 2900ft. on Mount Diablo | 146.520MHz FM Simplex

Over the past weekend I took a solo, socially-distanced road trip to Mount Diablo to try out my Amateur Radio station. The results far exceeded my expectations and I ended up making more than 25 contacts total.
View from Mount Diablo with Antenna on Trunk
I decided to put together a video about my adventure. It turned out to be a nice day and a good way to get out of the house. The Amateur Radio Community is incredibly friendly which made for many smiles and fun contacts.

I decided to QSL as many of these contacts as possible. I hope to get some interest cards back from the various operators that I was able to reach.
First QSL Card Design: Lick Observatory
Thanks for reading and I hope you enjoyed the video :]