Saturday 25 April 2015

DIY wifi internet radio

The devil makes work for idle hands.  Well, maybe, but SWMBO is busy in the garden just now, so I had to think of something to do myself.
I bought a MRF24WB wireless module a few years back to use for wireless remote data collection, but then I had to run a cable for something else and module never got used.
I build a wired internet radio a few years back, so having a portable version made sense.  That and  the BBC recently went from AAC streams to MP3, which completely messed up the other wifi radio we have - it works now, but not through 'normal' channels'  It also gave me an excuse to play with direct memory access (DMA) which is extremely useful when you need to move a lot of data around.

Starting with a PIC I'd been given (thanks Mike) a 32MX675F512H, with 64k ram, an old Nokia 5110 LCD and along with a VLSI codec I had from the other radio project, the wifi module completed the package.

The design is nothing special, as the codec, LCD and wifi module are SPI devices.  I've used the latest TCP/IP stack from Microchip (V5.42.08 - v2013-06-15) and added extra functions to connect to a radio station, parse the result for meta data (song title etc) It also has a web server, so new stations can be added, and you can see extra data such as bit rates etc.  Couldn't resist adding buttons for volume and channel changing.
4 on-board buttons give menus to select and change stations, volume, mute, 
etc.
In looking for a case, preferably with a transparent window, I came across some old battery boxes that came with rechargeable AAs from 7dayshop.  It was a bit of a squeeze, but I got in everything I wanted.  I didnt go for portable, as this would need batteries and charge controllers etc.  It runs off a 5V USB charger, and I can always rig up a battery if needed.  The speakers are external  - old PC ones that everyone has lying around.

PCB - made using a paper mask on a laser printer.  I have made similar ones on a inkjet, but the TQFP pads are always a bit iffy perpendicular to the plane of the print head.
 Populated - top SMD side.  The PIC crystal (center) is disproportionately large. The codec crystal is on the other side. Wifi module bottom left.
 30 odd links on the bottom - I would have struggled to do this double sided, and in any event I don't have any board.  Programming port and debug pin bottom right.
 The working project
And boxed

It's been an interesting education in miniaturisation and my first almost fully surface mount. A few errors, but that's prototyping.
I've noticed that the router seems to give priority to other devices, as, during downloading on the PC, the data trickles to a halt on the radio - the wired version doesnt seem to suffer so much.  A few bits of other software to sort out - it never ends really when you can tweak your own interface and add new features.