Windows 10, IoT, Sphero 2 and Raspberry PI 2
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
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;
This has been a long post – what has it covered so far?
- Taking a Windows 8.1 library and using it in a Windows 10 project.
- Making that Windows 10 project work across PC, Phone and Raspberry PI 2.
- 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.]
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;
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.