基于ARM和μC/OS-Ⅱ设计的网络化大田温度检测系统探析
2012-09-12马明涛
马明涛
摘要:采用Philips公司的LPC2200 ARM7实验平台为中央处理器,移植非商业化的μC/OS-Ⅱ嵌入式操作系统,构建了网络化大田温度检测系统。该系统使用DS18B20数字化温度传感器单总线方式将数字信号传输到LPC2200处理器,通过TCP/IP协议栈将数据上传到Internet,达到了实时可靠稳定的目的。
关键词:LPC2200;μC/OS-Ⅱ;DS18B20;Web服务器
中图分类号:S126文献标识码:A文章编号:0439-8114(2012)16-3603-04
Networked Detection System for Field Temperature Based on ARM and μC/OS-Ⅱ
MA Ming-tao
(Jilin Agricultural Science and Technology College,Jilin 132101,Jilin,China)
Abstract:The networked detection system for field temperature was constructed by using LP2200 ARM7 test platform from Philips Corporation as CPU and transplanting non-commercialized embedded operating systems μC / OS-Ⅱ. In this system, the digital signal from digital temperature sensor DS18B20 was transmitted to the LPC2200 processor by single bus mode and then uploaded to the Internet through TCP / IP protocol stack to achieving the purpose of real-time, reliable and stable.
Key words: LPC2200; μC / OS-Ⅱ; DS18B20; Web server
温度是农业生产中最重要的因素,对温度信息的收集和处理对农作物生长起着至关重要的作用[1]。传感器作为一种获取信息的重要工具,随着微处理器技术的迅猛发展以及测控系统自动化、智能化的发展,传统的传感器已与各种微处理器相结合,并连入网络,形成了带有信息检测、信号处理、逻辑思维等一系列功能的智能传感器系统。本研究以体积小、功耗低、可靠性高、抗干扰能力强的嵌入式微处理器为核心,使用数字式的温度传感器作为采集单元,构建网络化大田温度检测系统。
1整体设计
本设计采用Philips公司的LPC2200 ARM7微处理器为核心,被测温度经数字化的传感器DS18B20转换成数字信号以“单总线”的方式传入到LPC2200,经过数据处理后根据TCP协议经Internet网络送到上位机显示。以Philips公司的ARM核处理器LPC2200为核心来实现嵌入式Web服务器;网络接口芯片采用Reahek公司的NE2000兼容芯片RTL8019AS,内置10BASE-T收发器,通过HR901170A器件接入以太网[2]。总体功能框图如图1所示。
2系统的硬件设计
2.1ARM7微处理器
电路板上的LPC2200微处理器[3]采用了Philips公司的ARM7 TDMI-S核。ARM7 TDMI-S处理器是ARM通用32位微处理器家族的成员之一。ARM处理器具有优异的性能且功耗很低,其结构是基于精简指令集计算机(RISC)原理而设计的指令集和相关的译码机制,比复杂指令集计算机要简单得多[4,5]。
2.2电源模块
LPC2200系列ARM7微控制器均要使用2组电源,I/O口供电电源为3.3 V,内核及片内外设供电电源为1.8 V应用系统。
2.3复位电路
由于ARM芯片的高速、低功耗和低工作电压导致其噪声容限较低,对电源的纹波、瞬态响应性能、时钟源的稳定性和电源监控可靠性等诸多方面也提出了更高的要求。该开发板的复位电路使用了专用微处理器电源监控芯片,以提高系统的可靠性。
2.4系统时钟电路
LPC2200系列ARM7微控制器可使用外部晶振或外部时钟源,内部PLL电路可调整系统设置,使系统运行速度更快(CPU最大时钟频率为60 MHz)。本平台使用了外部11.059 MHz晶振,目的是使串口波特率更精确,同时能够支持LPC2200系列ARM7微控制器芯片内部的PLL功能和ISP功能。
2.5DS18B20应用电路
DS18B20应用电路是美国Dallas半导体公司的数字化温度传感器,是“一线总线”接口的温度传感器。在其内部使用了在板(ON-BOARD)专利技术。测量范围为-55~+125 ℃,精度为0.5 ℃。DS18B20可以程序设定9~12位的分辨率,它还支持多点组网功能,实现组网多点测温。系统选用了外部电源供电方式,在外部电源供电方式下,DSl8B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,也不存在电源电流不足的问题,可以保证转换精度。同时理论上在总线上可以挂接任意多个DS18B20传感器,组成多点测温系统[6,7]。
2.6LED显示电路
本系统采用LED显示,使用ZLG7920芯片,ZLG7290与微控制器设计硬件电路连接只需要两根信号线(一根数据线SDA,一根时钟信号线SCL)。
2.7以太网接口电路
RTL8019AS是一种高度集成的全双工即插即用的以太网控制芯片,它在一块芯片上集成了RTL8019内核和一个16 kB的SDRAM存储器。能兼容RTL8019控制软件和NE2000 8 bit或16 bit的传输。支持UTP、AUI、BNC和PNP自动检测模式,其接口符合Ethernet2和IEEE802.3(10Base5、 10Base2、10BaseT)标准。RTL8019AS芯片内部集成了DMA控制器、ISA总线控制器和集成16 kSRAM、网络PHY收发器。用户可以通过DMA方式把需要发送的数据写入片内SRAM中,让芯片自动将数据发送出去;而芯片在接收到数据后,用户也可以通过DMA方式将其读出。RTL8019AS与LPC2200一般通过外部总线进行连接。接口电路图如图2所示。
3系统的软件设计
ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具,ADS1.2支持ARM10之前所有ARM系列的微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C和C++源程序,具有编译效率高、系统库功能强等特点,可以在Windows98、 Windows2000、 WindowsXP以及RedHat Linux上运行。
3.1μC/OS-Ⅱ操作系统
μC/OS-Ⅱ的移植,系统开发采用ARM公司的ADS1.2作为开发编译环境,移植了μC/OS—Ⅱ操作系统,主要采用C语言编写。将μC/OS—Ⅱ移植到ARM处理器上,需要修改3个与ARM体系结构相关的文件:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_ C.C。
3.2传感器的温度采集
在对传感器数据采集的软件编程中,采用的是单线总线协议。通过单线总线访问DSl8B20的协议包括:初始化DS18B20、ROM操作命令、存储器操作命令和读数据/处理数据。根据DSl8B20的初始化时序、写时序和读时序,分别编写3个子程序:Init_DS18B20为初始化子程序;WriteOneChar为写(命令或数据)子程序;ReadOneChar为读数据子程序。所有的数据读/写均由最低位开始。
3.3Web服务器的建立
要在微处理器中建立Web服务器,主要需要实现TCP/IP协议栈的移植。设计中主要采用ZLG/IP软件包,由广州周立功单片机发展有限公司开发的面向嵌入式系统开发的TCP/IP协议栈是ZLG系列中间件的重要成员之一。ZLG/IP提供实现Internet网络上IP接点的功能,是一种高性能的嵌入式TCP/IP协议栈软件。它使用μC/OS-Ⅱ实时操作系统的信号机制来实现一个多任务并行、可重入的协议栈,完全使用ANSI C编写,可以像μC/OS-Ⅱ一样支持多种CPU。ZLG/IP还具有层次清晰、易于升级和修改等特点[8,9]。
Web服务器关键部分程序:
void TaskE(void *pdata)
{
uint8 Temp=0;
uint16 TempLength;
int addrlen;
int ei;
unsigned charip_add[4]={192,168,0,1};
uint8 tempdata[400];
//uint8 err;
SOCKET s;
struct sockaddr servaddr,cliaddr;
Arp_Request(ip_add,0);
OSTimeDly(60);
servaddr.sin_family=0;
servaddr.sin_addr[0]=NetPort[0].My_Ip[0];
servaddr.sin_addr[1]=NetPort[0].My_Ip[1];
servaddr.sin_addr[2]=NetPort[0].My_Ip[2];
servaddr.sin_addr[3]=NetPort[0].My_Ip[3];
servaddr.sin_port=80;
s=*socket( 0, 0, 0);
ei=bind( (SOCKET * )&s;, (struct sockaddr*)&servaddr;,sizeof(servaddr));
ei=listen( (SOCKET * )&s;, 4 );
if(ei!=4)
while(1);
while (1)
{
Temp=accept( (SOCKET * )&s;, (struct sockaddr*)&cliaddr;,&addrlen; );
if(Temp!=0xff)
{
TempLength=recv( Temp,tempdata ,400, 0 );
if(tempdata[5]==‘ )
{
send( Temp,httpweb ,169, 0 );
//OSTimeDly(10);
send( Temp,web ,395, 0 );
}
else if(tempdata[5]==‘1)
{
send( Temp, httpgif,169, 0 );
//OSTimeDly(10);
send( Temp,bmp ,442, 0 );
}
memset(tempdata, 0,400);
OSTimeDly(20);
close(Temp);
}
}
}
3小结
系统经过测试运行良好,能方便快捷地通过浏览器查询温度传感器所采集的温度值。本文主要介绍了系统硬件和μC/OS-Ⅱ的移植、TCP/IP协议栈的分析使用、温度数据采集等设计,经过测试,该嵌入式Web服务器可以在LPC 2000微处理器目标板上稳定运行且效率良好。本系统的大部分程序都采用标准C程序[10],在网络接口上采用ZLG TCP/IP软件包,具有很好的移植性,有良好的应用前景,对农业的现代化、智能化发展起到了一定的支撑作用。
参考文献:
[1] LABROSSE J J. 嵌入式实时操作系统μC/OS-Ⅱ[M].邵贝贝,译.北京:北京航空航天大学出版社,2003.
[2] 何轩,夏应清,李祥.基于ARM微处理器的嵌入式以太网接口[J].电气时代,2005(1):119-120.
[3] 董静薇,鞠丽丽.基于LPC2210的远程数据采集终端设计[J].工业控制计算机,2007,20(12):33-34,37.
[4] 周立功.ARM嵌入式系统基础教程[M].第二版.北京:北京航空航天大学出版社,2004.
[5] 周立功.ARM嵌入式软件开发实例(一)[M].北京:北京航空航天大学出版社,2004.
[6] 郭兆正,王东.DS18B20在花棚温度监测中的应用[J].渤海大学学报(自然科学版),2004,25(4):387-390.
[7] 余成波.传感器与自动检测技术[M].北京:高等教育出版社,2009.
[8] 李磊,杨柏林,胡维华. 嵌入式Web服务器软件的设计和实现[J].计算机工程与设计,2003,24(10):100-102.
[9] 刘桂雄,冯云庆.基于IP传感和网络接口的环境测控平台设计[J].传感器技术,2003,7(22):22-25.
[10] 申笑颜,许红,曹伟平.基于嵌入式C实现检测定制与数据处理[J].微计算机信息,2008,24(5):62-63.