Introducing the Tandberg Sølvsuper 10 radio, a product of the Scandinavian Hi-Fi golden age. Sadly, after decades in storage, the huge variable capacitor inside has seized from corrosion and the radio was beyond repair.
So, what to do? Can this piece of 60s design be refurbished and made useful in the world of Internet of Things?
While it was possible to use an Arduino duemilanove (Atmel 328 chipset) for this project (See Part 1), He was really limited due to the 2K of RAM. It was fun trying to optimize code to get things to run in that amount of memory, however, it caused me to not be able to expand on functionality and features. He has upgraded the project to an Arduino MEGA (Atmel 1280 chipset). This platform gives him up to 8K of RAM — which should be more than enough memory (famous last words). A lot of people have asked him to explain what exactly he’s doing with the Arduino. It’s pretty simple. First, He’s using a RS232 shield (not shown) to capture RS232 commands from the Russound Controller. When a key is pressed on the Russound keypads He read the RS232 data and either ignore or react to the events. Currently, He’s looking for +, -, Next, Previous, Play/Pause, Menu events. He plans on using the Menu button to offer deeper content browsing menus (need to sniff the RS232 or wait for Russound to publish protocol). The + & – buttons will allow to scroll playlists and the rest of the transport buttons are self explanatory.
Since the Sonos is a uPnP based system there is no IR or way to traditionally control it. Everything needs to be done via HTTP calls. He’s using an Ethernet Shield to translate the RS232 events to uPnP messages. The biggest challenge has been parsing the huge amounts of VERY VERBOSE SOAP-based notification messages. He parses the data real time, looking for strings that He want to store (things like playstate and metadata). To make matters worse, Sonos is URL encoding XML data inside of an XML structure. So writing a simple XML parser is not possible. You have to look for things like < for a less-than bracket (<). There were times I wanted to scrap the whole project because of this due to the limited RAM and string utilities — it really makes things a lot harder to deal with.
This project describes both the communication between an Arduino Mega and a UPNP capable router, as well as the serial communication between Gameboy and Arduino. This is a contribution for the “Pimp your Fritz!” Competition of the Maker Faire 2015 in Berlin. The conditions of participation are here. The finalists are on the site of AVM. The winners at Heise.
Required Component :
Gameboy (DMG) oder Gameboy Color 30 €
USB 64m Smart card (z.B. von hier) 50 €
Gameboy Link cabel 5 €
Arduino Mega 15 €
Arduino Ethernet Shield 10 €
Housing (Optional) 5 € ~100 €
How to Run
After the Arduino Mega microcontroller has received an IP address from the Fritz! Box, it sends a SOAP request to its default gateway. In this query, he queries the properties of the WAN interface and returns the maximum up- and download bandwidth (“NewLayer1UpstreamMaxBitRate” and “NewLayer1DownstreamMaxBitRate”). Next, he intermittently polls the current bandwidth usage every three seconds (“NewByteReceiveRate” and “NewByteSendRate”). The collected values are converted into megabits and transferred to the gameboy every second via the serial interface. A game is played on the game board’s cartridge, which listens on the serial port and displays the last 50 received values on a scale.