I've seen videos around YouTube (like this one for a car) that show an ability to control a Mindstorms set via iOS (either iPhone or iPod Touch). I am just getting started with Mindstorms, but find this type of possibility very intriguing. How can I set this up? Should I use Bluetooth or something else?
As stated in the description of that video, the big issue is that the iPhone won't pair with uncertified devices:
The car is built with standard Lego Mindstorms NXT components. Since iPhone SDK does NOT allow using non certified devices (which are limited to other iPhones and some headsets etc.) I have used BTStack library.
I guess this is why there's an official app for Android, but not iPhone.
Note that the app itself is only available on Cydia, which I believe requires a JailBroken iPhone to run:
LegoDrive is available on Cydia. Just install using Cydia on your iPhone/iPod, enter your Lego NXT's device ID and you can use LegoDrive too!
LegoDrive (formerly presented as iCar) demonstrates how to control a Lego Mindstorms NXT robot using (rotating and tilting) iPhone over Bluetooth.
Edit to add (08-Jan-2013)
The recently announced Mindstorms EV3 includes the statement that:
LEGO MINDSTORMS EV3 will also include full iOS and Android compatibility out of the box.
While the new "EV3 Intelligent Brick" features:
New Linux-based firmware, a USB port and SD expansion slot [which] offer nearly unlimited programming and expansion capabilities
It's possible to control a NXT with the iPhone/Smartphone although this method requires either another iPhone, Smartphone, Laptop or PC with access to the internet.
It's a clever way of controlling your NXT without jailbreaking your device, but it isn't a perfect solution. I'd like to try it out myself, but I find installing the server app to be too technical and the community that produced the instruction don't appear to be active any more.
Something like this app may come in handy:
Note that for this app you must have a computer on the same network and have a bluetooth device on that computer. It's a bit of a workaround - You may want to search for some other apps that can use built-in bluetooth.
If you are looking for some info on sending commands over bluetooth, you might want to check out the link below:
It's a pretty good introduction into sending direct commands to the NXT over bluetooth. That's what all the videos are doing that you see. What's convenient about this method is that it doesn't limit you to only using one particular type of software to communicate - where if you use the correct commands any type of software or programming language can be used.