物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx

上传人:b****3 文档编号:17881429 上传时间:2022-12-11 格式:DOCX 页数:51 大小:120.75KB
下载 相关 举报
物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx_第1页
第1页 / 共51页
物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx_第2页
第2页 / 共51页
物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx_第3页
第3页 / 共51页
物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx_第4页
第4页 / 共51页
物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx

《物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx(51页珍藏版)》请在冰豆网上搜索。

物联网课程设计基于温湿度传感器物联网应用实时数据处理系统开发46Word格式文档下载.docx

2.然后通过ubuntu发送到linux、接收并用动态网页显示代表数据变化的曲线。

三、要达到的目标

1.可以在ubuntu上实现自动接收由传感器取得、传来的实时数据。

2.并ubuntu上能边接收边连续往linux发送从传感器取得的实时数据。

3.还要确保发送过的数据不会再次发送。

4.Linux能接收到ubuntu发过来的实时数据并通过动态网页曲线图实时显示接收过来的数据。

实现方案

一、开发环境

1.硬件(详细介绍所涉及硬件的详细内容)

Pc机、温湿度传感器、传感器实验箱、连接所需的各种线。

2.软件(详细介绍所涉及软件的详细内容)

MDK414(arm平台编译烧录代码软件)、KeilC51v750a_Full(C51平台编译软件)、STC手动下载(C51烧录代码软件)、R340(串口线连接USB驱动)、ubuntu操作系统、linux操作系统。

3.其它

二、开发内容

1.项目开发详细内容(包括传感器的配置、传感器烧录、数据的实时收集、实时数据的存储、实时数据的传输、实时数据在服务器端的接受及存储-TCPServer及MySql、数据库及Web服务器安装、利用JSP曲线动态显示实时数据)

首先烧录整合好的温湿度传感器的代码。

接着连接传感器取得数据。

然后在ubuntu中编译并运行Com_Sensor程序获取传感器实验箱的数据。

在Ubuntu11编译并运行senddata.c把数据发送到linux.Linux通过TCPServer服务器接收数据并存入MySQL数据库。

最后将接收到的数据通过Linuxweb服务器以jsp曲线动态显示实时数据。

2.网络拓扑图(包括传感器、网关、传输网络、TCPServer服务器、数据库服务器、静态及动态Web服务器、Web服务器客户端;

并详细标注设备名称及IP地址等详细信息;

并详细叙述网络拓扑图流程)

三、技术路线

1.传感器数据处理(给出详细的传感器烧录代码)

代码如下:

/*********************************************************/

//中软吉大信息技术有限公司

//物联网传感技术教学实验系统

#include<

intrins.h>

//Keillibrary(isusedfor_nop()_operation)

math.h>

//Keillibrary

#include"

Lcmdisplay.h"

#defineFOSC11059200

#defineBAUD14400

typedefunion

{unsignedinti;

floatf;

}value;

//----------------------------------------------------------------------------------

//modul-var

enum{TEMP,HUMI};

#definenoACK0

#defineACK1

//adrcommandr/w

#defineSTATUS_REG_W0x06//00000110

#defineSTATUS_REG_R0x07//00000111

#defineMEASURE_TEMP0x03//00000011

#defineMEASURE_HUMI0x05//00000101

#defineRESET0x1e//00011110

sbitDATA=P2^2;

sbitSCK=P2^1;

sbitPOWER=P2^5;

sbitflag1=P0^7;

sbitflag2=P4^6;

sbitflag3=P2^7;

sbitflag4=P2^6;

voiddelay(unsignedintnTimeDelay)

{

unsignedinti;

while(nTimeDelay--)

for(i=0;

i<

125;

i++);

}

voidSerial_Init()

TMOD=0x01;

TR0=1;

EA=1;

ET0=0;

TF0=0;

S2CON=0x50;

//8位可变波特率(无校验位)

BRT=-(FOSC/32/BAUD);

//设置独立波特率发生器的重载初值

AUXR=0x14;

//独立波特率发生器工作在1T模式

//IE2=0x01;

//使能串口2中断

voidIO_Init(void)

{

P2M1=P2M1&

0xdf;

P2M0=P2M0&

P0M1=P0M1&

0x7f;

P0M0=P0M0&

P4M1=P4M1&

0xbf;

P4M0=P4M0&

0x3f;

P4SW=P4SW|0x40;

voidPower_Identify(void)

while

(1)

{

if(POWER==0)

{

delay(4000);

LcmPrintf("

请给传感器模块上电!

\n"

);

}

elsebreak;

}

voidModule_Identify(unsignedintxuhao)

unsignedintabc=0;

if(flag4==1)abc=abc+1;

abc=abc<

<

1;

if(flag3==1)abc=abc+1;

if(flag2==1)abc=abc+1;

if(flag1==1)abc=abc+1;

if(abc!

=xuhao)

{

delay(3000);

LcmPrintf("

提示:

您插入的模块不正确!

}

=xuhao);

else

delay(2000);

LcmPrintf("

连接的模块是M%u\n"

xuhao);

delay(5000);

break;

chars_write_byte(unsignedcharvalue)

//writesabyteontheSensibusandcheckstheacknowledge

unsignedchari,error=0;

for(i=0x80;

i>

0;

i/=2)//shiftbitformasking

{if(i&

value)

DATA=1;

//maskingvaluewithi,writetoSENSI-BUS

elseDATA=0;

_nop_();

//observesetuptime

SCK=1;

//clkforSENSI-BUS

_nop_();

//pulswithapprox.5us

SCK=0;

//observeholdtime

}

//releaseDATA-line

//clk#9forack

error=DATA;

//checkack(DATAwillbepulleddownbySHT11)

returnerror;

//error=1incaseofnoacknowledge

}

chars_read_byte(unsignedcharack)

//readsabyteformtheSensibusandgivesanacknowledgeincaseof"

ack=1"

unsignedchari,val=0;

{SCK=1;

if(DATA)val=(val|i);

//readbit

DATA=!

ack;

//incaseof"

ack==1"

pulldownDATA-Line

returnval;

voids_transstart(void)

//generatesatransmissionstart

//_____________

//DATA:

|_______|

//______

//SCK:

___||___||______

//Initialstate

DATA=0;

voids_connectionreset(void)

//communicationreset:

DATA-line=1andatleast9SCKcyclesfollowedbytransstart

//_____________________________________________________________

//_______________

__||__||__||__||__||__||__||__||__||______||___||______

unsignedchari;

for(i=0;

9;

i++)//9SCKcycles

s_transstart();

//transmissionstart

chars_softreset(void)

//resetsthesensorbyasoftreset

unsignedcharerror=0;

s_connectionreset();

//resetcommunication

error+=s_write_byte(RESET);

//sendRESET-commandtosensor

//error=1incaseofnoresponseformthesensor

chars_read_statusreg(unsignedchar*p_value,unsignedchar*p_checksum)

//readsthestatusregisterwithchecksum(8-bit)

error=s_write_byte(STATUS_REG_R);

//sendcommandtosensor

*p_value=s_read_byte(ACK);

//readstatusregister(8-bit)

*p_checksum=s_read_byte(noACK);

//readchecksum(8-bit)

chars_write_statusreg(unsignedchar*p_value)

//writesthestatusregisterwithchecksum(8-bit)

error+=s_write_byte(STATUS_REG_W);

//sendcommandtosensor

error+=s_write_byte(*p_value);

//sendvalueofstatusregister

//error>

=1incaseofnoresponseformthesensor

chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedchar

mode)

//makesameasurement(humidity/temperature)withchecksum

switch(mode){//sendcommandtosensor

caseTEMP:

error+=s_write_byte(MEASURE_TEMP);

break;

caseHUMI:

error+=s_write_byte(MEASURE_HUMI);

default:

65535;

i++)if(DATA==0)break;

//waituntilsensorhasfinishedthemeasurement

if(DATA)error+=1;

//ortimeout(~2sec.)isreached

*(p_value)=s_read_byte(ACK);

//readthefirstbyte(MSB)

*(p_value+1)=s_read_byte(ACK);

//readthesecondbyte(LSB)

*p_checksum=s_read_byte(noACK);

//readchecksum

voidcalc_sth11(float*p_humidity,float*p_temperature)

//calculatestemperature[°

C]andhumidity[%RH]

//input:

humi[Ticks](12bit)

//temp[Ticks](14bit)

//output:

humi[%RH]

//temp[°

C]

{constfloatC1=-2.0468;

//for12BitRH

constfloatC2=+0.0367;

constfloatC3=-0.0000015955;

constfloatT1=+0.01;

constfloatT2=+0.00008;

floatrh=*p_humidity;

//rh:

Humidity[Ticks]12Bit

floatt=*p_temperature;

//t:

Temperature[Ticks]14Bit

floatrh_lin;

//rh_lin:

Humiditylinear

floatrh_true;

//rh_true:

Temperaturecompensatedhumidity

floatt_C;

//t_C:

Temperature[°

t_C=t*0.01-40.1;

//calc.temperature[°

C]from14bittemp.ticks@5V

rh_lin=C3*rh*rh+C2*rh+C1;

//calc.humidityfromticksto[%RH]

rh_true=(t_C-25)*(T1+T2*rh)+rh_lin;

//calc.temperaturecompensatedhumidity[%RH]

if(rh_true>

100)rh_true=100;

//cutifthevalu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1