Raspberry PI 2 and the Microsoft Band
With the recent release of the Microsoft Band SDK Preview, it seems right to highlight those of you how are building cool stuff with it... And if we mix in some IoT, well... woot!
Joost van Schaik is mixing in just about everything, Microsoft Band, Raspberry PI 2, Mono, C# and even Windows Phone in his recent post and view...
Intro – what? WHY?
As regular readers of my blog might have seen, I got myself a Raspberri PI 2 and a Sunfounders sensor kit, and was happily dabbling a little with it. And then suddenly, out of the blue, Microsoft dropped a development kit for the Microsoft Band – and Gerard Verbrugge (Microsoft DX Netherlands) challenged me to make something with it. So I thought to combine a number of gadgets: my Microsoft Band, my Windows Phone and the Raspberry PI plus some of the stuff from the sensor kit.
I created an application that shows your heart rate with a blinking led connected to the Raspberry PI, with a connected buzzer making sound as well. The LED blinks at the heart rate as reported by the Band, and using the buzzer, the PI also emits and audible tick-sound as the LED blinks. At low heart rate the LED blinks blue, at medium rate green, and at high rate red:
If you crank up the sound, you can hear the ticking of the buzzer at the heartbeat. I think this is one of the coolest stuff I ever made. So, Gerard, challenge accepted. And, IMHO, achievement unlocked ;)
- 1 Microsoft Band
- 1 Windows Phone running Windows Phone 8.1
- 1 Raspberry PI 2
- 1 4-pins RGB LED from the SunFounders kit
- 1 3-pins Active buzzer from the Sunfounders kit
- Breadboard, GPIO cable (connecting PI to breadboard), miscellaneous connecting wires
Don’t give up reading if you don’t have a Band – that part can be simulated and the technique to control hardware peripherals from a WebAPI endpoint is useful on it’s own.
How this thing works is, in essence, pretty simple:
- On the Raspberry PI2 runs a OWIN server hosting
- A Windows Phone 8.1 application listening to the paired Microsoft Band’s heartrRate sensor’s events, and posting those to the RaspBerry PI2’s OWIN server upon receiving those.
The demo solution contains 5 projects:
- A Universal app (with only the Windows Phone project actually used)
- An project holding the OWIN server
- A PCL holding two simple classes: an object to post data with to the OWIN server, and a Settings object with some hard coded settings shared over several projects
- A test project posting a single simulated hearth rate update to the server
- The WiringPi project – the wrapper around the C library that I used before.
This is not exactly rocket science, and it’s mostly 1:1 nicked from the heart rate sensor sample in the Windows Phone Band SDK samples anyway. If there’s a heart rate event coming in, a new Pulse object is created and posted to the Raspberry PI2’s OWIN Web API endpoint and the LED starts blinking in the right rate.
To give the user the ability to start, stop and send test data I created this awesome UI with buttons to start and stop the phone sending band data to the OWIN server, as well as a button to send a simulated heart rate as typed in the textbox. Quite the pinnacle of minimalistic design I’d say, don’t you think? ;)
With a little imagination, out-of-the-box thinking and of course some kick *ss hardware and awesome SDKs it’s not that hard these days to let three devices dance together and make a single system – all C#, mostly Microsoft technology and mostly standard knowledge. The hardest part is now writing the C# code that runs on Mono, as it’s impossible to debug a running instance from Visual Studio. We are so spoiled by Visual Studio and the awesome tools it offers, it’s sometimes very hard to have to do without. Let’s hope Windows 10 for devices makes life as good for device developers as for all other Windows Platform developers.
For those who missed the link in between – a complete solution can be downloaded here.