Windows 10, IoT, Sphero 2 and Raspberry PI 2

Sign in to queue


Our last Windows 10 Theme Week post, we turn to Friend of the Blog, Mike Taulty and his two recent posts about Windows 10, Sphero 2 and Raspberry PI 2 (and Windows 8.1 Lib, WinPhone and PC)

Windows 10, the UWP, an old Windows 8.1 library and controlling Sphero across PC, Phone and Raspberry PI 2.

It’s been a while since I played with my Sphero device and so I thought I’d see if I could get some code up and running on Windows 10 UWP to talk to it.

It turned out to be a little more of a ‘journey’ than I’d hoped for but, nonetheless it was fun Smile

I last did any work with Sphero in this blog post where I wrote a Windows 8.1 application in HTML/JS on top of a C# library which itself wrapped a Sphero control library into a custom WinRT component such that it could be used from JS.

I thought I’d revisit something similar in Windows 10 but use C# and XAML for everything rather than bring in HTML/JS.

I went to look for a Sphero control library and ended up back here;

where I have to admit that it’s a bit sad to see that the WinRT library for talking to Sphero;

is still in a 0.9.0-preview variant built specifically for Windows 8.1 and it doesn’t look like anything much has changed with that library for around 2 years.

Bummer. I’d hope that perhaps this will change in the light


Putting the Basics Together on the PC

I paired my Sphero with my PC over bluetooth and I then took the RobotKit library that Sphero has on github and I build a quick Sphero control service out of it;


Moving to the Phone

Up until this point, all the bits that I’ve played with for Windows 10 Mobile I’ve done in an emulator but I didn’t think that was quite going to cut it here and so I went and dug out an old Lumia 920 which has a broken proximity sensor (making it very hard to end a phone call!) and I set about installing the Windows 10 Preview on it.

I’d say that it took around 1 day to get to the point where I had build 10512 installed onto this device. I had a number of problems including;

  • Running out of storage space.
  • Having updates repeatedly fail to install.
  • Getting stuck in a loop where my phone would reboot, show cogs, fail with an unhappy face and then repeat.

In the end, I had to resort to the Windows Phone Recovery Tool in order to re-flash the phone, start the update process over again (without restoring any backup to the phone) and get it updated to Windows 10.



Actually driving the ball;



Moving to Windows IoT Core

In terms of moving this to Windows IoT Core, I hit a really interesting scenario which I thought I’d share. Firstly, I powered up my Raspberry PI 2 and went to its web admin UI in order to pair the device with the Sphero;

In Summary

This has been a long post – what has it covered so far?

  1. Taking a Windows 8.1 library and using it in a Windows 10 project.
  2. Making that Windows 10 project work across PC, Phone and Raspberry PI 2.
  3. Dealing with a few hiccups along the way!

I’ll follow up the post with another where I’ll see if I can control the Sphero from the PI without having to use the UI and a mouse – I’ll add some buttons onto a breadboard and see how that works out.

In the meantime, all the code for this post is here for download if you want to do something with it.

[Click through to see the complete post, Windows 10, the UWP, an old Windows 8.1 library and controlling Sphero across PC, Phone and Raspberry PI 2.]

Windows 10, the UWP, Sphero 2 and Raspberry PI 2–Continued

Following on from that previous post, I wanted to see if I could gain some control over my Sphero device without having to plug a mouse into the Raspberry PI and control the UI.

I had a search through my Sunfounder kit of components and came up with this interesting looking gadget which is a Rotary Encoder with a switch built into it;

Generic Episode Image

It serves 2 purposes – the pole in the middle can be rotated and the device can report the direction of that rotation. That pole can also be depressed to act as a switch.

I figured that this would give me enough to at least rotate the Raspberry PI and provide some kind of speed control and so I went with it.


The Discussion

Add Your 2 Cents