Andruino
Andruino is a project that I started after the idea of a phone controlled paper robot got brought up in my research group. Smartphones are almost ubiquitous in our everyday life meaning that everybody has the means to provide a cheap paper robot with a collection of advanced sensors and a powerful processor without having to go out of their way to purchase extra parts.
I started the project by first looking into what phones I could use and how the devices could communicate by simply putting them together through a USB connection. One guide in particular suggested that I simply needed an adapter to connect a phone and an arduino, and also provided most of the code for an Android app that would implement serial communication between the two. This was a very good step in the right direction and I was able to send strings of text to the arduino. I then had code on the arduino that would interpret and run the received instructions. Examples would be: "led on", "led off", "sweep servo".
The next step was to use built in sensors in the phone to provide information to the microcontroller. I started by trying to implement the accelerometer. Having no Android programming experience it was initially a rather unintuitive process to me and I spent a lot of time trying to have it do exactly what I wanted. I was successful in the end and was able to map the phone's inclination to a servo's angle as a demonstration.
After that, I took a step back to think of the details of how I would implement a phone controlled robot. The current app only allows written commands to be sent to the Arduino but if the robot were to be moving it would be impossible to use the touchscreen therefore I needed to use a different method to provide input. The first one that came to mind was voice control. After some research I found that Android has a library dedicated to voice-to-text. As I am getting more familiar with the Android IDE, implementing it was relatively painless and I am now able to send the same instructions by saying them instead of writing them. One problem I have ran into is that the phone stops looking for input after a while if none is detected and then I have to restart voice recognition manually while I need the phone to continuosly look for input so that the robot can work for an indefinite amount of time.
Jack He