无线遥控智能环境监测车概要.docx
- 文档编号:29570132
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:34
- 大小:119.16KB
无线遥控智能环境监测车概要.docx
《无线遥控智能环境监测车概要.docx》由会员分享,可在线阅读,更多相关《无线遥控智能环境监测车概要.docx(34页珍藏版)》请在冰豆网上搜索。
无线遥控智能环境监测车概要
摘要
我们制作无线遥控智能环境监测车,用于火场和救援人员无法进入的环境中进行探测,能够及时的将内部信息传递给救援人员,以便及时的做出营救方案,能够为为救援节省时间。
整机分为两部分,第一部分为控制显示部分,主要是实现无线遥控小车的行驶和接收车子发送的温度和显示环境中的一些基本情况,第二部分为检测部分,主要设在小车上,小车进入后,检测到温度后,通过射频模块无线发送,发射距离大于200米。
并且车子上装有全方位摄像头,外部人员可以通过摄像头观察到内部的基本情况。
本设计主要创新点在于成本低,功耗小,操作方便,体型小巧,携带方便,对于出现灾害人暂时无法进入的环境中有明显作用。
关键词:
单片机;射频模块;温度显示;摄像头;无线遥控;救难;
目录
摘要I
一、背景意义2
二、概要设计3
2.1显示控制硬件部分:
3
2.2机器车硬件部分:
3
三、详细设计4
3.1显示电路4
3.2电机驱动控制电路4
3.2.1键盘电路原理4
3.2.2电机驱动电路的设计及使用方法5
3.3无线发送接收电路5
3.3.1射频收发器nRF9055
3.3.2nRF90运行过程6
3.4温度传感电路26
3.4.1DS18B20工作原理和电路设计26
3.5摄像头显示29
3.6其它硬件控制电路设计29
3.6.1电源电路29
四、总结30
五、参考文献31
一、背景意义
随着电子技术、计算机技术和制造技术的飞速发展,数码相机、DVD、洗衣机、汽车等消费类产品越来越呈现光机电一体化、智能化、小型化等趋势。
各种智能化小车在市场玩具中也占一个很大的比例。
根据美国玩具协会的调查统计,近年来全球玩具销量增幅与全球平均GDP增幅大致相当。
而全球玩具市场的内在结构比重却发生了重大改变:
传统玩具的市场比重正在逐步缩水,高科技含量的电子玩具则蒸蒸日上。
美国玩具市场的高科技电子玩具的年销售额2004年交2003年增长52%,而传统玩具的年销售额仅增长3%。
英国玩具零售商协会选出的2001圣诞节最受欢迎的十大玩具中,有7款玩具配有电子元件。
从这些数字可以看出,高科技含量的电子互动式玩具已经成为玩家行业发展的主流。
如今知识工程、计算机科学、机电一体化和工业一体化等许多领域都在讨论智能系统,人们要求系统变得越来越智能化。
显然传统的控制观念是无法满足人们的需求,而智能控制与这些传统的控制有机的结合起来取长补短,提高整体的优势更好的满足人们的需求。
随着人工智能技术、计算机技术、自动控制技术的迅速发展,智能控制必将迎来它的发展新时代。
计算机控制与电子技术融合为电子设备智能化开辟了广阔前景。
因此,遥控加智能的技术研究、应用都是非常有意义而且有很高市场价值的。
本设计采用的有线摄像头监控,机器车可以很好的在预定环境中进行检测,并且可以了解内部环境,以便控制机器车执行一步步的任务。
智能救援小车实现无线遥控寻迹功能、温度检测和无线收发功能,这对一些检测人类无法进入的环境中有很大的作用。
二、概要设计
2.1显示控制硬件部分:
显示控制部分,采用51单片机作为系统的控制中心,进行数学运算、对无线发送接收模块送来的信号进行处理,通过LCD显示实时温度、并且在外接电脑上显示摄像头传来的内部情况、键盘控制、无线发送接收模块。
2.2机器车硬件部分:
机器车硬件部分,采用51单片机作为系统的控制中心,进行数学运算、对温度传感器和无线发送接收模块送来的信号进行处理,接收到操作人员的指令,驱动机器车运动到指定地点,测量实时温度、无线发送接收模块发送给显示器。
三、详细设计
3.1显示电路
无线接收系统采用LCD1602与单片机连接,控制LCD的字符显示,8位数据线分别连接到51单片机的P0口,并且利用I/O口的P2.0~P2.2作为LCD的控制线。
3.1.1LCD1602基本原理
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
3.2电机驱动控制电路
3.2.1键盘电路原理
根据需求,本系统设计使用了标准的3×3键盘,用P1.3~P1.5连接键盘的列信号,用P1.0~P1.2连接键盘的行信号。
采用低电平逐行扫描的方式,判断按键的状态。
3.2.2电机驱动电路的设计及使用方法
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二组和四相电机的专用驱动器,即内含两个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V,2A以下的电机。
3.3无线发送接收电路
3.3.1射频收发器nRF905
nRF905内部寄存器
射频寄存器的各位的长度是固定的。
然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS4个寄存器使用字节数由配置字决定。
nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。
RF905在使用中,根据不同需要,其电路图不尽相同。
3.3.2nRF90运行过程
收发端程序流程图:
单片机串口对无线收发模块收发状态转换的控制,可通过设置控件的属性来实
现。
图4-3为发送端程序流程图,图4-4为接收端程序流程图。
是否
图1发送端的程序流程图
程序:
无线控制发送
#include
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
voidDelay1(unsignedintnum);
#defineBYTE_BIT00x01
#defineBYTE_BIT10x02
#defineBYTE_BIT20x04
#defineBYTE_BIT30x08
#defineBYTE_BIT40x10
#defineBYTE_BIT50x20
#defineBYTE_BIT60x40
#defineBYTE_BIT70x80
////////////SPI指令
#defineWC0x00
#defineRC0x10
#defineWTP0x20
#defineRTP0x21
#defineWTA0x22
#defineRTA0x23
#defineRRP0x24
bdataunsignedcharDATA_BUF;
#defineDATA7((DATA_BUF&BYTE_BIT7)!
=0)
#defineDATA0((DATA_BUF&BYTE_BIT0)!
=0)
sbitflag=DATA_BUF^7;
sbitflag1=DATA_BUF^0;
ucharTxRxBuf[4]={0x00,0x00,0x00,0x00};
//配置口定义//
sbitTXEN=P2^3;
sbitTRX_CE=P3^3;
sbitPWR=P2^4;
//SPI口定义//
sbitMISO=P3^5;
sbitMOSI=P2^7;
sbitSCK=P3^4;
sbitCSN=P3^0;
sbitAM=P2^1;
//状态输出口//
sbitDR=P2^6;
sbitCD=P2^5;
//////////////////////////////////////////////////////
voiddelay1(uinti);
//RF寄存器配置//
//--------------------------------------------NRF905寄存器配置--------------------------------------------------
unsignedcharidataRFConf[11]=
{
0x00,//配置命令//
0x9f,
0x0c,
0x44,
0x01,0x01,
0xe7,0xe7,0xe7,0xe7,
0x58,//CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
};
codeTxAddress[4]={0xe7,0xe7,0xe7,0xe7};
///////////延时/////////////////
staticvoiddelay(uchara)
{uintb,c;
for(b=a;b>0;b--)
for(c=120;c>0;c--);
}
voidSpiWrite(unsignedcharsend)
{
unsignedchari;
DATA_BUF=send;
for(i=0;i<8;i++)
{
if(DATA7)//总是发送最高位
{
MOSI=1;
}
else
{
MOSI=0;
}
SCK=1;
DATA_BUF=DATA_BUF<<1;
SCK=0;
}
}
////////////////初始化nRF905///////////////////
voidnRF905Init(void)
{
CSN=1;//Spidisable
SCK=0;//Spiclocklineinitlow
DR=0;//InitDRforinput
AM=0;//InitAMforinput
CD=0;//InitCDforinput
PWR=1;//nRF905poweron
TRX_CE=0;//SetnRF905instandbymode
TXEN=0;//setradioinRxmode
}
////////初始化寄存器
voidConfig905(void)
{
uchari;
CSN=0;//Spienableforwriteaspicommand
//SpiWrite(WC);//Writeconfigcommand写放配置命令
for(i=0;i<11;i++)//Writeconfigrationwords写放配置字
{
SpiWrite(RFConf[i]);
}
CSN=1;//DisableSpi
}
/////////////发送数据
voidTxPacket(uchar*TxRxBuf)
{
uchari;
//Config905();
CSN=0;
SpiWrite(WTP);//Writepayloadcommand
for(i=0;i<1;i++)
{
SpiWrite(TxRxBuf[i]);//Write32bytesTxdata
}//Spienableforwriteaspicommand
CSN=1;
delay
(1);//Spidisable
CSN=0;//Spienableforwriteaspicommand
SpiWrite(WTA);//Writeaddresscommand
for(i=0;i<4;i++)//Write4bytesaddress
{
SpiWrite(TxAddress[i]);
}
CSN=1;//Spidisable
TRX_CE=1;//SetTRX_CEhigh,startTxdatatransmission
delay
(1);//while(DR!
=1);
TRX_CE=0;//SetTRX_CElow
}
////////////////////////////////////////////////////
voidSetTxMode(void)
{
TRX_CE=0;
TXEN=1;
delay
(1);//delay1formodechange(>=650us)
}
voidTX(void)
{
SetTxMode();//SetnRF905inTxmode
//SetRF_PA_PWR(unsignedchari);//设置发射功率
}
voidDelay1(unsignedintnum)
{
while(--num);
}
ucharkeyscan()
{uchartemp,a;
while
(1)
{P1=0xdf;
temp=P1;
temp=temp&&0x0f;
if(temp!
=0x0f)
{
delay(10);
if(temp!
=0x07)
{
temp=P1;
switch(temp)
{case0xde:
a=1;break;
case0xdd:
a=2;break;
case0xdb:
a=3;break;
}
}
}
P1=0xef;
temp=P1;
temp=temp&&0x07;
if(temp!
=0x0f)
{
delay(10);
if(temp!
=0x0f)
{
temp=P1;
switch(temp)
{case0xee:
a=4;break;
case0xed:
a=5;break;
case0xeb:
a=6;break;
}
}
}
P1=0x37;
temp=P1;
temp=temp&&0x07;
if(temp!
=0x07)
{
delay(10);
if(temp!
=0x07)
{
temp=P1;
switch(temp)
{case0x3e:
a=7;break;
case0x3d:
a=8;break;
case0x3b:
a=9;break;
}
}
}
returna;
}
}
voidmain(void)
{ucharb;
nRF905Init();
Config905();
Delay1(500);
while
(1)
{
b=keyscan();
TxRxBuf[0]=b;
TX();
TxPacket(TxRxBuf);
}
}
否
是
否
是
图2接收端程序流程图
程序:
#include
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
//配置口定义//
ucharcodetable0[]="TheTEMPis:
";
ucharcodetable1[]=".c";
ucharnum;
sbitlcden=P1^0;
sbitlcdrs=P1^1;
#defineBYTE_BIT00x01
#defineBYTE_BIT10x02
#defineBYTE_BIT20x04
#defineBYTE_BIT30x08
#defineBYTE_BIT40x10
#defineBYTE_BIT50x20
#defineBYTE_BIT60x40
#defineBYTE_BIT70x80
bdataucharDATA_BUF;
#defineDATA7((DATA_BUF&BYTE_BIT7)!
=0)
#defineDATA0((DATA_BUF&BYTE_BIT0)!
=0)
sbitflag=DATA_BUF^7;
sbitflag1=DATA_BUF^0;
//--------------------------------------------------------------------------------------------------------------
#defineTxRxBuf_Len4
ucharTxRxBuffer[TxRxBuf_Len];
#defineWC0x00
#defineRC0x10
#defineWTP0x20
#defineRTP0x21
#defineWTA0x22
#defineRTA0x23
#defineRRP0x24
//--------------------------------------------NRF905寄存器配置--------------------------------------------------
unsignedcharidataRFConf[11]=
{
0x00,//配置命令//
0x9f,
0x0c,
0x44,0x01,0x01,
0xe7,0xe7,0xe7,0xe7,
0x58,//CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
};
ucharnum;
sbitTXEN=P1^7;
sbitTRX_CE=P3^5;
sbitPWR=P1^6;
//SPI口定义//
sbitMISO=P3^2;
sbitMOSI=P1^3;
sbitSCK=P3^1;
sbitCSN=P1^2;
sbitAM=P3^3;
//状态输出口//
sbitDR=P1^4;
sbitCD=P1^5;
//RF寄存器配置//
voidDelay(uinta)
{uintb,c;
for(b=a;b>0;b--)
for(c=1;c>0;c--);
}
voiddelay1(uinta)
{uintb,c;
for(b=a;b>0;b--)
for(c=110;c>0;c--);
}
//---------------------------------------------------SPI读函数-----------------------------------------------------
unsignedcharSpiRead(void)
{
unsignedcharj;
for(j=0;j<8;j++)
{
DATA_BUF=DATA_BUF<<1;
SCK=1;
if(MISO)//读取最高位,保存至最末尾,通过左移位完成整个字节
{
DATA_BUF|=BYTE_BIT0;
}
else
{
DATA_BUF&=~BYTE_BIT0;
}
SCK=0;
}
returnDATA_BUF;
}
//---------------------------------------------------SPI写函数----------------------------------------------------
voidSpiWrite(ucharsend)
{
unsignedchari;
DATA_BUF=send;
for(i=0;i<8;i++)
{
if(DATA7)//总是发送最高位
{
MOSI=1;
}
else
{
MOSI=0;
}
SCK=1;
DATA_BUF=DATA_BUF<<1;
SCK=0;
}
}
//-----------------------------------------------初始化nRF905-----------------------------------------------------
voidnRF905Init(void)
{
CSN=1;//Spidisable
SCK=0;//Spiclocklineinitlow
DR=0;//InitDRforinput
AM=0;//InitAMforinput
CD=0;//InitCDforinput
PWR=1;//nRF905poweron
TRX_CE=0;//SetnRF905instandbymode
TXEN=0;//setradioinRxmode
}
//-----------------------------------------------NRF905初始化寄存器-----------------------------------------------------
voidConfig905(void)
{
uchari;
CSN=0;//Spienableforwriteaspicommand
for(i=0;i<11;i++)//Writeconfigrationwords写放配置字
{
SpiWrite(RFConf[i]);
}
CSN=1;//DisableSpi
}
//----
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 遥控 智能 环境监测 概要