单片机的蓝牙接收发射模块设计报告.docx
《单片机的蓝牙接收发射模块设计报告.docx》由会员分享,可在线阅读,更多相关《单片机的蓝牙接收发射模块设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
单片机的蓝牙接收发射模块设计报告
单片机的蓝牙接收发射模块设计
09电子信息工程A班
胡传高0915211020
马延涛0915211042
严飞0915261036
目录
第一章引言3
1.1本设计的背景3
1.2本设计的系统方案3
1.2.1系统各模块的选择4
第二章单片机数据传输系统的组成框图4
2.1单片机数据发送模块框图4
2.2PC数据接收模块框图4
第三章单片机数据传输系统硬件设计5
3.1发送与接收模块的单片机最小系统5
3.2发送与接收模块的无线通信模块——BC04-B蓝牙模块5
3.2.1蓝牙技术协议简介5
3.2.2蓝牙技术的核心协议6
3.2.3HCI协议6
3.2.4BC04-B蓝牙模块部分电路7
3.318B20数字温湿度传感器8
3.3.118B20简介8
3.4超声波测距传感器及其电路部分8
3.4.1超声波传感器原理8
3.5单片机数据传输系统的电源部分9
3.6MAX232串口电路10
3.7单片机显示电路10
第四章单片机数据传输系统的软件设计11
4.1单片机数据采集系统的程序流程图11
4.2蓝牙数据收发系统的程序流程图12
第五章单片机数据传输系统调试13
第六章总结14
参考文献14
附录14
第一章引言
1.1本设计的背景
蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。
使用全球通用的2.4GHz频段,即ISM(Industrial、ScientificandMedical)频段,使得蓝牙设备可工作于世界上任何地方;采用了跳频技术,提高了抗干扰性;蓝牙模块具有低成本、低功耗和低辐射的优点;具备认证和加密机制,实现了较高的安全性;应用范围广泛,可应用于无线设备、图像处理设备、安全产品、消费娱乐、汽车产品、家用电器、医疗健身、建筑、玩具等多种领域;支持点对点和点对多点传输,多个蓝牙设备可组成微微网,具备明显的网络特性。
1.2本设计的系统方案
1.2.1系统的功能实现
通过温湿度及距离传感器采集环境的温湿度、距离信号,将信号处理然后通过无线传输到距离十多米的地方进行显示,实现实时监测环境的温度、距离等信息,具有很大的应用前景。
本设计以单片机和蓝牙模块BC04-B为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。
前端数据采集部分由位于现场的传感器、单片机、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。
PC机可以根据指令来控制数据的获取。
1.2.1系统各模块的选择
1.18B20数字温湿度传感器,内部包含一个电容式感湿元件和NTC测温元件,还有A/D转换模块,实现温湿度数字信号输出。
同时18B20又是单总线形式,与单片机相连减少了I/O口的使用。
2.超声波测距模块,利用单片机发送触发信号,产生40HZ的声波信号,经过物体遮挡住返回的时间,可以计算距离。
3.采用STC89C52单片机控制单元[2],产品较为普遍,价格便宜,易于控制。
对STC89C52用C语言编写程序,可读性较好。
4.无线通信采用全球广泛使用的蓝牙技术,本设计采用BC04-B蓝牙模块,该模块可实现二十米的无线数据传输。
5.LCD1602液晶显示器为工业字符型液晶,能够显示32个字符,可实现对数据进行简单显示。
第二章单片机数据传输系统的组成框图
数据传输系统分为发送和接收两个模块:
发送模块主要由温湿度采集模块、距离采集模块、单片机控制模块、蓝牙发送模块、显示模块和电源模块等组成;接收模块主要由蓝牙接收模块、PC控制、串口调试模块组成。
具体框图如下:
2.1单片机数据发送模块框图
信号采集发送过程[3]为18B20、超声波测距模块[4]将信号传给STC89C52单片机,单片机将信号处理,并进行超温湿度、距离报警。
处理后的信号经串口发送给BC04-B蓝牙发射模块发射出去,采用2.4GHZ全球免费波段。
2.2PC数据接收模块框图
信号接收过程为蓝牙适配器接收模块接收信号,将信号通过串口传给PC机,通过串口调试助手显示出来。
PC可以通过串口调试助手给单片机机发送指令,控制数据的获取。
第三章单片机数据传输系统硬件设计
3.1发送模块的单片机最小系统
本系统采用MCS-51系列STC89C52单片机芯片[5]作为发送与接收模块的控制单元,芯片具有如下特点:
(1)抗干扰性强;
(2)低价格;
(3)低功耗:
掉电模式耗电低于0.1uA,正常工作模式为4mA~7mA,掉电模式可由外部中断唤醒,适用于电池供电系统;
(4)通过MAX232电平转换芯片即可进行下载,编程方式灵活,可用C语言进行编写,可读性强,8KB的内部ROM增强编程方便性。
发送与接收模块的控制单元电路原理图如图3.1:
图3.1STC89C52单片机最小系统
图3.1中间部分为STC89C52芯片,该芯片采用40脚双列直插DIP封装,第40脚接+5V电源,第20脚接地,左上部分为复位电路,接单片机的第9脚,但按下键时即对系统进行复位。
左下为晶振电路,采用11.0592MHZ的晶振。
第31脚接高电平。
3.2发送与接收模块的无线通信模块——BC04-B蓝牙模块
3.2.1蓝牙技术的协议简介
蓝牙无线通信的协议标准是由SIG制定的,它规定了蓝牙应用产品应遵循的标准和需要达到的要求。
目前颁布的蓝牙规范有1.0、1.1、2.0、2.1等几个版本。
协议栈由上至下可分为3个部分:
传输协议、中介协议和应用协议。
传输协议负责蓝牙设备间的相互位置确认,以及建立和管理蓝牙设备间的物理和逻辑链路,包括LMP、L2CAP、HCI;中介协议为高层应用协议或程序在蓝牙逻辑链路上工作提供了支持,为应用层提供了各种标准接口,包括:
RFCOMM、SDP、IrDA、PPP、TCP/IP、UDP、TSC和AT指令集等;应用协议是指那些位于蓝牙协议栈之上的应用软甲和其中涉及的协议,包括开发驱动和其他蓝牙应用程序等。
3.2.2蓝牙技术的核心协议
蓝牙技术的核心协议分为四个部分,如下:
(1)基带协议(Baseband)
基带和链路控制层确保网络内部蓝牙设备单元之间由射频构成的物理连接。
(2)连接管理协议(LMP)
负责蓝牙网络内各设备之间连接的建立。
(3)逻辑链路控制和适配协议(L2CAP)
是一个为高层传输层和应用层协议屏蔽基带协议的适配协议,为高层应用传输提供了更加有效和更有利于实现的数据分组格式。
(4)服务发现协议(SDP)
发现服务在蓝牙技术框架中起到了至关重要的作用,它是所有用户模式的基础,是为实现网络中蓝牙设备之间相互查询及访问提供的服务。
在蓝牙系统中,客户只有通过服务发现协议,才能获得设备信息、服务信息以及服务特征,从而在设备单元之间建立不同的SDP层连接[3]。
3.2.3HCI协议
HCI(HostControllerInterface)协议,即主机控制接口协议,属于蓝牙协议栈的一部分,是蓝牙规范定义的一个符合标准的接口,它适用于蓝牙通讯模块的硬件部分。
此定义描述了位于HCI驱动程序(主机的一部分,也即蓝牙通讯模块的使用者)和主机控制器固件(蓝牙通讯模块本身的一部分)之间的接口。
HCI固件通过访问基带命令、硬件状态寄存器、控制寄存器以及时间寄存器实现对蓝牙硬件的HCI指令。
HCI传输层是蓝牙主机与蓝牙主控制器之间的物理接口。
目前,蓝牙HCI传输层的物理接口由通用串行总线(USB)、串行端口(RS232)、通用异步收发器(UART)和个人计算机存储卡。
本系统采用UART方式在蓝牙设备和主控制器之间传输数据。
UART传输层发目标在于可以在同一PCB电路板上两UART之间的串行接口上使用蓝牙HCI协议。
UART传输层假定UART通信不存在线路故障,图1为UART传输层。
图1UART传输层
UART传输层采用了RS232的接口参数配置,如表1:
波特率
厂商指定信息
数据位数
8
奇偶校验位
无奇偶校验位
终止位
1终止位
流控制
RTS/CTS
流完成响应时间
3ms
表1RS232接口参数配置
其中,RTS/CTS流控制用于防止临时UART缓冲区溢出,当CTS为1时,允许蓝牙主机/主机控制器发送,当CTS为0时,禁止蓝牙主机/主机控制器发送。
流完成响应时间则定义了从设置RTS为0到字节流真正结束时的最大时间。
UART信号线采取置空调制解调器模式,RS232信号处于连接状态,即本地TXD连接到远端RXD,本地RTS连接到远端CTS,反之亦然。
UART传输层同时具备纠错功能。
如果当蓝牙主机与主机控制器在RS232通信上失去同步,则必须复位。
RS232通信失去同步意味着已检测到HCI分组指示器或者HCI分组长度超出了范围。
如果蓝牙主机与主机控制器在UART通信失去同步,那么主控制器将发送硬件故障时间,以将同步错误告诉蓝牙主机。
主控制器需要从蓝牙主机接受一个RESET指令以执行抚慰,从而实现重新同步。
3.2.4BC04-B蓝牙模块部分电路
BC04-B蓝牙模块[8,9,10]主要性能参数:
(1)频率:
2.4GHzISMband
(2)调制方式:
GFSK
(3)发射功率等级:
class2
(4)灵敏度:
≦-80dBm
(5)通信速率:
2Mbps
(6)供电电源:
3.3V
(7)工作温度:
-20~+55℃
HC-06蓝牙模块部分电路图如图3.2.1:
图3.2.1HC-06蓝牙模块部分电路
图3.2左边部分为蓝牙芯片,其TX与RX引脚分别接STC89C52的RXD(P3.0)和TXD(P3.1),PIO1接LED灯,当LED常亮时表示蓝牙数据开始传输。
右上部分为电源+5V转为+3.3V电路。
BC04-B蓝牙模块实物如图3.2.2:
图3.2.2BC04-B蓝牙模块
3.318B20数字温湿度传感器
3.3.118B20简介
DHT21数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
该传感器响应快、抗干扰能力强、性价比高等优点。
单总线串行接口,使系统变得简单快捷。
超小的体积、极低的功耗。
主要性能如下:
(1)供电电压范围:
+3.0V~+5.5V;
(2)测温范围:
-55~+125℃。
固有测温分辨率为0.5℃。
当在-10℃~+85℃范围内,可确保测量误差不超过0.5℃,在-55~+125℃范围内,测量误差也不超过2℃;
(3)通过编程可实现9~12位的数字读数方式.
18B20引脚图如图3.3.1。
本设计将1脚接电源+5V,2接STC89C52的I/O口P2.3脚接地。
图3.3.1
3.4超声波测距传感器及其电路部分
3.4.1超声波传感器原理
(1)采用IO触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是 超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;
图3.4.5超声波发送接收原理图
3.5单片机数据传输系统的电源部分
发射与接收模块的电源均用+7.2V的干电池经7805稳压输出+5V的电源,+5V电源在经过ASM1117稳压输出+3.3V。
其电路原理图如图3.5.1。
图中J3的2脚位+7.2V,1脚为地;S4为拨动开关,电容C11、C12、C13、C14均为7805输入输出端的滤波电容;D17为发光二极管,即电源指示灯;D19为1N4007保护二极管,当输入端短路时,给输出电容C14一个放电回路,防止7805被击穿损坏。
图3.5.1+5V电源部分
BC04-B蓝牙模块供电电源由+5V电源在经过ASM1117稳压输出+3.3V供电。
其电路原理图如图3.5.2
图3.5.2+3.3V电源部分
3.6MAX232串口电路
MAX232串口电路主要用于STC89C52单片机程序的烧写以及用于扩展与上位机的通信。
计算机串口采用的是RS232C负逻辑电平,“1”表示-12V,“0”表示+12V,与单片机的的TTL电平不同,因此通过MAX232串口电路实现与计算机进行通信。
其电路图如图3.7,图中的5个电容均为0.1μF的瓷片电容,起到降低芯片的噪声干扰。
MAX232的11脚接STC89C52单片机的TXD(P3.1),12脚接单片机的RXD(P3.0);右下为串口母头,用于与计算机的通信,第3脚(计算机数据输出端)为从计算机输出至单片机端口,第2脚(计算机数据输入端)为从单片机输入至计算机,5脚为地线,其余引脚在此不用。
图3.6MAX232串口电路
3.7单片机显示电路
接收模块显示电路采用LCD1602液晶显示。
LCD1602能显示16个字符×2行,即32个字符。
LCD液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的字符,这些字符有阿拉伯数字、英文字母的大小写、常用符号和日文假名等,每一个字符都有一个固定的ASCII代码。
其引脚说明如表3.8。
编号
符号
引脚说明
编号
符号
引脚说明
1
GND
电源地
9
DB2
数据
2
VCC
电源正极
10
DB3
数据
3
VEE
液晶显示偏压
11
DB4
数据
4
RS
数据/命令选择
12
DB5
数据
5
R/W
读/写选择
13
DB6
数据
6
E
使能信号
14
DB7
数据
7
DB0
数据
15
BLA
背光源正极
8
DB1
数据
16
BLK
背光源负极
表3.8LCD1602引脚说明
LCD1602在本设计中的电路连接图如图3.8,1脚和3脚接地,2脚接电源+5V,4脚接STC89C52
图3.7LCD1602电路连接图
单片机的P2.5,5脚接P2.6,6脚接P2.7,714脚接P0口,15脚串接一个10K的电阻然后接到电源+5V。
第四章单片机数据传输系统的软件设计
单片机数据传输系统软件部分分为数据采集和接收发送数据两个模块[,在此仅分析主程序与各子程序的流程。
涉及的子程序为18B20温湿度子程序,超声波测距子程序,蓝牙收发数据子程序,LCD1602液晶显示子程序。
4.1单片机数据采集系统的程序流程
图4.1系统软件主程序流程图
4.2蓝牙数据收发系统的程序流程
图4.2蓝牙收发程序流程图
第五章单片机数据传输系统调试
系统主要由发送模块和接收模块组成。
用万用表分别检测无短路或断路情况,测得电源部分7805输出端+5V,电源指示灯亮,单片机等各芯片电压正常。
蓝牙模块接上电源LED指示灯正常点亮。
先对温度采集电路进行调试,通过下载软件将HEX文件烧写进入单片机,发现蓝牙能够正常传输数据,测得环境的温度能在PC机上正常显示,温度精确到0.1℃,湿度精确到0.1%,温度的测量范围为-20.0℃+120.0℃。
其次距离采集电路进行调试,下载软件将HEX文件烧写进入单片机,发现蓝牙能够正常传输数据,PC机显示实时距离值。
然后整体系统调试,测得结果在空旷地带,单片机数据传输距离可达30多米;在有障碍物的时候,数据传输距离也可达10几米。
第六章总结
基于蓝牙技术的数据传输系统的设计,以其低成本、低功耗、便携式、高精度的设计理念,实现对环境的温度、距离等数据的实时采集,让人们的生产生活安排的更加合理有序。
蓝牙技术是全球广泛使用的无线通信技术,能够实现短距离快速传输大容量的数据,是短距离数据通信的首选技术,其不断成熟的技术,更是给无线通信领域带来光明的前景,BC04-B蓝牙模块,可传输十几米的距离,较好的完成了设计任务。
参考文献
[1]郭坚.基于STC89C52单片机的多路数据采集控制系统设计[J].装备制造,2010,(4):
234.
[2]张发海.基于单片机STC89C52的LED数码管温度显示及报警器的实现[J].科技信息,2009,(35):
87-88.
[3]何国泉.基于蓝牙的无线接入点设计[J].微型机与应用,2010,29(18):
58-60.
[4]伍春.基于蓝牙的无线传感器网络节点设计与实现[J].计算机应用与软件,2010,27(4):
74-76,101.
[5]付蔚.基于蓝牙芯片的无线通信模块设计与开发[J].微计算机信息,2009,25(102):
178-179,175.
[6]喻宗泉.蓝牙技术基础[M].北京:
机械工业出版,2006.40-95.
附录
系统PCB:
系统程序:
#include
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P2^2;
sbitRS=P3^5;
sbitRW=P3^6;
sbitEN=P3^4;
sbitR=P2^7;
sbitT=P2^6;
unsignedinttime=0;
unsignedlongS=0;
bitflag=0;
unsignedchardisbuff[4]={0,0,0,0,};
unsignedcharcodestr1[]={"rangetemp"};
floatRxBuf,disdata[5];
uinttvalue;//温度值
uchartflag;//温度正负标志
unsignedcharcodeASCII[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M',};
ucharTx,Ax;
/*************************lcd1602程序**************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{
unsignedinti,j;
for(i=0;ifor(j=0;j<100;j++);
}
voidwr_com(unsignedcharcom)//写指令//
{
delay1ms
(1);
RS=0;
RW=0;
EN=0;
P0=com;
delay1ms
(1);
EN=1;
delay1ms
(1);
EN=0;
}
voidwr_dat(unsignedchardat)//写数据//
{
delay1ms
(1);;
RS=1;
RW=0;
EN=0;
P0=dat;
delay1ms
(1);
EN=1;
delay1ms
(1);
EN=0;
}
voidlcd_init()//初始化设置//
{
//BLK=0;
delay1ms(15);
wr_com(0x38);
delay1ms(5);
wr_com(0x08);delay1ms(5);
wr_com(0x01);delay1ms(5);
wr_com(0x06);delay1ms(5);
wr_com(0x0c);delay1ms(5);
}
voiddisplay(unsignedchar*p)//显示//
{
while(*p!
='\0')
{
wr_dat(*p);
p++;
//delay1ms
(1);
}
}
init_play()//初始化显示
{
lcd_init();
wr_com(0x80);
display(str1);
}
/******************************ds1820程序***************************************/
voiddelay_18B20(unsignedinti)//延时1微秒
{
while(i--);
}
voidds1820rst()/*ds1820复位*/
{
unsignedcharx=0;
DQ=1;//DQ复位
delay_18B20(4);//延时
DQ=0;//DQ拉低
delay_18B20(100);//精确延时大于480us
DQ=1;//拉高
delay_18B20(40);
}
uchards1820rd()/*读数据*/
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}
voidds1820wr(ucharwdata)/*写数据*/
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=wdata&0x01;
delay_18B20(10);
DQ=1;
wdata>>=1;
}
}
read_temp()/*读取温度值并转换*/
{
uchara,b;
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0x44);//*启动温度转换*/
ds1820rst();
ds1820wr(0xcc);//*跳过读序列号*/
ds1820wr(0xbe);//*读取温度*/
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
tflag=0;
else
{
tvalue=~tvalue+1;
tflag=1;
}
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小?
tvalue=tvalue-15;
return(tvalue);
}
/*******************************************************************/
voidshow()//温度值显示
{ucharflagdat;
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100;//算出来是CM
disdata[0]=tvalue/1000+0x30;//百位数
disdata[1]=tvalue%1000/100+0x30;//十位数
disdata[2]=t