Instructables

Use your android phone sensors on the arduino !

Picture of Use your android phone sensors on the arduino !
Hello, this is my very first step-by-step instructable, and today, we're going to learn how the sensors in your android smartphone can communicate with your arduino.
In modern smartphones, there are a lot of useful sensors for an ingenious arduino project. I have a motorola DEFY, for example and it has (at least) 6 sensors :
- light sensor
- proximity sensor
- aGPS (assisted gps)
- compass/magnetometer
- accelerometer
- orientation sensor
This instructable's purpose is to get you started using these sensors from your arduino. For this, we're going to use an application that was made for that single purpose : Amarino 2.0 . This app was first started by Bonifaz Kaufmann during his visit at the High-Low Tech Group in 2009 at the MIT Media Lab in Cambridge, USA and further developed at the University of Klagenfurt in Austria.

The overall cost of this project, considering you already have an arduino and an android smartphone, can be pretty low (it cost me about 12$).

If you liked this instructable, please rate it !


 
Remove these adsRemove these ads by Signing Up

Step 1: Required Parts/Tools

Picture of Required Parts/Tools
Required tools :

- solder iron with fine tip
- tiny solder wire
- good magnifying glass
- "Third hand" helping tool
- good soldering skills

Required parts :

- Arduino
- Android smartphone
- Bluetooth serial adapter (not needed if you happen to have an arduino BT)
- 10 and 20 kOhm resistors 
- Breadboard
- Standard servo motor
- jumper wires and/or small wires


Since the ArduinoBT has Bluetooth functionality built-in, setup is much easier (no soldering, risks of messing up bt adapter, etc...) but since it costs pretty much, I went the cheap way, and bought a bluetooth to serial adapter from ebay.

Okay, so where do you buy those parts/components...

- Arduino : you can get this at sparkfun : (http://www.sparkfun.com/products/9950 ), from ebay or you can check the arduino website for other distributors (http://arduino.cc/en/Main/Buy )

- Android smartphone (I guess you already have that...)

- Bluetooth serial adapter : You can get this from sparkfun too, with a breakout board (http://www.sparkfun.com/products/10269 ). These don't need level shifting so if you buy this product, you don't need to buy the resistors. You can also get it from ebay, like I did, but they are more complex to set up and documentation isn't always accurate (mine was wrong on the default baud rate, for example) Here's the link to the one I bought : Bluetooth adapter.

- 10kOhm and 20kOhm resistors : these are needed to shift the 5v from the arduino serial pin to the 3.3v on the bluetooth adapter. You can get these at your local electronics shop.

- Breadboard : Not really necessary, but it is much easier (and cleaner) to wire the voltage divider on a breadboard, than to solder it and have wires everywhere. The breadboard isn't required if you choose to get the arduino BT or the bluetooth module from sparkfun. You can get a breadboard on ebay or again at sparkfun.com

- Jumper wires/small wires : you can get this from sparkfun too, but you can also salvage small wires from old electronics to keep the costs down.

- Servo motor : Not really required, but used in this instructable for an example with the accelerometer sensor. I'm using the futaba s3003. You can get this at your local hobby shop, ebay, or sparkfun  .

Now It's the time to choose :
- you can go the pretty expensive, but also pretty easy way (no soldering) : go get an Arduino BT . (more than 100$)
- you can go the less expensive way, but less easier (a little soldering but no level shifting) : get a bluesmirf silver breakout board from sparkfun (approx. 40$)
- you can go the cheapest and hardest way (soldering AND level shifting required) : get a bluetooth module from ebay (less than 10$). 

In this instructable,I'm going to get you started with the Bluetooth module from eBay.

So make your choice, get the parts/tools, and head to Step 2. 

Hi this is really useful XD, a mate used this an iphone with a bluetooth connection in the same way for a glider but the communication between the code, instumentation and servos were too slow, can the android phone be connected with a direct cable instead of wireless communication with the arduino?

a1r (author)  mark.g.perkins.116 days ago
You're looking for this : https://www.sparkfun.com/products/11343
But you'll have to write some java code for the android phone or use one of the many apps available on the android market (just search ioio on play store)
luiznac1 month ago

Is there a way to send data through the USB port instead bluetooth?

sibilkoloft1 month ago

Great Project.

Is there any way to use my Android Amarino App data of accelerometer or orientation sensor to control the RGB hex?

a1r (author)  sibilkoloft1 month ago
Try to combine the servo example and the multicolorlamp one. (I just replied to your PM btw)
mrakuaku8 months ago

To get the Servo example to work I had to change " int pos = 0; " with just "int pos;" ... otherwise the servo just went to it's mid point position and stayed there. Thanks for the tutorial though, it was helpful! :)

XZ3R01 year ago
Would this work with the BLE Shield made by RedBearLab?
naumansm1 year ago
Hi,

that was the problem. I did manage to get an app that can 'discover' Class 0 devices..and I was able to pair the device to my phone. But, Amarino still tries to find new devices...and doesn't see the already paired Bluetooth device. So it doesn't connect. Any ideas ?

Thanks,
Nooman
Hi.
Having the same problem as you describe. Did you figure out a way to connect the jy-mcu to your phone? What app did you use to make your phone find and pair with the jy-mcu?
Thanks
Hi, i am going to build a quad copter controlled by an an arduino one and i would like to use my phone's sensors. do you know how fast can the data be transmitted, what is the delay it has? it has to read and send data many times per second to work stabilizing the quad copter. thank you for this awsome tutorial
a1r (author)  fvelasquez21 year ago
Actually you can, BUT imagine the quadricopter falls into a pool or something: you won't have your phone anymore. If you want cheap sensors, check out this page (http://www.multiwii.com/). There's also a good community working on these softwares too:
http://code.google.com/p/arducopter/
http://aeroquad.com/showwiki.php?title=Book:AeroQuad+Manual

The "smartphone on quadricopter" thing is a bad idea, trust me
atsaturyan1 year ago
Hi, can I use HC06 Serial Bluetooth module?
a1r (author)  atsaturyan1 year ago
Yep
sunand c s1 year ago
hi i am doing a project on android car.i.e controlling a toy car with mobile phones accelerometer.i am using AUBTM-20 bluetooth module and atmega8 microcontroller.i am able to pair my phone with this bluetooth module.but i am not getting any signal at the controller output.could you please help me.my e-mail id is sunandsuresh92@gmail.com
donmatito1 year ago
J'adore vos projets. A1R est toujours actif ?
a1r (author)  donmatito1 year ago
Ouaip ! Bon je l'ai un peu delaissé l'année derniere mais la je travaille sur un nouveau projet (donc un nouveau instructable) avec un pote...
naumansm1 year ago
Hi Guys,

Hope someone can help me. I am trying to pair my Android phone to a JY-MCU bluetooth module I bought from dealextreme. My phone can't find the device when it does a search (it finds other peoples laptops, etc. in my building but not the bluetooth device next to it).

I did try another non-Android old phone and it is able to both see and pair with the bluetooth module. Could this be a Baud rate issue ? Or an Android software issue ?
The Android phone can also detect my older non-Andriod phone and successfully pair with it also.

I think it has something to do with bug in the BroadComm bluetooth stack that is used by most Android phone manufacturers (LG, HTC, Samsung are affected, but not the Google Nexus phones) that prevents discovery to this and all other bluetooth devices that report their Class of Device (CoD) code as 0×00.

Do you guys have any suggestions ?
Kind regards,
Nauman
naumansm1 year ago
Hi Guys,

Hope someone can help me. I am trying to pair my Android phone to a JY-MCU bluetooth module I bought from dealextreme. My phone can't find the device when it does a search (it finds other peoples laptops, etc. in my building but not the bluetooth device next to it).

I did try another non-Android old phone and it is able to both see and pair with the bluetooth module. Could this be a Baud rate issue ? Or an Android software issue ?
The Android phone can also detect my older non-Andriod phone and successfully pair with it also.

Kind regards,
Nauman
Hi again! could you write a code that can control two servos for the X and Y axis as i am new to arduino.
Thanks
Nick.
Hi, when i try to upload the code to my arduino i just get this error, please help!

In file included from Amarino_Servo.cpp:2:
C:\Users\Sally\Documents\Arduino\arduino-1.0.1-windows (2)\arduino-1.0.1\libraries\MeetAndroid/MeetAndroid.h:104: error: conflicting return type specified for 'virtual void MeetAndroid::write(uint8_t)'
C:\Users\Sally\Documents\Arduino\arduino-1.0.1-windows (2)\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
a1r (author)  nickygiscool2 years ago
Use an older version of Arduino IDE, something like 0.27 or older (the MeetAndroid library hasn't been updated for a while)
fckingdavai2 years ago
Hi.
I am trying to upload the sketch on my arduino but i have some errors. I have put the meetamarino library and i get this error from my arduino IDE(arduino 1.0.2):

Compass_Led:10: error: 'MeetAndroid' does not name a type
Compass_Led:13: error: 'MeetAndroid' does not name a type
Compass_Led.ino: In function 'void loop()':
Compass_Led:40: error: 'meetAndroid' was not declared in this scope
Compass_Led.ino: In function 'void compass(byte, byte)':
Compass_Led:53: error: 'meetAndroid' was not declared in this scope

What arduino IDE did u use on this tutorial?
pls help me :)
a1r (author)  fckingdavai2 years ago
Yep, the meetandroid library hasn't been updated to work with the newest arduino versions. Try using an older version, like 0.27 something like that. Cheers
fckingdavai2 years ago
Arduino Uno is compatible with this kind of project?

I saw in your video, that the car is standing on the Arduino. Is it possible to change your project in the way that the car will move on the road? i mean instead of using bluetooth to connect to the smartphone, we can make the connection between the arduino, rc car and the smartphone through wireless?

fckingdavai2 years ago
I like your instructable, its very good and i rate it.
I whant to go through this tutorial, and i don t really know what arduino microcontroller shoud i buy(i am not looking for a cheap one).

From what i understant from your tutorial, and from the other comments i understood that i can use a Arduino BT and no bluetooth adapter, or an arduino duemilanove with bluetooth adapter. Pls corect me if i am wrong.

I whanna know if i can use some other arduino board +/- bluetooth adapter.

A quick reply whoud be great.

fckingdavai2 years ago
I whann buy this arduino duemilanove. Is there a difference between a chipset atmega128 and a atmega328?
I mean that if this arduino has an atmega 128, and i buy an arduino with a chipset atmega328(or any kind of chipset other than the atmega128) does this project will work?


pls reply :), sorry of my english is bad
a1r (author)  fckingdavai2 years ago
Of course ! As long as it's an Arduino, there will be no problems man
merlin132 years ago
Awesome instructable, thank you so much for all the work and the details. I got the cheaper BT module and all the steps worked great! Just one thing: the Test app in the Amarino examples is set to 57600 baud - I used it as is and nothing worked. Thought I messed up something till I decided to change it to 9600 and all worked great. It looks to me that 9600 is the default setting - is there a way to change it? Thanks again for this awesome project!
Joxson3 years ago
Just LOVE this!
Today i recived my BT module, going to solder it later, but now in trying to think about the code.

My goal is to make a rc car that you controll by tilting:)
How do I change the code to get the arduino to react when I tilt the phone another way?
Witch variable should I change??

Joachim!
P.s. Sorry for bad english(I'm Swedish)
arruldd Joxson2 years ago
Did you succeed ?
Joxson arruldd2 years ago
yes i did:)
It was very easy:)
a1r (author)  arruldd2 years ago
Man, dont waste your time. Check out my second instructable it's exactly what you want to do.
Mr.What2 years ago
Which of the white, orange, red, and yellow wires are for Tx, Rx, 3.3v, and GND respectively. Assuming that we are taking about the Tx, and RX for the BlueTooth module (not Tx, Rx for the other side)

I believe that this is the same BT module you can get for $6 ish at DealExtreme.com (dx.com ?). Look for datasheets on EGBT-046S and RF-0417C
a1r (author)  Mr.What2 years ago
Yup, you're right, I've swapped the ebay module with the one from DX and the car worked great !
HSS19782 years ago
Hello, i new in this things.

When i'm installing the amarino arduino library it gives a "Deprecated file" and asks if i want to download the latest version and i download it.

When i try to run the compass_led.pde it gives me a error:

------D:\Programas\arduino-1.0\libraries\MeetAndroid/MeetAndroid.h:104: error: conflicting return type specified for 'virtual void MeetAndroid::write(uint8_t)'
D:\Programas\arduino-1.0\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'--------


CAN ANYONE HELP ME, PLEASE !!!
I am having the same problem as HSS 1978. I am trying to complete the tutorial with the RN-42 breakout bluetooth module from sparkfun with an arduino uno. I have no problem uploading the servo sketch without anything plugged into the arduino, but when i am configuring the sketch with just the GND pin (from module) disconnected i get the error.

processing.app.SerialException: Serial port 'COM5' already in use. Try quiting any programs that may be using it.
at processing.app.Serial.(Serial.java:144)
at processing.app.Serial.(Serial.java:76)
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:75)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:88)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:66)
at processing.app.Sketch.upload(Sketch.java:1664)
at processing.app.Sketch.exportApplet(Sketch.java:1624)
at processing.app.Sketch.exportApplet(Sketch.java:1578)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2314)
at java.lang.Thread.run(Thread.java:619)
processing.app.debug.RunnerException: Serial port 'COM5' already in use. Try quiting any programs that may be using it.
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:99)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:88)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:66)
at processing.app.Sketch.upload(Sketch.java:1664)
at processing.app.Sketch.exportApplet(Sketch.java:1624)
at processing.app.Sketch.exportApplet(Sketch.java:1578)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2314)
at java.lang.Thread.run(Thread.java:619)


any ideas? could it be because i am using an uno instead of a duemilanov?
a1r (author)  syanikog2 years ago
Seems like a serial port problem: disconnect the Arduino, write down all the serial ports available (in Tools --> Serial Port), reconnect the Arduino and select the Serial port that has just appeared in the list.
syanikog a1r2 years ago
I got it working, thanks for the help. It was a serial port problem, I was on the right port, but my bluesmirf module wasn't at the correct baud rate. I had to switch both to 115200 for it to work. Also I get the error:
' avrdude: stk500_getsync(): not in sync: resp=0x00'
if I try to upload with the Rx Tx pins connected to my UNO. I simply uploaded then connected the module and everything worked fine.
Thanks for the great tutorial!
bwrussell2 years ago
Glad I stumbled on this page before my BT module showed up for a different project, probably would have cooked it with 5 V. Thanks!
mkhanbag2 years ago
Hi,

Please help me with the bluetooth module, i want to change the baud rate and the pairing info, i used a usb to ttl adapter, connected TX, RX of USB to ttl to RX, TX of Bluetooth Module respectively and applied 3.7V to the Bluetooth module(made sure that its not in paired mode, Led flashing) - The problem i have is, as soon as i open session - hyper-terminal or putty or any com tool, the BT module is contentiously sending non stop 'Y' kind of characters
"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"

This is what i bought off ebay : "NEW Serial Bluetooth RF Transceiver Module RS232 Master + backplane 4 pin TTL"
Item No: 110805911219

I tried going through all the google searches but no vail, please help. Thanks in advance, Khan
francisroan3 years ago
ok im sorry i really didnt read the full thing but now its working thanks!!(im not a patient boy)by the way if ur not busy could u help me with my project ???(bluetooth
motion sensor car?)
a1r (author)  francisroan3 years ago
Your project looks just like my second instructable . Have fun !
francisroan a1r3 years ago
thats the xact thing i was looking for thanks a lot by the way!
a1r (author)  francisroan3 years ago
No prob'
francisroan3 years ago
(removed by author or community request)
a1r (author)  francisroan3 years ago
Geez ! Have you even read the instructable ? Follow step 6 first ! (The sketchbook folder is in "My Documents")
francisroan a1r3 years ago
i thout the sketch book was in the arduino ide file --> sketch book!! but as i told u earlier that doesnt open....and wat do u mean wen u said it is located in my documents?? i searched there but nothing like sketch book!
francisroan3 years ago
hey thats a gr8 post !! im using a aubtm 20 bt module which is a 3.3V module !! so could i use the same level shifter principle u used? and i dont have a 20K resistor so can i use two 10K resistors together?(like one after the other??(serial))
a1r (author)  francisroan3 years ago
Yes you can use two 10k in series. And no, I don't have the accelerometer code (android side), I only have the arduino code. If you want details on the android app, visit the official website : amarino-toolkit.net
francisroan a1r3 years ago
what did u mean by android side??? did u mean that the app doesnt support accelerometer untill we program it'?? aka i have to make an (separate) app for the acceleromter? ? u said u have the arduino code pls send it to me!! thanks my email id: francisroan@gmail.com
send it via email pls!!
a1r (author)  francisroan3 years ago
Nah, just follow Step 7 and you'll be happily using the accelerometer without having to type a single line of code ;)
francisroan3 years ago
good work!!so i wanted to ask if u have the code to get the accelerometer reading?
sshanbhogue3 years ago
hi man!! loved your work on explaining the amarino.. shocked u doin such a good job at your age.. :-)
Thanks a lott!!
a1r (author)  sshanbhogue3 years ago
You're welcome, man !
b70359573 years ago
Thank you nice tut. i just bought the cheapest module on dealextreme.com.
noik b70359573 years ago
me too, this instructable will help me very much, thanks! ;D
a1r (author)  noik3 years ago
Happy to have helped you out !
Joxson3 years ago
Hi! Thanks for the anwsers! But when I started to look at it and started to change the code and se whats doing what it wasnt that hard :) Right now the arduino is sitting an my rc car :) Really fun actully, little to senive, but thats step two, also make an failsafe^^ I found out that it reaches more than 25 meters :D
a1r (author) 3 years ago
Sorry for the typing errors, I was typing on my phone (small keuboard). xD
Joxson3 years ago
Also, can I skip the tx from the arduino to the rx on the bt module.
I just want to recieve data from the Bt module, I dont have to plug it in right??
a1r (author)  Joxson3 years ago
Thanks ! You dobt really HAVE to solder it, BUT it might be useful for 2-way communications. BTW, I actually learned to use amarino for the exact same project as you, so if you ant, i have made specially an Arduinobshield for the car, designed in Eagle CAD, and i've also done the program that runs on the arduino. Actually, this car was going to be the subject of another instructable, but if you want, i can PM you the files (pcb layout & arduino prog) in a zip archive.