Androino! Control an Arduino From Your Android Device Using a Cheap Bluetooth Module.

335,463

241

51

This instructable shows you how to read sensor values from an Arduino with your Android device using a cheap bluetooth serial device you can order for under $10 on dealextreme or ebay.
This example uses Python as the scripting language for the Android scripting layer (SL4A) but you can choose from other languages like Perl, Lua, JavaScript etc. see: http://code.google.com/p/android-scripting/

Step 1: You Need:

1. JY-MCU bluetooth wireless serial port module.
http://www.dealextreme.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299
or search for "bluetooth module" on ebay
I've bought mine for $8.20 on dealextreme.
2. An Android device with bluetooth.
3. An Arduino board.
4. Some sensor or potentiometer to read values from.

Step 2: Setup the Arduino Hardware

The BT module comes preprogrammed with the following settings:
Device name: linvor
Baud rate: 9600
PIN: 1234

You can leave the settings as they are or change them with a serial adapter.
For more info see: http://wiki.openpilot.org/display/Doc/Serial+Bluetooth+Telemetry

Connect the bluetooth module to your Arduino.
BT module Rx-> Arduino Tx
BT module Tx-> Arduino Rx
VCC to 5v
GND to GND

Connect a sensor or potentiometer to analog pin A0.

Upload this sketch to your Arduino: http://pastebin.com/raw.php?i=xmyr840j
The onboard LED at D13 is toggled everytime a sensor value is requested from the Arduino.

Step 3: Setup the Android Device

Install Android Scripting Layer and Python for Android:
http://code.google.com/p/android-scripting/
http://code.google.com/p/python-for-android/
(This instructable is based on SL4A r4)

Copy the code from http://pastebin.com/raw.php?i=FVxKzf1g
and name it androino.html
Copy the code from http://pastebin.com/raw.php?i=XEmEsATU
and name it androino.py
Change the BT_DEVICE_ID in androino.py to the address of your BT module.
If set to None, Android will ask you at program start which bluetooth device to use.
Upload both files to the /sdcard/sl4a/scripts/ directory on your phone.


Step 4: Have Fun

Turn on Bluetooth on your Android and pair the device using the pin 1234.
Start SL4A on your Android device.
Select androino.py and then the gear symbol to start the application.
The SMD LED on your BT module should stop blinking at this point.
A WebView is started and when you click on the button, the sensor value gets read and displayed.

It's really that easy :)


SL4E API reference:
http://www.mithril.com.au/android/doc/

edit:
I've added this script which simply dumps anything that is send via serial out from your arduino.
dump.py http://pastebin.com/raw.php?i=uVxaD829
Select dump.py and then the console icon in SL4A to start.

Share

    Recommendations

    • Optics Contest

      Optics Contest
    • Make it Glow Contest 2018

      Make it Glow Contest 2018
    • Plastics Contest

      Plastics Contest

    51 Discussions

    0
    None
    SadanandT

    3 years ago on Introduction

    find the code given in below link and troubleshooting techniques and circuit diagram

    http://knowledge-cess.com/arduino-android-interfacing-example-code-and-troubleshooting/

    0
    None
    mmmatjaz

    4 years ago on Introduction

    The bluetooth module does not work with arduino micros's RX and TX pins, but I does work with software serial. Any advice on that, anyone? I can't use software serial as I need the PWM pins for other stuff...

    0
    None
    Diego_Aquino

    5 years ago on Step 4

    Hello Friend, I am doing a mechanical arm, and I wonder how I control the servos via Bluetooth? Has a model Tutorial?
    thank you

    0
    None
    Mohammad_mm

    5 years ago on Step 4

    can I test this application with hyper terminal in windows ?
    i make a connection between mobile bluetooth and my labtop
    and select the com port of the Bluetooth in hyper terminal

    but when i open the mobile application to send any thing from the terminal as a test before connecting the arduino
    The application cannot start
    it gives me w white screen with no thing else

    I installed the sl4a r4 and python interpreter

    but the problem still exists ?

    0
    None
    akeonly

    5 years ago on Step 2

    Hi metanurb,

    I have the exact bluetooth module that you have but I can't send anything to this module. Below is simple echo code that I use. Have I missed anything?

    Thank you.

    Arduino mega 2560

    const int LED_PIN = 13;
    boolean toggle = true;

    void setup() {
    Serial1.begin(9600);
    }

    void loop() {
    if (Serial1.available()) {
    Serial1.println(Serial1.read());
    digitalWrite(LED_PIN, toggle);
    toggle = !toggle;
    delay(1000);
    }
    }

    0
    None
    4ntoine

    5 years ago on Introduction

    With ArduinoDroid (https://play.google.com/store/apps/details?id=name.antonsmirnov.android.arduinodroid) you can develop for Arduino on Android:

    0
    None
    anand91

    5 years ago on Introduction

    HI ..
    please tell the program for arduino to transfer accelerometer sensor value serially using a bluetooth ttl interface

    0
    None
    rikil

    5 years ago on Introduction

    My bluetooth module is discovered by Nokia feature phone but Samsung Galaxy Ace can't find it. FYI, Ace is running on Android GingerBread 2.3.6. Is there any problem with class parameter of Bluetooth module?

    My module's documentation goes here :http://www.robokits.co.in/documentation/Bluetooth%20UART%20Module%201545.pdf

    I think this will be helpful to lot of other undocumented module owners cause I have similar module.

    Is there any idea how to make it discovered by Android?

    0
    None
    F4LLCON

    5 years ago on Introduction

    I have done everything in the tutorial, but I don't get any values. The bluetooth does connect because the blinking led on the bluetooth module stops blinking and stays on. But I do not get any values. I have the HC-06 2.0 bought from ebay. Any ideas of what might be wrong? Am a total noob at this. Thanks anyway

    1 reply
    0
    None
    F4LLCONF4LLCON

    Reply 5 years ago on Introduction

    I used the code below with the programs and scripts you provided. It should work right? What am I doing wrong? Please someone help, I really want it to work. I am using:
    "HC-06 Bluetooth V2.0 RF Wireless Transceiver Module Interface RS232 TTL"

    This is my code:

    #define trigPin 13
    #define echoPin 12
    const int LED1 = 8;

    int sensorValue = 0;

    boolean toggle = true;

    void setup() {
      Serial.begin (9600);
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
      pinMode(LED1, OUTPUT);
    }

    void loop() {
     
      if (Serial.available()) {
      Serial.read();
      }
     
      long duration, distance;
      digitalWrite(trigPin, LOW);  // Added this line
      delayMicroseconds(2); // Added this line

      digitalWrite(trigPin, HIGH);
    //  delayMicroseconds(1000); - Removed this line
      delayMicroseconds(10); // Added this line
      digitalWrite(trigPin, LOW);
      duration = pulseIn(echoPin, HIGH);
      distance = (duration/2) / 29.1;
      if (distance >= 200 || distance <= 0){
        Serial.println("Out of range");
        digitalWrite(LED1, LOW);
      }
      else {
        Serial.print(distance);
        Serial.println(" cm");
        digitalWrite(LED1, HIGH);
       
        sensorValue = Serial.print(distance);;
        digitalWrite(LED1, toggle); // toggle the LED
        toggle = !toggle;
      }
      delay(500);
    }

    0
    None
    adagio15

    5 years ago on Step 4

    Hi!
    Is there any way to just send serial command to arduino like the serial monitor in the IDE?
    Anyway, Pretty neat instructable....

    0
    None
    Tone341

    5 years ago on Introduction

    I am using Samsung galaxy note 2. when i run androino.py i get a black screen and then crashes,"unfortunately, SL3A has stopped." any solution?

    0
    None
    loscat

    6 years ago on Introduction

    Nice instruct able. I do have one issue, when I run androino.py it doesn't open the html in a WebView, I see it in plain text :(. Any ideas?

    0
    None
    stretcho

    6 years ago on Introduction

    Excellent, thanks for this - managed to tx/rx data dynamically between my website and my pad and the Arduino - fantastic - thanks again!

    One question, as my Python scripting is not that hot - if I wanted to connect multiple bluetooth modules e.g. 2+ and route them all through my pad to my website how would I poll each module? something like this?.....

    For x = 0 to (amount of bluetooth modules)
    If BT(x) connected/success Then .....
    TX/RX
    End If
    Loop

    0
    None
    instrumentek

    6 years ago on Introduction

    Thank you for this. I have a problem, I loaded everything as per your instructions including the device I. When i load the androino.html it just opens the html file in text form. Is my android O.S. to old? Thanks

    0
    None
    mb1793

    6 years ago on Introduction

    hello i have been having trouble with youre code . every time i run the androino.py code i get this Message
    [SyntaxError: can't assign to operator (androino2.py, line 13)]

    line 13 is the line where i am assigning the BT_DEVICE_ID.

    0
    None
    Melbfella

    6 years ago on Introduction

    Thanks for such a straightforward tutorial - I feel like an idiot having issues, where everyone else seems to have succeeded!

    When I open SLA4, all I see is the html file, not the py file, which is defininately in the same directory as the html one...

    Any thoughts on where I've gone wrong?

    Thanks in advance :)