单片机智能小车无线温度传感NRF24l01 18b20.docx
- 文档编号:7623145
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:30
- 大小:830.92KB
单片机智能小车无线温度传感NRF24l01 18b20.docx
《单片机智能小车无线温度传感NRF24l01 18b20.docx》由会员分享,可在线阅读,更多相关《单片机智能小车无线温度传感NRF24l01 18b20.docx(30页珍藏版)》请在冰豆网上搜索。
单片机智能小车无线温度传感NRF24l0118b20
电子设计(论文)
题目:
基于单片机和nRF24L01的无线温度采集循迹小车
年级专业:
通信工程
学生姓名:
郑志军叶舰刘顺夕
指导教师:
周坚和、袁浩浩
2011年5月7日
目录
摘要3
一.绪论4
概述4
系统设计任务分析4
二.系统硬件设计4
器件选择:
5
主处理器STC89C525
电机驱动芯片L298……………………………………………………………………….5
TCRC5000………………………………………………………………………………….5
温度传感器DS18B205
无线射频收发模块nRF24L016
电路实现:
7
智能小车结构图……………………………………………………………………………8
循迹模块分析………………………………………………………………………………9
采集发送电路12
接收显示电路:
14
三.系统软件设计16
小车循迹程序…………………………………………………………………………………..17
发送部分18
DS18B20的软件设置:
19
复位函数20
数据读取函数21
温度函数23
nRF24L01的软件设置:
23
SPI写函数24
SPI读函数24
nRF24L01初始化函数25
发送函数26
接收部分27
接收模式配置函数:
28
数据接收函数:
28
四.遇到问题及解决方法…………………………………………………………………………..29
五.致谢30
六.参考文献:
30
摘要
本次所做的作品是一种由STC89C52单片机和nRF24L0l型无线数据传输器和高精度的单总线数字温度传感器DS18B20组成的无线温度采集及循迹智能小车;详细阐述该系统的硬件和软件设计要点;给出基于STC89C52设计智能循迹小车和根据nRF24L01设计硬件接口电路以及程序代码;并讨论该智能循迹小车在无线温度采集系统中的应用
关键词:
nRF24L01;无线数据传输;STC89C52;智能循迹小车;DSl8B20
Abstract
ThisarticleisabouttheintelligenttrackingvehicleandwirelessdatatransmissionsystemwhichiscomposedofSTC89C52MCU,nRF24L01wirelessdatatransmissiondeviceandhighprecisionDS18B201-wiredigitalthermometer.Itmainlyintroducesthecharacteristicofthedesignaboutthehardwareandthesoftwareinthissystem.TheintelligenttrackingvehiclebasedonSTC89C52andthehardwareinterfacebasedonnRF24L01andtheprogramcodeareincludedinthisarticle.Andatlast,wediscusstheintelligenttrackingvehiclethehowtoworkinthewirelesstemperaturegatheringsystem.
Keywords:
nRF24L01;wirelessdatatransmission;STC89C52;IntelligenttrackingVehicle;DS18B20
一.绪论
概述
随着科技的不断发展,智能化作为现代的新发明,是以后发展的方向,智能化体现在它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理可以应用于科学探测,无人区域的检测等用途。
同时,现代社会对各种信息参数的准确度和精确度的要求都有了更高的要求,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。
在三大信息技术:
信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
一般的温度采集系统所采集的温度通常通过Rs485、CAN总线通信方式传输至上位机,但这种方式维护较难.不利于工业现场生产;而无线通信GPRS技术传输距离长,通信可靠稳定,但设计复杂、成本昂贵。
这里采用工业级内置硬件链路层协议的低成本单芯片nRF24L01型无线收发器件实现系统间的无线通信,完成无线信号的接收、显示功能。
本次所设计的基于单片机和NRF24L01的无线温度采集循迹小车相比较传统的定点温度采集系统,它的优越性体现在1:
灵活性,即是随着智能循迹小车的前进,它能随时监测实时温度;2:
监测温度范围广阔:
在智能小车所能到达的地域里,都能监测实时温度,而不是像传统的温度监测系统,只是定点监测一个较小的范围。
本次设计的目的就是让我们在理论学习的基础上,通过完成一个传感品器件的设计,使我们学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
系统设计任务分析
本系统的设计采用了Nordic公司新推出的工作于2.4GHz频段NRF24L01射频芯片,并有低功耗单片机STC89C52RC控制电机L298驱动小车前进和实现短距离无线数据通信。
该接口设计具有成本低、功耗低、传输速率高、软件设计简单以及通信稳定可靠等特点。
整个系统有发送和接收二部分,发送部分:
在传统的智能循迹小车上添加温度传感器DS18B20,液晶模块,无线发送模块,通过NRF24L01无线数据通信收发模块来实现无线数据传输。
发送部分以单片机STC89C52为核心驱动电机L298实现小车循迹功能,再使用温度转换芯片DS18B20实时采集温度并通过液晶LCD显示。
将采集的温度无线传送给接收部分,然后再在接收部分(液晶LCD)上显示。
本系统的核心控制芯片选用的是STC89C52RC。
单片机在各个技术领域中的迅猛发展,与单片机所构成的计算机应用系统的特点有关:
·单片机构成的应用系统有较大的可靠性。
·系统构建简洁、易行,能方便的实现系统功能。
·由于构成的系统是一个计算机系统,相当多的功能由软件实现,故具有柔性特点和优异的性能价格比。
二.系统硬件设计
系统硬件设计主要由智能循迹小车温度采集发送和实时接收显示温度两部分组成。
器件选择:
主要元器件有STC89C52,L298,TCRC5000循迹光耦,DS18B20,液晶1602和nRF24L01无线收发模块。
STC89C52
STC89C52是增强型8051单片机.它基于标准的MCS-51单片机体系结构和指令系统,集成了时钟输出和向上或向下计数器等更多的功能。
80C52内置8位中央处理器、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
L298
L298N为SGS-THOMSONMicroelectronics所出产的双全桥步进电机专用驱动芯片(DualFull-BridgeDriver),内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准
TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以透过电源来调节输出电压;此芯片可以直接由单片机的I/O端口来提供模拟时序信号。
TCRT5000
TCRT5000光电传感器模块TCRT50000红外传光电感设计的一款红外反射式光电反应开关,传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,输出信号经施密特电路整形,稳定可靠,本次设计的作品采用他的黑白线检测应用。
DS18B20
DS18B20是DALLAS公司生产的单总线数字1-Wire温度传感器,可把温度信号直接转换成串行数字信号供单片机处理,采用1-Wire接口。
具有CRC校验功能,有极强的抗干扰纠错能力;支持多点组网功能,可实现组网多点测温;适应电压范围更宽,电压范围从3.0到5.5V,在寄生电源方式下还可由数据线供电;测量温度范围大,从-55℃~+125℃到都可以正常工作;可编程的分辨率为9~12位,可实现高精度测温;封装形式多样,体积小,使用方便,适用各种狭小的空间数字测温和控制领域.
nRF24L01
nRF24L01是一款新型单片射频收发器件,工作于2.4GHz~2.5GHzISM频段。
内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。
nRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有12.3mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。
nRF24L01主要特性如下:
GFSK调制:
硬件集成OSI链路层;
具有自动应答和自动再发射功能;
片内自动生成报头和CRC校验码;
数据传输率为lMb/s或2Mb/s;
SPI速率为0Mb/s~10Mb/s;
125个频道:
与其他nRF24系列射频器件相兼容;
QFN20引脚4mm×4mm封装;
供电电压为1.9V~3.6V。
nRF24L01的CE,CSN,SCK,MOSI,MISO.IRQ引脚可接STC89C52的任意端口,但需在编程时注意
nRF24L01工作模式
通过配置寄存器可将nRF241L01配置为发射、接收、空闲及掉电四种工作模式,如表所示。
表2.2:
模式
PWR_UP
PRIM_RX
CE
FIFO寄存器状态
接收模式
1
1
1
-
发射模式
1
0
1
数据在TX FIFO 寄存器中
发射模式
1
0
1→0
停留在发送模式,直至数据发送完
待机模式2
1
0
1
TX FIFO 为空
待机模式1
1
-
0
无数据传输
掉电
0
-
-
-
待机模式1主要用于降低电流损耗,在该模式下晶体振荡器仍然是工作的;
待机模式2则是在当FIFO寄存器为空且CE=1时进入此模式;
待机模式下,所有配置字仍然保留。
在掉电模式下电流损耗最小,同时nRF24L01也不工作,但其所有配置寄存器的值仍然保留。
nRF24L01引脚功能及描述
nRF24L01的封装及引脚排列如图所示。
各引脚功能如下:
图2.6nRF24L01封装图
CE:
使能发射或接收;
CSN,SCK,MOSI,MISO:
SPI引脚端,微处理器可通过此引脚配置nRF24L01:
IRQ:
中断标志位;
VDD:
电源输入端;
VSS:
电源地;
XC2,XC1:
晶体振荡器引脚;
VDD_PA:
为功率放大器供电,输出为1.8V;
ANT1,ANT2:
天线接口;
IREF:
参考电流输入。
电路实现:
1.智能循迹小车
我们在传统的智能循迹小车上添加了NRF24L01无线收发模块,DS18B20温度传感器,液晶1602
(1)智能小车结构图
(2)电机驱动模块介绍
p^3.5,p^3.7控制in1和in3的高低电平输出来驱动电机的工作
(3)循迹模块
循迹电路分析:
一、有光照情况光敏电阻R1变小V2变大,假设V2=4.6VT,V3电压=4V,反向端大于同向端,参考模电课程,运放作为比较器部分,则OUT5输出低电平为低0给单片机识别,单片机通过if来扫描out5给的引脚
二、、无光照情况:
光敏电阻R1变大,V2变小,假设V2=3.2V,V3电压不变还是4V,V2 (循迹电路分析图) 五路循迹模块分析 先分析一路循迹原理 (一)没有检测到黑线,则H4发光到白纸光反射到H4接收端,H4接收端导通,导通则T1接地=0 (二)有检测到黑线,则H4发光到黑线光全部被吸收,H4接收端,没有收到任何信号,因为H4不导通(截止),则T1=VCC (三)检测到白纸有接收到反射光LM324,2脚比较器反向端T1=0V,3脚比较器同向端=3V,同向端大于反向端则OUT1输出1 (四)检测到黑线没接收到反射光了LM3242脚比较器反向端T1=5V,3脚比较器同向端=3V,反向端大于同向端则OUT1输出0 (五)调试方法,黑色物体遮挡传感器检测T1脚电压变化是否正常,调节电位器R13,使得3脚电压介于(2脚)T1电压的最大和最小值之间 所以五路循迹原理图就如下图所示 2.温度采集及显示部分 该电路主要由温度传感器DSl8B20、单片机STC89C52和nRF24L01以及液晶1602组成。 整个电路分为三个部分: 温度检测部分,温度发送部分,温度显示部分 温度发送部分: 从STC89C52上得到已经转换好的温度值,并通过nRF24L01发送出去 图中的HEADER4X2为nRF24L01, 温度检测部分: 负责温度的采集,并把采集到并转换好的温度传到STC89C52上 温度显示部分: 从STC89C52上得到采集转换好的温度并通过液晶1602显示出来 3无线接收部分 该电路采用和发送电路相似的设计,主要由单片机STC89C52和nRF24L01以及液晶1602组成。 整个电路分为两个部分: 温度接收部分,温度显示部分 温度接收部分: 接收温度 图中的HEADER4X2为nRF24L01, 温度显示部分: 把接收到的温度显示出来 三.系统软件设计 与硬件相对应的,软件部分也有三部分: 智能小车循迹,温度采集发送部分和接收显示部分 小车循迹流程图 小车循迹方程 //****************************小车控制定义************************************ uchari=0,j=0,f,zhuangt; sbitP10=P1^0;//循迹传感器最左有测得信号低电平有效 sbitP11=P1^1;//循迹传感器次左有测得信号 sbitP12=P1^2;//循迹传感器中有测得信号 sbitP13=P1^3;//循迹传感器次右有测得信号 sbitP14=P1^4;//循迹传感器最右有测得信号 sbitP23=P3^4;//单片机输出到L298N控制电机左后退 sbitP24=P3^5;//单片机输出到L298N控制电机左前进 sbitP25=P3^6;//单片机输出到L298N控制电机右后退 sbitP26=P3^7;//单片机输出到L298N控制电机右前进 //******************************小车循迹函数*********************** voidzuo()//左走 {P23=1; P24=0; P25=0; P26=0; } voidyou()//右走 {P23=0; P24=0; P25=1; P26=0; } voidzhi()//停止 {P23=1; P24=0; P25=1; P26=0; } voidting()//直走 {P23=0; P24=0; P25=0; P26=0; } voidzhuangtai() { zhuangt=(P1|0xe0);//屏蔽高三位,检测到黑线输入低电平0 switch(zhuangt) {case0xf7: i=1;zuo();break; case0xef: i=2;zuo();break; case0xe7: i=3;zuo();break; case0xe3: i=4;zuo();break; case0xf3: i=5;zuo();break; case0xfe: j=1;you();break; case0xfc: j=2;you();break; case0xf8: j=3;you();break; case0xf9: j=4;you();break; case0xfd: j=5;you();break; case0xfb: f=1;zhi();break; case0xf1: f=2;zhi();break; case0xe0: ting();break; case0xff: if(i==1||i==2||i==3||i==4||i==5){i=0;zuo();} if(j==1||j==2||j==3||j==4||j==5){j=0;you();} if(f==1||f==2){f=0;zhi();}break; default: zhi(); } 发送部分 数据采集发送部分上电后首先配置nRF24L01的相关寄存器,使其工作在发射状态,然后复位DS18B20,向DS18B20发送温度转换命令,读取已转换的温度值,然后由nRF24L01发送,其流程如图所示。 是否 DS18B20的软件设置: DS18B20是单总线器件.其硬件接口比较简单,这是以相对复杂的软件编程为代价的。 DS18B20与单片机的接口协议也是通过严格的时序来实现的。 虽然增加软件开销,但由于STC89C52运行速度快,可以满足系统要求。 另外,对DS18B20操作的程序必须按照初始化,ROM操作命令,存储器操作命令.执行数据的先后顺序进行。 如果总线上只挂1个DS18B20.初始化后可执行跳过ROM命令,再发送温度转制命令。 温度转换完成后,将温度值暂存在发送缓冲区tx_buf中.然后通过nRF24L0l发送。 其编程主要的难点在于对时序的编程控制。 其相关程序主要代码如下: 复位函数 (1)先将数据线置高电平“1”。 (2)延时(该时间要求的不是很严格,但是尽可能的短一点) (3)数据线拉到低电平“0”。 (4)延时(该时间的时间范围可以从480到960微秒)。 (5)数据线拉到高电平“1”。 (6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。 据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 (7)若CPU读到了数据线上的低电平“0”后,还要做延时,最少要240微秒。 (8)将数据线再次拉高到高电平“1”后结束。 其时序图如下: voidds_reset(void)//复位及存在检测(通过存在脉冲(60到240us的低电平)可以判断DS1820是否损坏,) { chartemp=1; while(temp) { while(temp) { DQ=1;//DQ复位 _nop_();_nop_();//稍做延时 DQ=0;//单片机将DQ拉低 delay1(80);//精确延时大于480us DQ=1;//拉高总线 delay1(9);//延时15到60us temp=DQ;//如果x=0则初始化成功x=1则初始化失败 } delay1(64);//使延时大于240us,确保DQ此时不是应答脉冲,即DQ=1 temp=~DQ;//temp=0,退出外循环 } DQ=1; } 数据写入函数 (1)复位数据线后先置低电平“0”。 (2)延时确定的时间为15微秒。 (3)按从低位到高位的顺序发送字节(一次只发送一位)。 (4)延时时间为45微秒。 (5)将数据线拉到高电平。 (6)重复上 (1)到(6)的操作直到所有的字节全部发送完为止。 (7)最后将数据线拉高。 其时序图如下: voidwrite_byte(ucharvalue) { uchari; for(i=8;i>0;i--) { DQ=1;_//复位DQ nop_();_nop_(); DQ=0;//拉低总线,产生写信号 _nop_();_nop_();_nop_();_nop_();_nop_();//延时15us内 DQ=value&0x01;//发送数据 delay1(9);//延时至少60us,写时序至少要60us value>>=1;//下移一位 } DQ=1; delay1 (1); } 数据读取函数 (1)将数据线拉高“1”。 (2)延时2微秒。 (3)将数据线拉低“0”。 (4)延时15微秒。 (5)将数据线拉高“1”。 (6)延时15微秒。 (7)读数据线的状态得到1个状态位,并进行数据处理。 (8)延时30微秒。 其时序图如下: ucharread_byte(void) { uchari; ucharvalue1=0; for(i=8;i>0;i--) { DQ=1;//复位DQ _nop_();_nop_();//稍作延时 value1>>=1;//读下一位 DQ=0;//拉低总线,产生读信号 _nop_();_nop_();_nop_();_nop_();//稍作延时,以满足时序 DQ=1;//释放总线,准备读数据 _nop_();_nop_();_nop_();_nop_();//稍作延时,读数据 if(DQ)//DQ为1读1,DQ为0读0 value1|=0x80; delay1(9);//延时60us } DQ=1; return(value1);//返回读取的数据 } 温度函数 把采集到的温度转换成数字温度 voidread_temp() { ds_reset();//复位DS18B20 write_byte(0xcc);//跳过读序号列号的操作 write_byte(0xbe);//读取温度寄存器等(共可读9个寄存器)前两个就是温度 temp_da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机智能小车无线温度传感NRF24l01 18b20 单片机 智能 小车 无线 温度 传感 NRF24l01 18 b20