Bluetooth Interfacing with 8051

In our previous tutorial, we have interfaced the GPS with 8051. In this tutorial, we are going to see Bluetooth interfacing with 8051.

Prerequisites

Before starting this tutorial we should know the below topics. If you know already, please go further.

Components Required

  • 8051 Development Board
  • Bluetooth Module
  • DC Motor
  • L293D (Motor Driver IC)
  • Smart Phone with Bluetooth Terminal App

Bluetooth Module (HC-05)

Introduction

HC‐05 module is an easy-to-use Bluetooth SPP (Serial Port Protocol) module, designed for a transparent wireless serial connection setup. The HC-05 Bluetooth Module can be used in a Master or Slave configuration, making it a great solution for wireless communication. This serial port Bluetooth module is fully qualified Bluetooth V2.0+EDR (Enhanced Data Rate) 3Mbps Modulation with a complete 2.4GHz radio transceiver and baseband. It uses a CSR Bluecore 04‐External single-chip Bluetooth system with CMOS technology and with AFH (Adaptive Frequency Hopping Feature).

The Bluetooth module HC-05 is a MASTER/SLAVE module. By default the factory setting is SLAVE. The Role of the module (Master or Slave) can be configured only by AT COMMANDS. The slave modules cannot initiate a connection to another Bluetooth device but can accept connections. The master module can initiate a connection to other devices. The user can use it simply for a serial port replacement to establish a connection between MCU and GPS, PC to your embedded project, etc.

Hardware Features

  • Typical ‐80dBm sensitivity.
  • Up to +4dBm RF transmit power.
  • 3.3 to 5 V I/O.
  • PIO(Programmable Input/Output) control.
  • UART interface with programmable baud rate.
  • With integrated antenna.
  • With edge connector.

Software Features

  • Slave default Baud rate: 9600, Data bits:8, Stop bit:1,Parity:No parity.
  • Auto‐connect to the last device on power as default.
  • Permit pairing device to connect as default.
  • Auto‐pairing PINCODE:”1234” as default.

Pin Description

The HC-05 Bluetooth Module has 6pins. They are as follows:

ENABLE:

When enable is pulled LOW, the module is disabled which means the module will not turn on and it fails to communicate. When enable is left open or connected to 3.3V, the module is enabled i.e the module remains on and communication also takes place.

Vcc:

Supply Voltage 3.3V to 5V

GND:

Ground pin

TXD & RXD:

These two pins act as a UART interface for communication

STATE:

It acts as a status indicator. When the module is not connected to / paired with any other Bluetooth device, the signal goes Low. At this low state, the led flashes continuously which denotes that the module is not paired with another device. When this module is connected to/paired with any other Bluetooth device, the signal goes High. At this high state, the led blinks with a constant delay say for example 2s delay which indicates that the module is paired.

BUTTON SWITCH:

This is used to switch the module into AT command mode. To enable AT command mode, press the button switch for a second. With the help of AT commands, the user can change the parameters of this module but only when the module is not paired with any other BT device. If the module is connected to any other Bluetooth device, it starts to communicate with that device and fails to work in AT command mode.

Bluetooth Interfacing with 8051

Connection

Bluetooth Module

  • Rx – P3.1 (TxD)
  • Tx – P3.0 (RxD)

DC Motor (L293D Driver)

  • In 1 – P2.0
  • In 2 – P2.1
  • En 1 – Vcc
  • In 3 – P2.2
  • In 4 – P2.3
  • En 2 – Vcc

Bluetooth Interfacing with 8051

Source Code

The program given below is the HC-05 Bluetooth module interfacing with 8051. This process is quite different from others since we are going to use android mobile to control and communicate with 8051. Here the Bluetooth module acts as an interface between our mobile and 8051 board. Before getting into the execution process, follow the given procedure:

  • First of all, the user should install an application called Bluetooth SPP PRO from the play store which is a free application.
  • After installation, pair the Bluetooth module to your mobile as like connecting one device to another using Bluetooth. The default pairing code is 1234.
  • Upload the given program to the 8051 board.
  • The Bluetooth SPP PRO has three types of communication modes. Here Byte stream mode is used to communicate. So select that mode and give the input as below.

F – Forward

R – Reverse

L – Left

W – Right

  • So We can control the motor using Mobile by Bluetooth. We can use this setup for developing robots using Bluetooth.

#include<reg51.h>

sbit IN1 = P2^0;
sbit IN2 = P2^1;
sbit IN3 = P2^2;
sbit IN4 = P2^3;

void ser_int();
unsigned char rx();
void tx(unsigned char a);


void main()
{
    unsigned char get;
    ser_int();
    while(1) {
            get=rx();
            tx(get);
            if(get == 'F') {
                    /*Forward*/
                    IN1 = 1;
                    IN3 = 1;
                    IN2 = 0; 
                    IN4 = 0;
            } else if (get == 'R') {
                    /*Reverse*/
                    IN2 = 1;
                    IN4 = 1;
                    IN1 = 0;
                    IN3 = 0;
                    
            } else if (get == 'W') {
                    /*Right*/
                    IN1 = 1;
                    IN2 = 0;
                    IN3 = 0;
                    IN4 = 0;
                    
            } else if (get == 'L') {
                    /*Left*/
                    IN3 = 1;
                    IN2 = 0;
                    IN1 = 0;
                    IN4 = 0;
                    
            } else if (get == 'S') {
                    /*Off*/
                    IN1 = IN2 = IN3 = IN4 = 0;
            }
    }
}

void ser_int()
{
    SCON=0x50;
    TMOD=0x20;
    TH1=TL1=0xFD;
    TR1=1;
}

unsigned char rx()
{
    while(RI==0);
    RI=0;
    return SBUF;
}

void tx(unsigned char a)
{
    SBUF=a;
    while(TI==0);
    TI=0;
}

In our next tutorial, we will see how to sound sensor interfacing with 8051.

You can also read the below tutorials.

Linux Device Driver TutorialsC Programming Tutorials
FreeRTOS TutorialsNuttX RTOS Tutorials
RTX RTOS TutorialsInterrupts Basics
I2C Protocol – Part 1 (Basics)I2C Protocol – Part 2 (Advanced Topics)
STM32 TutorialsLPC2148 (ARM7) Tutorials
PIC16F877A Tutorials8051 Tutorials
Unit Testing in C TutorialsESP32-IDF Tutorials
Raspberry Pi TutorialsEmbedded Interview Topics
Reset Sequence in ARM Cortex-M4BLE Basics
VIC and NVIC in ARMSPI – Serial Peripheral Interface Protocol
Bootloader Tutorials
0 0 votes
Article Rating
Subscribe
Notify of
guest

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

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
2
0
Would love your thoughts, please comment.x