Bluetooth Android Controlled MBED

Remote control MBED applications using Bluetooth as wireless protocol

There have been several blogs on how to communicate with MBED using a Bluetooth module (HC-05 ) module. I will try to bring all the information on one page from android application development to firmware on MBED. Hope this helps :)

Ingredients of the experiment

Connecting HC05 with MBED

Pin- HC05Pin-MBED
1-TxP10 - Rx
2 - RxP9 - Tx
12 - 3.3VVout - 3.3V
13 - GNDGND
31 - PIO8--
32 - PIO9- -
34 - PIO11GND or 3.3V

Hardware

Building Android App

Main Screen

There are 4 buttons which are by default assigned values as follows .

ButtonAssigned Value
Button#149
Button#250
Button#351
Button#452

The assigned value is sent once and is seen in "send" box ! The values assigned to button#x can be modified by updating the text box at the bottom of the application .

/media/uploads/prabhuvd/application_snapshot.jpg

Button Logic

/media/uploads/prabhuvd/button_logic.png Finally the button logic logic is same for all the four buttons , the data is read from the text box and sent over bluetooth , the data is entered in italic .csv format bold 11,22,33 or simply bold 11 for a single byte .

The text box is updated !! Followed , by the send operation , one byte of data (length byte) is read and indicates the total byte that will be sent by MBED . Once the length byte is received , the bluetooth module reads so many bytes of information.

LengthByte 1Byte 2Byte 3Byte 4.....
n11223344..n bytes

Check out the video

Firmware for MBED

include the mbed library with this snippet

#include "mbed.h"

Serial pc(USBTX, USBRX);
Serial device(p9, p10);
 
DigitalOut led1(LED1); /*On board LED 1*/
DigitalOut led2(LED2); /*On board LED 2*/
DigitalOut led3(LED3); /*On board LED 3*/
DigitalOut led4(LED4); /*On board LED 4*/
unsigned char recivedchar;

void send_bytes(uint8_t len ,uint8_t data)
{
    device.putc(len);
    while(len>0) {
        device.putc(data);
        len--;
    }
}

int main()
{
    unsigned char rx;
    device.baud(9600);
    while(1) {

        if(pc.readable()) {
            rx = pc.getc();
            device.putc(rx);
            pc.printf("\n\nreceived : %x",rx);
            pc_activity = !pc_activity;
        }

        if(device.readable()) {
            rx =device.getc();
            pc.printf("\n Received %x \nSending : %x",rx,rx);
            switch (rx) {
                case 49:
                    send_bytes(1,rx);
                    break;
                case 50:
                    send_bytes(2,rx);
                    break;
                case 51:
                    send_bytes(3,rx);
                    break;
                case 52:
                    send_bytes(4,rx);
                    break;
            }
 
        }
    }
}


All wikipages