Does this project spark your interest?

Become a member to follow this project and don't miss any updates

level: A New Kind of Radio Module

An agile radio module designed for low power and narrow bandwidths over a wide frequency range.

10 125 93
Enjoy this project?
Share on twitter   Share on Facebook

This project was created on 06/25/2014 and last updated 3 days ago.

A cheap, flexible, and agile radio module designed for low power, low bandwidth applications. Towards that, it has a frequency range of 30 MHz to 4.4 GHz and 812 kHz of bandwidth, perfect for long range wireless sensors. It runs at 3.3V and only draws 63 mA at its maximum output of 16 dBm. The shape may look familiar, but this board is not actually an Arduino shield. Instead, it's designed to accept Arduino shields. For example, plugging it into a Bluetooth shield will let you build a wireless bridge between whatever frequency you're using on the Level and any Bluetooth compatible device. The Level was originally designed for experimenting in TV Whitespace, which is awesome because it's free, unlicensed, prime spectrum that cell phone companies normally pay billions for. And of course, it's 100% open source.

In addition to the wireless module, I started working on infrastructure to support a network of devices. I'm using a USRP to coordinate a group of these things and respond in real time to changes in the spectral environment. This is really important in TV Whitespace, because wireless microphones are also in that band and need to be avoided when sensed. Cognitive radio in general is a neat and highly active research topic, so it's good for other applications too. 

Here's the schematic, which could be considered a system design document, but a higher level look at things can be seen in this paper I wrote.

Level is distributed under a Creative Commons Attribution 3.0 United States license. This means that you can share and adapt the work, but you must attribute the work to the original author.

To save time, I've also been using SimpliciTI as a mesh networking stack. This isn't as free-as-in-speech as I'd like, and I plan on moving away from it. Until then, all SimpliciTI code is distributed under TI's license agreement, which can be found in the github repo which is linked over to the left.

There is also some experimental code for talking with SimpliciTI and doing other whitespace things with a USRP in gnuradio. That's in the Cognitive Basestation repo linked to the left. 

  • 1 × CC430 MSP430 and CC1101 smooshed in the same package
  • 1 × ADF4351 Wideband frequency synthesizer
  • 1 × ADEX-10L Passive mixer
  • 1 × PSA4-5043+ LNA

Project logs
  • Towards a more open level

    3 days ago • 0 comments

    Today I made a few changes that make level more open than before. First, I added support to building with msp430-gcc in addition to Code Composer Studio. That means that a lot of the supporting libraries and code that was under TI's license is now under the BSD and GPLv2 licenses. 

    The other thing I did was change the license of my code from Creative Commons to the MIT license. The MIT license is simpler and less restrictive. There's also good news for SimpliciTI: I found a guy who ported it to GNU C. That may be an avenue towards a more open MAC without writing one myself.

    The last thing that I'm doing (currently in progress) is drawing the next hardware revision in KiCAD instead of Altium. Altium is closed source and costs money, so doubly bad. KiCAD is maturing pretty quickly now that CERN is developing it and this will be my first major design using KiCAD. The HackRF One by Michael Ossmann is another example of an RF board that was designed and layed out in KiCAD, so that improves my confidence in the ability of KiCAD to work well enough.

  • Overview and other things

    a month ago • 0 comments

    Here's my overview video:

    I only had 2 minutes, so it skips a lot of details. Here's a schematic walkthrough that goes into a little more detail:

    I also wanted to address one other thing that no one has brought up yet, but I imagine may cause some confusion. I've said that this board can do 30 MHz to 4.4 GHz, but it's also narrowband. What I mean by that is the frequency synthesizer, CC430, and mixer can achieve that range (using the new mixer), but the instantaneous bandwidth is only 812 kHz. The current design has filtering for UHF. So to change the frequency to a different band (like S band), different filter values need to be used. In a real software defined radio, this would be done digitally in an FPGA. I want to change the filtering in the next version, but I haven't decided how to do it yet. Maybe an Igloo Nano or a small discrete filter bank or something. I don't want to just replicate a HackRF or Myriad RF or BladeRF or USRP, I want to make a lower performance, lower cost, and lower power radio module. 

  • Previous versions

    2 months ago • 0 comments

    This board wasn't created in a vacuum, and it wasn't created all at once. This is the 4th spin of the board, actually, and most of the previous versions used entirely different architectures and parts. Here's the first version:

    It's old! It also didn't work at all.

    Version 2: 

    This one was better, but it had seperate TX and RX paths, so needed 2 antennas.

    Version 3:

    Getting closer. A bunch more changes, and this is basically the current version, minus a few tweaks and fixes. 

    This is/was the first RF board I've ever done, so I'm learning as I go!

View all 5 project logs

Build instructions
  • 1

    It is possible to hand assemble Level. I know this because I did it twice. It just takes a lot of time and a hot air iron. The discretes are 0402, so a microscope is nice too. The easier way is to reflow it, which I prefer. 

    Building the software requires TI's Code Composer. It can also be built with GCC if you prefer a more open alternative.


kryptyk wrote 19 days ago null point

btw, have you looked at HSMM for mesh networking? it's quickly becoming the de facto backbone of the 'ham radio internet'.

Are you sure? [yes] / [no]

kryptyk wrote 19 days ago null point

nice! i've been looking for a broadband UHF device for ham radio data applications. thanks dude! nice work!

Are you sure? [yes] / [no]

Jasmine wrote a month ago null point

Hello Hunter Scott, please review your project documentation to ensure it has everything we require for it to be considered for the next round of The Hackaday Prize.

By August 20th you must have the following info on your project page:
- A video. It should be less than 2 minutes long describing your project. Put it on YouTube (or Youku), and add a link to it on your project page. This is done by editing your project (edit link is at the top of your project page) and adding it as an "External Link"
- At least 4 Project Logs
- A system design document. Please highlight it in the project details so we can find it easily.
- Links to code repositories, and remember to mention any licenses or permissions needed for your project. For example, if you are using software libraries you need to document that information in the details.

You should also try to highlight how your project is 'Connected' and 'Open' in the details and video.

There are a couple of tutorial video's with more info here:

Good luck!

Are you sure? [yes] / [no]

Hunter Scott wrote a month ago null point

Thanks, everything should be ready to go now!

Are you sure? [yes] / [no]

Daniil wrote 2 months ago null point

Heterodyning generates 2 frequencies, one at the sum of the frequecnies and one at the difference. Are you doing any filtering at all to make sure the frequency you're not using doesn't end up in someone's paid part of the spectrum?

Are you sure? [yes] / [no]

Hunter Scott wrote 2 months ago null point

Yes, there is filtering. Right now, it's a bandpass for mid-UHF. There's an ISM band at 433 MHz, and TV Whitespace is right above that. It's the responsibility of the user to make sure they're not transmitting on top of someone else, just like it is when you use an SDR like a USRP or HackRF. You can use the FCC provided spectrum database to make sure you aren't interfering with anyone:

In the future, I'd like to add a filter bank or something, since right now once you get up higher frequencies, you need to change some discretes.

Are you sure? [yes] / [no]

Charlie Fullerton wrote 2 months ago null point

How do you control the Freqs so you can stay legal for the privileges you have?

Are you sure? [yes] / [no]

Hunter Scott wrote 2 months ago null point

This thing is heterodyning, so the CC430 puts out about 900 MHz which is mixed with whatever is coming out of the frequency synthesizer to produce the transmit frequency. So you write to the frequency synthesizer (the ADF4351) over SPI from the CC430 to tune to the frequency that, when mixed with 900 MHz, gives you the transmit frequency you want. It's up to the person writing the firmware to make sure they stay within the band their allotted. In the case of Whitespace, this module gets commanded to certain frequencies by the base station. The base station knows which frequencies to use by checking the FCC database and scanning potential bands for incumbents. I'm not done implementing the whole Whitespace infrastructure, but that's where it's going.

Are you sure? [yes] / [no]

Tiago wrote 2 months ago null point

This is pretty amazing, I might build something based on this project sometime in the future, with a bit less arduino.

Thanks a lot for sharing :)

Are you sure? [yes] / [no]

Adam Fabio wrote 3 months ago null point

This is awesome on so many levels Hunter! Thanks for entering The Hackaday Prize! I love that Level can be used to bridge RF sensed by the CC430 to bluetooth, wifi, or anything one can find on an arduino shield. Keep the updates rolling in, and good luck on your way to Space!

Are you sure? [yes] / [no]