Software apps and online services
I love to listen to music. When I'm working, relaxing, cooking, cleaning, whatever there is always music playing in the background. With the advent of IoT and smart TVs etc. it is getting easier and easier to have music everywhere you go and in every room of the house. I finally got a product that took my music listening to a whole new experience in the Chromecast. It is awesome to be in any room of my apartment and pick a band on Pandora or a video on Youtube and cast it straight to my TV which I have hooked up to ~2005 era Bose sound system. Now this sound system as far as audio is concerned is amazing, however the internet capabilities are seriously lacking (hint: there are none). What good is being able to cast my favorite band straight to my TV when my receiver is off and I have to get up and find the remote for the receiver anyway?
I was faced with two alternatives, shell out for a new smart sound system when this one works perfectly, or find a hack so that I can fully control my music from my smartphone and never have to dig through seat cushions again!The Solution:
In order to solve my audio receiver's problem, I decided to bring it up to the IoT generation by setting up a Launchpad with an IR emitter that could be controlled over WiFi from my iPhone. This allows me full functionality of both the Chromecast and my receiver from the same device without having to leave my chair!
- MSP4305529 Launchpad
- CC3100 WiFi BoosterPack
- SeeedStudio IR emmiter grove module
Making it Work:
Step 1: Getting the Launchpad to control the Bose Receiver:
I used Seeed's Grove IR emitter grove module to easily enable my Launchpad to send IR commands. I started with the existing Seeed arduino library for the IR emitter and adapted it to interface with the MSP4305529 Launchpad. I also picked up a Grove IR Receiver and wrote some quick code to decipher an incoming signal. Using this, I was able to figure out the Bose remote codes for Power, CBL-SAT (which changed my receiver to the correct input), Volume Up, and Volume Down. I then hard coded all of these commands and wrote code so that my Launchpad could send these signals.
Step 2: Getting Blynk to Control the Launchpad:
Fortunately, Blynk makes it very easy to control a Launchpad over WiFi. I used a project by Daniel Ogilvie as a starting point (found here). I was using a CC3100 BoosterPack instead of the CC3200 Launchpad so was a couple lines in the library to modify, but it worked for the most part as it does in the tutorial. I then put together a quick Blynk app with four buttons and tied them to four different virtual pins.
Step 3: Bringing the Two Together:
I continued to adapt Daniel Ogilvie's tutorial and made four different virtual pin subroutines, one for each of the commands I wanted to send. I was now able to send IR commands from my Launchpad using the Blynk app! Success! The code to used on the Launchpad can be found below, but needs the authorization token from blink as well as SSID and password modified before it can work.