Android Controlling Mindstorms NXT


Here’s an Android device controlling a LEGO Mindstorms robot. [Josh] and a couple of his colleagues developed software to get both Android 2.1 (video above) and Android 1.6 (video) to work as Bluetooth control devices. The NXT cube is running leJOS, a Java virtual machine, allowing you to program Mindstorms using Java. Although their code is at an early Alpha stage, this shows that it works and is a very welcomed tool for NXT development once they get to a more stable point and release it to the masses.

13 thoughts on “Android Controlling Mindstorms NXT

  1. Right now im working on a similar project for iPhone using the open-source BTstack tool. Its great because you dont even need a custom program runnning on the device, the iPhone just connects and takes complete control. LEGO even documents the protocol in depth on their site (its just basic RFCOMM).

    The App already has a great UI

  2. I remember there is perfectly good open source C compiler with libraries for mindstorm, if it lack bluetooth then adding it makes more scene than using language that absolutely unsuited for embedded design, simply there isn’t much space in those bricks for visualization

  3. @therian Are you talking about NXC? I’ve used it a lot. It is everything, but good. Okay, it works, but with a lot of bugs and is limited by the virtual machine running on the NXT. However you don’t need to run any 3rd party sw on NXT to control it over bt. There are commands for it interpreted by the NXT’s OS. (I’ve used them, too.)

  4. @therian-LOL, Java was originally created for embedded design. It was supposed to be the language used for interactive television and home appliances, but then its scope became larger when they realized how much potential it had for the web. The same features that make it good for the web make it good for embedded design, and vice versa.

  5. @Nemo Java was mine first language and I remember it was problem to control even COM port, no need in mentioning any attempts to asses hardware, its a sandbox, as for history they newer intended to use it on uC

  6. @therian I’ve done a lot of stuff with NXC (ex. 8 NXTs in one network using I2C interface on the sensor ports and bluetooth) and I know a lot about this language.

    Just a few problems:
    – If you put two empty whiles or untils after each other, none of them will be executed. You have to put something (ex. PlayTone) between them.
    – For a very long time the loop variable couldn’t be used as an index for an array.
    – You have to wait a little before sending data on BT after you have received data, otherwise your data will not be sent. We had a lot of problems with this, because it was not documented at all.

    However, you can get used to it and it is still a lot better than using NXT-G.

  7. “it is still a lot better than using NXT-G.”
    I was amazed that it went all the way to become a product, it do not qualify even for a toy. By submitting final code those programmers committed career suicide

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.