My current thinking is that I will attach an AM/FM radio chip to a microprocessor, and that to an Ethernet controller to present the Internet stream.
I did a little research on radio chips; there's many, but I would like the circuit to be simple, have all digital tuning controls, and if possible have digital audio output. I found a Silicon Labs offering, the Si4737, which I like a lot. Unfortunately, it is quite expensive (USD$ 18 in unit quantities from Mouser). However, I have resolved myself to just go for it for at least this first prototype. If there is interest in the project for others, and a sensitivity to price, I'll re-visit the radio choice. (There are several cheaper ones that involve more external components, do not have digital controls, and have analog outputs.)
My current thinking is to see if I can get away with using an STM32F4 microcontroller. I have had some recent experience with various STM parts, have a build system set up, and have a bunch of dev boards on-hand.
My main concern with this controller, though, is if it will have enough computational power. I am expecting that I will have to do some real-time compression to get sufficient audio quality in a low enough bandwidth. The STM32F405's do have a single precision FPU, so there is an outside chance that this might be possible with the 168 MHz CPU clock. My first tests will be to see if I can compress audio at a sufficiently high rate on that CPU.
If the STM32F4 is a bust, my next choice is a board I stumbled across recently, the C.H.I.P. CHIP_(computer). This is a 1 GHz Cortex A8, with NEON SIMD, and I think FPU. If it does indeed have FPU then it really should work. At an USD$ 9 each, what a bargain. Unfortunately, they are out-of-stock or I would have ordered a few already just to have some on-hand. Maybe they'll be back next month.
Anyway, I happen to have a heap of STM32F4 boards, and for this initial text/prototype, I'm going to use one board, the 'Netduino Plus 2'. To wit, this is a discontinued board, but I like it for this application because:
- I have three of them otherwise collecting dust
- they have an Ethernet adapter on board (via a ENC28J60 -- a really handy chip, but heed the errata)
- they have an SD card socket on board, which I intend to use for the TiVo-esque features
- they have a USB socket for.... for 'why not'? probably at a minimum to realize a debug monitor
- the rest of the IO is brought out via an Arduino Uno R3 style header
- there is one I2S capable SPI port brought out, and also an I2C port. I'll be needing I2S to receive the digital audio from the radio, and the I2C to control the radio chip (tuning, etc). Some sundry gpio will be used for other stuff.
So, from a physical design, the Netduino Plus 2 will work and save me some time soldering all those adapter things. I'm pretty sure I'm going to have to make a 'shield' of some sort to house the radio board, but that's what OSHPark is for, no?
Anyway, my first two orders of business are:
- order radio parts from Mouser. I don't know what I'm going to do about the AM antenna (loop ferrite sticks?), but I will concentrate on FM for now
- write some test code for the STM32F4 to see if it has any hope of being able to do the compression and also have overhead for disk IO, networking, etc. It very well may not, and this will significantly change the direction of the project
For those that don't know, the 'Netduino' was a line of products that have an Arduino form factor, but were in running Microsoft's .NET Micro Framework ("dotNetMF"). It was an interesting idea, and there was a community around it, but the founder made some business errors and the company and product line are, to-wit, no more. (There is another company that does dotNetMF products, GHI.) Anyway, dotNetMF was interesting, but it's exquisitely slow (it's interpreted). Since the board has an unpopulated 10-pin ARM JTAG header, I should be able to completely re-purpose the hardware. It wasn't the worst board in the world, but it sure was expensive -- about USD$ 60, which is kind of a hard sell relative to the also-then-popular Raspberry Pi at about USD$ 20 and way way more capable.