Hello everybody
I have for a long time wanted to build a remote controllable balancing robot aka Segway – that’s was actually the main reason why I created the PS3 Bluetooth Library both for Arduino and the FEZ Devices. It has been a long time since the sneak peak and the performance has been improved a lot since then. The original one had a FEZ Rhino as the main processor, but I discovered that it was not fast enough to read the encoders, as it is not running embedded code. Also I was already using more than 10ms per loop, which I used as a fixed time loop, so I decided to step up a notch and go for a much more powerful device: the mbed microcontroller, which is an ARM Cortex-M3 running 96MHz.
It might have been possible with just a normal Arduino (NB: I have now ported the code to Arduino, see update for the code), but I didn’t want the speed of the processor to be an issue, so I decided to go for the mbed. The robot also features an Arduino Duemilanove with a USB Host Shield on top running a sketch based on my PS3 Bluetooth Library. The mbed board actually has USB Host functionality, but I decided not to port the PS3 Bluetooth Library as my original thought were to use an Arduino Due, but as you might know it hasn’t been released yet, despite the Arduino team announced, that it would be released by the end of 2011. But as soon as it is released I think I will port the code to it instead.
Video Demonstration
Here is a short video demonstration of the robot and me explaining some of the concepts of the design and how it works:
[youtube=http://www.youtube.com/watch?v=N28C_JqVhGU] Read more…
Update
I have now created another library that only supports the controller via USB. The source code for the USB library can be found at the github repository. An example can be found as well: PS3USB.ino.
NB: The newest source code can now be found at github.
Playstation Navigation and Motion controller
As some of you might have seen, my class for the development boards from www.ghielectronics.com, including FEZ Panda, FEZ domino, FEZ Rhino etc, now also works with the two other PS3 controller: the Navigation and the Motion controller. The Navigation controller works the exact same way as the original Dualshock 3 controller.
The Motion controller is a little different, as all of the commands sent to the controller are sent via the HID Interrupt channel, and not thru the HID Control channel as the Dualshock 3 and Navigation controller. It also use a DATA output request instead of a set output report request. For more information, see the source code and the wiki.
A great thing about the Motion controller is that it features a 3-axis accelerometer, 3-axis gyro, 3-axis magnetomer, a thermometer, and the shiny bulb on the top of course. All these peripherals can by controlled by the FEZ devices too.
Stay tuned as I have almost finished porting the code to Arduino – I will make a new post as soon as I’m finished.
NB: The newest source code can now be found at github.
As you might have seen, I finally got the PS3 Controller working via Bluetooth. Before you read any further, you should read my previous post first and also see the wiki for more information. Read more…
Recent Comments