Bluetooth technology creates a big evolution in way the devices communicate with each other. So it is important to learn interfacing Bluetooth with our MCU’s to build extended system also it offers facility to wireless control. This tutorial focuses in interfacing Bluetooth module with 8051 microcontroller. We are going to use a module known as HC05 in our tutorial.
At the end of this tutorial you will be able to:
INTERFACING BLUETOOTH MODULE WITH 8051 (HC05):
A Bluetooth module widely used with Microcontroller to enable Bluetooth communication. This module cam be interfaced using the UART in 8051 microcontroller where the data are transmitted in the form of packets. The pins TX and RX pin of the HC 05 form the path for data transmission and reception. These TX pin of HC05 must be connected to the RX pin of 8051 and vice versa. Whereas the key pin of the module is used to set the password for pairing the module with our devices.
APPLICATION:
Snapshot of BT terminal Application |
Our devices such as mobile and PC’s need special applications known as “Bluetooth Terminal” to communicate with our microcontrollers via Bluetooth. Not to worry, there are plenty of apps you can find in the internet. These apps are available in plenty irrespective of the you device OS Android, Windows , Mac whatever it may be. Just run a search such as Bluetooth Terminal for “OS name” and search engines will take you to the destination.
These applications are developed in such a way to send characters through your device BT which was received by the BT module connected with our controller. Even some apps offers some interactive GUI buttons which transmits specific characters with the press of each buttons. Later the received character can be processed in our code and force the controller to perform tasks based on the received character. We can use the Bluetooth communication in two ways, either we can use it to receive data from the Controller or control the system using our device Bluetooth.
SCHEMATIC DESIGN:
STEPS TO PROGRAM:
- This uses Serial Communication or UART protocol in the 8051 , so those who are not familiar with this kindly go through this article on “UART tutorial in 8051” and “UART interrupt” before getting started with BT interface.
- Initialize the Serial communication in 8051 using Timer and serial registers.
- Generate the required baud rate for the communication to take place. The default baud rate of the HC05 is 9600.
- Initialize serial interrupts in case you need to control the tasks performed by your microcontroller or receive data when requested.
SAMPLE CODE:
The below code was built using Keil uVision 4.
FOR RECEIVING DATA FROM CONTROLLER VIA BT:
Here a specific data can be transmitted whenever a interrupt request occurred from our device via bluetooth. In the below code a processed data was transmitted to our device from the controller when a serial interrupt occurs.
#include<regx51.h> #include<stdio.h> #include<string.h> int a,b,ans; char rec[4]; void main() { a=80; b=40; ans=a+b; sprintf(rec, "%d", ans); TMOD=0x20; //Choosing Timer mode TH1=0xFD; //Selecting Baud Rate SCON=0x50; //Serial mode selection TR1=1; IE=0x90; //Enabling Serial Interrupt while(1); } void ser_intr(void)interrupt 4 //Subroutine for Interrupt { IE=0x00; short int i; for(i=0;i<=2;i++) //Transmitting data { SBUF=rec[i]; while(TI==0); TI=0; } IE=0x90; }
CODE FOR CONTROLLING CONTROLLER TASKS VIA BT:
Here a specific task is performed on interrupt occurence in the controller via BT. Consider a Motor was connected in P2.0 & P2.1 of the controller and we are about to control its direction of rotation via BT from our device. Sending character “F” will make the motor to rotate clockwise whereas “R” will make the motor to rotate in anti clockwise direction.
#include<regx51.h> sbit mot1=P2^0; sbit mot2=P2^1; void main() { ////////// Initialize serial communication and activate interrupts. ////////// } void ser_intr(void)interrupt 4 //Subroutine for Interrupt { char c; IE=0x00; while(RI==0); c=SBUF; if(c=='F'); //Controlling motor { mot1=1; mot2=0; } else if(c=='R') { mot1=0; mot2=1; } IE=0x90; }
Hope you like this tutorial, leave your queries and feedback in the below comment box.
sir i made to bluthoot control home automation 89c52 using but its project not run more problme come in this projects can you tell me about my project
Sorry couldn’t understand what you are asking for, kindly state them clearly
Hello! Your posting helped me a lot!
I have a question.
I want to transfer data from 8051 to bluetooth.
I was tried using command like trasmit and Txchar but it can’t.
How can i do it?
hI
Hi Frank, I am confused why u have connected RXD of AT89S52 to TXD of HT-05 and vice versa.
That is easy because the HC-05 will transfer data thus TXD and the processor will be receiving data from the HC-05 thus receive being RXD and vice versa.
Yeah that’s right
because RXD of uc receive the data from HT-05 of TXD & vice versa
Hi, is there no need of hc-05 or usart header file
Sam,
No the below code is sufficient.
sir can we use as it is voice base e notice board
Bhavanesh,
Yes you can but you need an AMR voice app or similar apps to translate your voice to text but all words may not be translated accurately.
How to display it on lcd
Pinky,
What you intend to display on LCD, please specify.
The message which I send through Bluetooth should b displayed on LCD.. how can I do that
Pinky,
Refer to this LCD interface tutorial https://www.gadgetronicx.com/programming-lcd-4-8-bit-mode-8051/ . hope it helps