基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)_第1頁
基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)_第2頁
基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)_第3頁
基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)_第4頁
基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGE38PAGE《無線傳感器網(wǎng)絡(luò)實用教程》課程設(shè)計基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)_系別計算機科學(xué)系專業(yè)通信工程班級一 學(xué)號xxxxxxxxxxxxx組次x姓名xxx指導(dǎo)教師xxx評定成績起止日期2012年10月8日至2012年10月29日目錄摘要3第1章課程設(shè)計的目的和要求3第2章溫濕度傳感器的簡介4第3章課程設(shè)計實現(xiàn)方案61、開發(fā)環(huán)境62、開發(fā)內(nèi)容63、技術(shù)路線71)傳感器數(shù)據(jù)處理72)傳感器燒錄28第4章課程設(shè)計結(jié)果29第5章結(jié)論與體會29摘要物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分。其英文名稱是“TheInternetofthings”。由此,顧名思義,“物聯(lián)網(wǎng)就是物物相連的互聯(lián)網(wǎng)”。這有兩層意思:第一,物聯(lián)網(wǎng)的核心和基礎(chǔ)仍然是互聯(lián)網(wǎng),是在互聯(lián)網(wǎng)基礎(chǔ)上的延伸和擴展的網(wǎng)絡(luò);第二,其用戶端延伸和擴展到了任何物品與物品之間,進(jìn)行信息交換和通信。因此,物聯(lián)網(wǎng)的定義是通過射頻識別(RFID)、紅外感應(yīng)器、全球定位系統(tǒng)、激光掃描器等信息傳感設(shè)備,按約定的協(xié)議,把任何物品與互聯(lián)網(wǎng)相連接,進(jìn)行信息交換和通信,以實現(xiàn)對物品的智能化識別、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)。而溫濕度傳感器是由于溫度與濕度不管是從物理量本身還是在實際人們的生活中都有著密切的關(guān)系,所以溫濕度一體的傳感器就會相應(yīng)產(chǎn)生。溫濕度傳感器是指能將溫度量和濕度量轉(zhuǎn)換成容易被測量處理的電信號的設(shè)備或裝置。市場上的溫濕度傳感器一般是測量溫度量和相對濕度量。第1章課程設(shè)計的目的與要求課程設(shè)計目的物聯(lián)網(wǎng)是一種新概念和新技術(shù),它使新一代IT技術(shù)更加充分地應(yīng)用于各行各業(yè)之中。它的問世打破了過去將基礎(chǔ)設(shè)施與IT設(shè)施分開的傳統(tǒng)觀念,將建筑物、公路、鐵路和網(wǎng)站、網(wǎng)絡(luò)、數(shù)據(jù)中心合為一體,是信息化和工業(yè)化融合的重要切入點。溫濕度與人們的生活關(guān)系密切,所以物聯(lián)網(wǎng)在溫濕度實時數(shù)據(jù)處理系統(tǒng)的開發(fā)將有很大的前景。在我們的日常生活中無處不在,控制好溫濕度可以使我們生活、生產(chǎn)的更好。溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)可以幫我們實現(xiàn)對溫濕度以實時數(shù)據(jù)讓我們明了的知道。從而更好的控制溫濕度、達(dá)到我們所需的標(biāo)準(zhǔn)。要達(dá)到的目的:1.可以在ubuntu上實現(xiàn)自動接收由傳感器取得、傳來的實時數(shù)據(jù)。2.并ubuntu上能邊接收邊連續(xù)往linux發(fā)送從傳感器取得的實時數(shù)據(jù)。3.還要確保發(fā)送過的數(shù)據(jù)不會再次發(fā)送。4.Linux能接收到ubuntu發(fā)過來的實時數(shù)據(jù)并通過動態(tài)網(wǎng)頁曲線圖實時顯示接收過來的數(shù)據(jù)。課程設(shè)計要求1.通過ubuntu連接傳感器實驗箱收集由傳感器測得的實時數(shù)據(jù)存入sqlite3數(shù)據(jù)庫。2.然后通過ubuntu發(fā)送到linux、接收并用動態(tài)網(wǎng)頁顯示代表數(shù)據(jù)變化的曲線。第2章溫濕度傳感器的簡介由于溫度與濕度不管是從物理量本身還是在實際人們的生活中都有著密切的關(guān)系,所以溫濕度一體的傳感器就會相應(yīng)產(chǎn)生。溫濕度傳感器是指能將溫度量和濕度量轉(zhuǎn)換成容易被測量處理的電信號的設(shè)備或裝置。市場上的溫濕度傳感器一般是測量溫度量和相對濕度量。溫度:度量物體冷熱的物理量,是國際單位制中7個基本物理量之一。在生產(chǎn)和科學(xué)研究中,許多物理現(xiàn)象和化學(xué)過程都是在一定的溫度下進(jìn)行的,人們的生活也和他密切相關(guān)。濕度:濕度很久以前就與生活存在著密切的關(guān)系,但用數(shù)量來進(jìn)行表示較為困難。對濕度的表示方法有絕對濕度、相對濕度、露點、濕氣與干氣的比值(重量或體積)等等。日常生活中最常用的表示濕度的物理量是空氣的相對濕度。用%RH表示。在物理量的導(dǎo)出上相對濕度與溫度有著密切的關(guān)系。一定體積的密閉氣體,其溫度越高相對濕度越低,溫度越低,其相對濕度越高。其中涉及到復(fù)雜的熱力工程學(xué)知識。有關(guān)濕度的一些定義:相對濕度:在計量法中規(guī)定,濕度定義為“物象狀態(tài)的量”。日常生活中所指的適度為相對濕度,用RH%表示??傊礆怏w中(通常為空氣中)所含水蒸氣量(水蒸氣壓)與其空氣相同情況下飽和水蒸氣量(飽和水蒸汽壓)的百分比。絕對濕度:指單位容積的空氣里實際所含的水汽量,一般以克為單位。溫度對絕對濕度有著直接影響,一般情況下,溫度越高,水蒸氣發(fā)得越多,絕對濕度就越大;相反,絕對濕度就小。飽和濕度:在一定溫度下,單位容積,空氣中所能容納的水汽量的最大限度。如果超過這個限度,多余的水蒸氣就會凝結(jié),變成水滴,此時的空氣濕度變稱為飽和濕度。空氣的飽和濕度不是固定不變的,它隨著溫度的變化而變化。溫度越高,單位容積空氣中能容納的水蒸氣就越多,飽和濕度就越大。露點:指含有一定量水蒸氣(絕對濕度)的空氣,當(dāng)溫度下降到一定程度時所含的水蒸氣就會達(dá)到飽和狀態(tài)(飽和濕度)并開始液化成水,這種現(xiàn)象叫做凝露。水蒸氣開始液化成水時的溫度叫做“露點溫度”簡稱“露點”。如果溫度繼續(xù)下降到露點以下,空氣中超飽和的水蒸氣就會在物體表面上凝結(jié)成水滴。此外,風(fēng)與空氣中的溫濕度有密切關(guān)系,也是影響空氣溫濕度變化的重要因素之一。選擇的注意事項:①、選擇測量范圍和測量重量、溫度一樣,選擇濕度傳感器首先要確定測量范圍。除了氣象、科研部門外,搞溫、濕度測控的一般不需要全濕程(0-100%RH)測量。②、選擇測量精度 測量精度是濕度傳感器最重要的指標(biāo),每提高—個百分點,對濕度傳感器來說就是上一個臺階,甚至是上一個檔次。因為要達(dá)到不同的精度,其制造成本相差很大,售價也相差甚遠(yuǎn)。所以使用者一定要量體裁衣,不宜盲目追求“高、精、尖”。如在不同溫度下使用濕度傳感器,其示值還要考慮溫度漂移的影響。眾所周知,相對濕度是溫度的函數(shù),溫度嚴(yán)重地影響著指定空間內(nèi)的相對濕度。溫度每變化0.1℃。將產(chǎn)生0.5%RH的濕度變化(誤差)。使用場合如果難以做到恒溫,則提出過高的測濕精度是不合適的。多數(shù)情況下,如果沒有精確的控溫手段,或者被測空間是非密封的,±5%RH的精度就足夠了。對于要求精確控制恒溫、恒濕的局部空間,或者需要隨時跟蹤記錄濕度變化的場合,再選用±3%RH以上精度的濕度傳感器。而精度高于±2%RH的要求恐怕連校準(zhǔn)傳感器的標(biāo)準(zhǔn)濕度發(fā)生器也難以做到,更何況傳感器自身了。相對濕度測量儀表,即使在20—25℃下,要達(dá)到2%RH的準(zhǔn)確度仍是很困難的。通常產(chǎn)品資料中給出的特性是在常溫(20℃±10℃)和潔凈的氣體中測量的。③、考慮時漂和溫漂在實際使用中,由于塵土、油污及有害氣體的影響,使用時間一長,電子式濕度傳器會產(chǎn)生老化,精度下降,電子式濕度傳感器年漂移量一般都在±2%左右,甚至更高。一般情況下,生產(chǎn)廠商會標(biāo)明1次標(biāo)定的有效使用時間為1年或2年,到期需重新標(biāo)定。④、其它注意事項濕度傳感器是非密封性的,為保護(hù)測量的準(zhǔn)確度和穩(wěn)定性,應(yīng)盡量避免在酸性、堿性及含有機溶劑的氣氛中使用。也避免在粉塵較大的環(huán)境中使用。為正確反映欲測空間的濕度,還應(yīng)避免將傳感器安放在離墻壁太近或空氣不流通的死角處。如果被測的房間太大,就應(yīng)放置多個傳感器。有的濕度傳感器對供電電源要求比較高,否則將影響測量精度?;蛘邆鞲衅髦g相互干擾,甚至無法工作。使用時應(yīng)按照技術(shù)要求提供合適的、符合精度要求的供電電源。傳感器需要進(jìn)行遠(yuǎn)距離信號傳輸時,要注意信號的衰減問題。當(dāng)傳輸距離超過200m以上時,建議選用頻率輸出信號的濕度傳感器。第3章課程設(shè)計實現(xiàn)方案一、開發(fā)環(huán)境1.硬件(詳細(xì)介紹所涉及硬件的詳細(xì)內(nèi)容)Pc機、溫濕度傳感器、傳感器實驗箱、連接所需的各種線。2.軟件(詳細(xì)介紹所涉及軟件的詳細(xì)內(nèi)容)MDK414(arm平臺編譯燒錄代碼軟件)、KeilC51v750a_Full(C51平臺編譯軟件)、STC手動下載(C51燒錄代碼軟件)、R340(串口線連接USB驅(qū)動)、ubuntu操作系統(tǒng)、linux操作系統(tǒng)。3.其它二、開發(fā)內(nèi)容1.項目開發(fā)詳細(xì)內(nèi)容(包括傳感器的配置、傳感器燒錄、數(shù)據(jù)的實時收集、實時數(shù)據(jù)的存儲、實時數(shù)據(jù)的傳輸、實時數(shù)據(jù)在服務(wù)器端的接受及存儲-TCPServer及MySql、數(shù)據(jù)庫及Web服務(wù)器安裝、利用JSP曲線動態(tài)顯示實時數(shù)據(jù))首先燒錄整合好的溫濕度傳感器的代碼。接著連接傳感器取得數(shù)據(jù)。然后在ubuntu中編譯并運行Com_Sensor程序獲取傳感器實驗箱的數(shù)據(jù)。在Ubuntu11編譯并運行senddata.c把數(shù)據(jù)發(fā)送到linux.Linux通過TCPServer服務(wù)器接收數(shù)據(jù)并存入MySQL數(shù)據(jù)庫。最后將接收到的數(shù)據(jù)通過Linuxweb服務(wù)器以jsp曲線動態(tài)顯示實時數(shù)據(jù)。2.網(wǎng)絡(luò)拓?fù)鋱D(包括傳感器、網(wǎng)關(guān)、傳輸網(wǎng)絡(luò)、TCPServer服務(wù)器、數(shù)據(jù)庫服務(wù)器、靜態(tài)及動態(tài)Web服務(wù)器、Web服務(wù)器客戶端;并詳細(xì)標(biāo)注設(shè)備名稱及IP地址等詳細(xì)信息;并詳細(xì)敘述網(wǎng)絡(luò)拓?fù)鋱D流程)三、技術(shù)路線傳感器數(shù)據(jù)處理(給出詳細(xì)的傳感器燒錄代碼)代碼如下:/*********************************************************///中軟吉大信息技術(shù)有限公司//物聯(lián)網(wǎng)傳感技術(shù)教學(xué)實驗系統(tǒng)/*********************************************************/#include<intrins.h>//Keillibrary(isusedfor_nop()_operation)#include<math.h>//Keillibrary#include"Lcmdisplay.h"#defineFOSC11059200#defineBAUD14400typedefunion{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//00011110sbitDATA=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);//設(shè)置獨立波特率發(fā)生器的重載初值A(chǔ)UXR=0x14;//獨立波特率發(fā)生器工作在1T模式//IE2=0x01;//使能串口2中斷}voidIO_Init(void){ P2M1=P2M1&0xdf; P2M0=P2M0&0xdf; P0M1=P0M1&0x7f; P0M0=P0M0&0x7f; P4M1=P4M1&0xbf; P4M0=P4M0&0xbf; P2M1=P2M1&0x3f; P2M0=P2M0&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; abc=abc<<1; if(flag2==1)abc=abc+1; abc=abc<<1; if(flag1==1)abc=abc+1; if(abc!=xuhao) { delay(3000); LcmPrintf("提示:您插入的模塊不正確!\n"); } while(1) { if(abc!=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-BUSelseDATA=0;_nop_();//observesetuptimeSCK=1;//clkforSENSI-BUS_nop_();_nop_();_nop_();//pulswithapprox.5usSCK=0;_nop_();//observeholdtime}DATA=1;//releaseDATA-line_nop_();//observesetuptimeSCK=1;//clk#9forackerror=DATA;//checkack(DATAwillbepulleddownbySHT11)SCK=0;returnerror;//error=1incaseofnoacknowledge}//chars_read_byte(unsignedcharack)////readsabyteformtheSensibusandgivesanacknowledgeincaseof"ack=1"{unsignedchari,val=0;DATA=1;//releaseDATA-linefor(i=0x80;i>0;i/=2)//shiftbitformasking{SCK=1;//clkforSENSI-BUSif(DATA)val=(val|i);//readbitSCK=0;}DATA=!ack;//incaseof"ack==1"pulldownDATA-Line_nop_();//observesetuptimeSCK=1;//clk#9forack_nop_();_nop_();_nop_();//pulswithapprox.5usSCK=0;_nop_();//observeholdtimeDATA=1;//releaseDATA-linereturnval;}//voids_transstart(void)////generatesatransmissionstart//_____________//DATA:|_______|//______//SCK:___||___||______{DATA=1;SCK=0;//Initialstate_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;}//voids_connectionreset(void)////communicationreset:DATA-line=1andatleast9SCKcyclesfollowedbytransstart//_____________________________________________________________//DATA:|_______|//_______________//SCK:__||__||__||__||__||__||__||__||__||______||___||______{unsignedchari;DATA=1;SCK=0;//Initialstatefor(i=0;i<9;i++)//9SCKcycles{SCK=1;SCK=0;}s_transstart();//transmissionstart}//chars_softreset(void)////resetsthesensorbyasoftreset{unsignedcharerror=0;s_connectionreset();//resetcommunicationerror+=s_write_byte(RESET);//sendRESET-commandtosensorreturnerror;//error=1incaseofnoresponseformthesensor}//chars_read_statusreg(unsignedchar*p_value,unsignedchar*p_checksum)////readsthestatusregisterwithchecksum(8-bit){unsignedcharerror=0;s_transstart();//transmissionstarterror=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)returnerror;//error=1incaseofnoresponseformthesensor}//chars_write_statusreg(unsignedchar*p_value)////writesthestatusregisterwithchecksum(8-bit){unsignedcharerror=0;s_transstart();//transmissionstarterror+=s_write_byte(STATUS_REG_W);//sendcommandtosensorerror+=s_write_byte(*p_value);//sendvalueofstatusregisterreturnerror;//error>=1incaseofnoresponseformthesensor}//chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)////makesameasurement(humidity/temperature)withchecksum{unsignedcharerror=0;unsignedinti;s_transstart();//transmissionstartswitch(mode){//sendcommandtosensorcaseTEMP:error+=s_write_byte(MEASURE_TEMP);break;caseHUMI:error+=s_write_byte(MEASURE_HUMI);break;default:break;}for(i=0;i<65535;i++)if(DATA==0)break;//waituntilsensorhasfinishedthemeasurementif(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);//readchecksumreturnerror;}//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;//for12BitRHconstfloatC2=+0.0367;//for12BitRHconstfloatC3=-0.0000015955;//for12BitRHconstfloatT1=+0.01;//for12BitRHconstfloatT2=+0.00008;//for12BitRHfloatrh=*p_humidity;//rh:Humidity[Ticks]12Bitfloatt=*p_temperature;//t:Temperature[Ticks]14Bitfloatrh_lin;//rh_lin:Humiditylinearfloatrh_true;//rh_true:Temperaturecompensatedhumidityfloatt_C;//t_C:Temperature[°C]t_C=t*0.01-40.1;//calc.temperature[°C]from14bittemp.ticks@5Vrh_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;//cutifthevalueisoutsideofif(rh_true<0.1)rh_true=0.1;//thephysicalpossiblerange*p_temperature=t_C;//returntemperature[°C]*p_humidity=rh_true;//returnhumidity[%RH]}//floatcalc_dewpoint(floath,floatt)////calculatesdewpoint//input:humidity[%RH],temperature[°C]//output:dewpoint[°C]{floatk,dew_point;k=(log10(h)-2)/0.4343+(17.62*t)/(243.12+t);dew_point=243.12*k/(17.62-k);returndew_point;}//voidmain()////sampleprogramthatshowshowtouseSHT11functions//1.connectionreset//2.measurehumidity[ticks](12bit)andtemperature[ticks](14bit)//3.calculatehumidity[%RH]andtemperature[°C]//4.calculatedewpoint[°C]//5.printtemperature,humidity,dewpoint{valuehumi_val,temp_val;floatdew_point;unsignedcharerror,checksum;unsignedinti; Serial_Init(); IO_Init(); Power_Identify(); Module_Identify(3);s_connectionreset();while(1){error=0;error+=s_measure((unsignedchar*)&humi_val.i,&checksum,HUMI);//measurehumidityerror+=s_measure((unsignedchar*)&temp_val.i,&checksum,TEMP);//measuretemperatureif(error!=0)s_connectionreset();//incaseofanerror:connectionresetelse{humi_val.f=(float)humi_val.i;//convertsintegertofloattemp_val.f=(float)temp_val.i;//convertsintegertofloatcalc_sth11(&humi_val.f,&temp_val.f);//calculatehumidity,temperaturedew_point=calc_dewpoint(humi_val.f,temp_val.f);//calculatedewpoint Power_Identify(); LcmDisplaySHT10(humi_val.f,temp_val.f); //LcmPrintf("溫度:%5.1f℃濕度:%5.1f露點:%3.1f\n",temp_val.f,humi_val.f,dew_point); //temp:溫度// for(i=0;i<40000;i++); //延遲 // LcmPrintf("",humi_val.f); //humi:濕度 // for(i=0;i<40000;i++); //延遲 // LcmPrintf("",dew_point); //dewpoint:露點(點在此溫度時,空氣飽和并產(chǎn)生露珠)}//waitapprox.0.8stoavoidheatingupSHTxxfor(i=0;i<50000;i++);//(besurethatthecompilerdoesn'teliminatethisline!)//}}Lcmdisplay.c:#include"Lcmdisplay.h"typedefenum{LCMPRTF=0,//字符串打印//1磁感應(yīng)及環(huán)境光傳感器模塊LCMHALL,//霍爾接近開關(guān)LCMREED,//干簧管LCMMETAL,//金屬接近開關(guān)LCMLUX,//環(huán)境光強度LCMLDR,//光敏電阻//2震動及mems麥克傳感器模塊LCMSHOCKDS,//雙珠單向LCMSHOCKDD,//雙珠雙向LCMSHOCKSPRING,//彈簧LCMSHOCK,//全向震動LCMMIC,//MEMS麥克風(fēng)//3測距測障類及溫濕度類傳感器模塊LCMIR,//紅外對管測距LCMIRSWITCH,//紅外接近開關(guān)LCMULTR,//超聲波測距LCMTEMP,//溫度//DS18b20LCMSHT10,//溫濕度傳感器SHT10LCMHUMI,//濕度//SHT10LCMNTC,//熱敏電阻//4操作控制類及加速傳感器模塊LCMACC,//三軸加速度LCMJOYSTICK,//搖桿電位器LCMENCODER,//編碼開關(guān)//5稱重傳感器模塊LCMWEIGHT,//稱重//6粉塵傳感器模塊LCMDUST,//粉塵//7紅外測溫及顏色傳感器模塊(增強型模塊)LCMBODYTEMP,//紅外測體溫LCMCOLOR,//顏色//8磁阻陀螺儀及氣壓傳感器模塊(增強型模塊)LCMRELUCTANCE,//三軸磁阻LCMANGRATE,//三軸角速率陀螺儀LCMPRESSURE,//氣壓//9二氧化碳傳傳感器模塊(擴展型模塊)LCMCO2,//二氧化碳//10氣體流量傳感器模塊(擴展型模塊)LCMFLOW,//氣體流量LCMINIT//初始值}flag_t;voidswap(char*cp){ unsignedchartemp; temp=cp[3]; cp[3]=cp[0]; cp[0]=temp; temp=cp[2]; cp[2]=cp[1]; cp[1]=temp;}voidsendc(unsignedcharchr)//發(fā)送一個字符{ S2BUF=chr; while(!(S2CON&0x02));S2CON&=~0x02;}unsignedcharrecvc(void){ unsignedcharchr; while(!(S2CON&0x01));S2CON&=~0x01; chr=S2BUF; returnchr;}staticvoidpacketLcm(flag_tflag,char*data1,intlength){sendc(0x7e);sendc(0xff); sendc(0x06);//改成6sendc(flag);while(length--){switch(*data1){case0x7e:sendc(0x7d);sendc(0x5e);case0x7d:sendc(0x7d);sendc(0x5e);default:sendc(*data1);}data1++;}sendc(0x00);sendc(0x00); sendc(0x7e);//等待顯示完成//recvc();}//字符串打印到液晶voidLcmPrintf(char*fmt,...){va_listap;va_start(ap,fmt);vsprintf(data1,fmt,ap); va_end(ap);packetLcm(LCMPRTF,data1,strlen(data1));}//1磁感應(yīng)及環(huán)境光傳感器模塊//LCMHALL,//霍爾接近開關(guān)//霍爾傳感器,有磁鐵靠近TRUE,離開FALSEvoidLcmDisplayHall(boolv){conv_tconv; conv.b=v; swap(conv.c);packetLcm(LCMHALL,conv.c,4);}//LCMREED,//干簧管//干簧管,有磁鐵靠近TRUE,離開FALSEvoidLcmDisplayReed(boolv){conv_tconv; conv.b=v; swap(conv.c);packetLcm(LCMREED,conv.c,4);}//LCMMETAL,//金屬接近開關(guān)//金屬傳感器,有金屬靠近TRUE,離開FALSEvoidLcmDisplayMetal(boolv){conv_tconv; conv.b=v; swap(conv.c);packetLcm(LCMMETAL,conv.c,4);}//LCMLUX,//環(huán)境光強度//環(huán)境光強度,LuxvoidLcmDisplayLux(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMLUX,conv.c,4);}//LCMLDR,//光敏電阻//光敏電阻,千歐voidLcmDisplayLDR(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMLDR,conv.c,4);}//2震動及mems麥克傳感器模塊//LCMSHOCKDS,//雙珠單向voidLcmDisplayShockDS(boolv){conv_tconv; conv.b=v; packetLcm(LCMSHOCKDS,conv.c,sizeof(v));}//LCMSHOCKDD,//雙珠雙向voidLcmDisplayShockDD(boolvl,boolvr){conv_tconv;if(vl&&vr){conv.uc=0xff;}elseif(vl&&!vr){conv.uc=0xf0;}elseif(!vl&&vr){conv.uc=0x0f;}else{conv.uc=0x00;} packetLcm(LCMSHOCKDD,conv.c,sizeof(unsignedchar));}//LCMSHOCKSPRING,//彈簧voidLcmDisplayShockSpring(boolv){conv_tconv; conv.b=v;packetLcm(LCMSHOCKSPRING,conv.c,sizeof(v));}//LCMSHOCK,//全向震動//全向震動voidLcmDisplayShock(boolv){conv_tconv; conv.b=v;packetLcm(LCMSHOCK,conv.c,sizeof(v));}//LCMMIC,//MEMS麥克風(fēng)voidLcmDisplayMIC(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMMIC,conv.c,4);}//3測距測障類及溫濕度類傳感器模塊//LCMIR,//紅外對管//紅外對管電壓,單位VvoidLcmDisplayIR(floatv){conv_tconv; conv.f=v; swap(conv.c);packetLcm(LCMIR,conv.c,4);}//LCMIRSWITCH,//紅外接近開關(guān)voidLcmDisplayIRSwitch(boolv){conv_tconv; conv.b=v;packetLcm(LCMIRSWITCH,conv.c,sizeof(v));}//LCMULTR,//超聲波測距//超聲波測距,單位厘米voidLcmDisplayUltr(floatv){conv_tconv; conv.f=v; swap(conv.c);packetLcm(LCMULTR,conv.c,4);}//LCMTEMP,//溫度//DS18b20//溫度,攝氏度voidLcmDisplayTemp(floatv){conv_tconv; conv.f=v; swap(conv.c);packetLcm(LCMTEMP,conv.c,4);}//LCMSHT10,//溫濕度傳感器SHT10//溫濕度傳感器SHT10//參數(shù)t:溫度//h:濕度voidLcmDisplaySHT10(floatt,floath){conv_tconv;conv.f=t; swap(conv.c);memcpy(data1+0,conv.c,4);conv.f=h; swap(conv.c);memcpy(data1+4,conv.c,4);packetLcm(LCMSHT10,data1,8);}//LCMHUMI,//濕度//SHT10//相對濕度,百分比voidLcmDisplayHumi(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMHUMI,conv.c,4);}//LCMNTC,//熱敏電阻voidLcmDisplayNTC(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMNTC,conv.c,4);}//4操作控制類及加速傳感器模塊//LCMACC,//三軸加速度//三維加速度,單位gvoidLcmDisplayAcc(floatx,floaty,floatz){conv_tconv;conv.f=x; swap(conv.c);memcpy(data1+0,conv.c,4);conv.f=y; swap(conv.c);memcpy(data1+4,conv.c,4);conv.f=z; swap(conv.c);memcpy(data1+8,conv.c,4);packetLcm(LCMACC,data1,12);}//LCMJOYSTICK,//搖桿電位器//搖桿電位器,12位AD值voidLcmDisplayJoystick(unsignedintx,unsignedinty){conv_tconv;conv.ui=x; swap(conv.c);memcpy(data1+0,conv.c,4);conv.ui=y; swap(conv.c);memcpy(data1+4,conv.c,4);packetLcm(LCMJOYSTICK,data1,8);}//LCMENCODER,//編碼開關(guān)//編碼開關(guān)voidLcmDisplayEncoder(encd_tv){conv_tconv;conv.en=v; swap(conv.c);memcpy(data1+0,conv.c,4);packetLcm(LCMENCODER,data1,4);}//5稱重傳感器模塊//LCMWEIGHT,//稱重//稱重傳感器,單位克voidLcmDisplayWeight(floatv){conv_tconv; conv.f=v; swap(conv.c);packetLcm(LCMWEIGHT,conv.c,4);}//6粉塵傳感器模塊//LCMDUST,//粉塵//粉塵,單位粒子數(shù)voidLcmDisplayDust(floatv){conv_tconv; conv.f=v; swap(conv.c);packetLcm(LCMDUST,conv.c,4);}//7紅外測溫及顏色傳感器模塊(增強型模塊)//LCMBODYTEMP,//紅外測體溫//體溫,攝氏度voidLcmDisplayBodyTemp(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMBODYTEMP,conv.c,4);}//LCMCOLOR,//顏色//顏色,RGB各8位voidLcmDisplayColor(unsignedcharr,unsignedcharg,unsignedcharb){conv_tconv;conv.uc=r;memcpy(data1+0,conv.c,1);conv.uc=g;memcpy(data1+1,conv.c,1);conv.uc=b;memcpy(data1+2,conv.c,1);packetLcm(LCMCOLOR,data1,3);}//8磁阻陀螺儀及氣壓傳感器模塊(增強型模塊)//LCMRELUCTANCE,//三軸磁阻//磁阻voidLcmDisplayReluctance(floatangle,floatx,floaty,floatz){conv_tconv;conv.f=angle; swap(conv.c);memcpy(data1+0,conv.c,4);conv.f=x; swap(conv.c);memcpy(data1+4,conv.c,4);conv.f=y; swap(conv.c);memcpy(data1+8,conv.c,4);conv.f=z; swap(conv.c);memcpy(data1+12,conv.c,4);packetLcm(LCMRELUCTANCE,data1,16);}//LCMANGRATE,//三軸角速率陀螺儀//三軸角速率voidLcmDisplayAngRate(floatx,floaty,floatz){conv_tconv;conv.f=x; swap(conv.c);memcpy(data1+0,conv.c,4);conv.f=y; swap(conv.c);memcpy(data1+4,conv.c,4);conv.f=z; swap(conv.c);memcpy(data1+8,conv.c,4);packetLcm(LCMANGRATE,data1,12);}//LCMPRESSURE,//氣壓//氣壓傳感器MS5607//參數(shù)P:溫度//t:氣壓voidLcmDisplayPressure(floatp,floatt){conv_tconv;conv.f=p; swap(conv.c);memcpy(data1+0,conv.c,4);conv.f=t; swap(conv.c);memcpy(data1+4,conv.c,4);packetLcm(LCMPRESSURE,data1,8);}//9二氧化碳傳傳感器模塊(擴展型模塊)//LCMCO2,//二氧化碳voidLcmDisplayCO2(floatv){conv_tconv;conv.f=v; swap(conv.c);packetLcm(LCMCO2,conv.c,4);}//10氣體流量傳感器模塊(擴展型模塊)//LCMFLOW,//氣體流量//氣體流量,單位SLPMvoidLcmDisplayFlow(floatv){conv_tconv; conv.f=v; swap(conv.c);packetLcm(LCMFLOW,conv.c,4);}傳感器燒錄(給出傳感器燒錄代碼的編譯及燒錄過程、是否遇到問題及如何解決)(1)利用keil2軟件,打開目錄“D:\傳感器實驗箱資料\傳感器實驗箱程序資料\C51\完成部分程序\完成部分程序”中的SHT10.Uv2文件。(2)雙擊打開左側(cè)的“wenshi.c”文件,根據(jù)提示完成部分程序。(3)按下F7鍵,即編譯此程序,在工具軟件下面的顯示區(qū)域中,如果有“0error(s)”字樣,表示此程序編譯已經(jīng)成功。(4)把編譯好的程序重新燒寫到單片機中。(5)按下母板卡上的Sensors鍵并打開傳感器電源。(6)觀察效果。(7)依次關(guān)閉傳感器電源、單片機電源、母板卡電源。課程設(shè)計結(jié)果第5章結(jié)論與體會這次《基于溫濕度傳感器物聯(lián)網(wǎng)應(yīng)用實時數(shù)據(jù)處理系統(tǒng)開發(fā)》課程設(shè)計在xxx老師的悉心指導(dǎo)下,經(jīng)過近兩個禮拜的時間,我的設(shè)計內(nèi)容全部完成,心情很是愉悅。我認(rèn)為,在這次的課程設(shè)計中,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在設(shè)計過程中,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實踐,再學(xué)習(xí)、再實踐。這對于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實驗結(jié)束之后變的更加成熟,會面對需要面對的事情。通過這次課程設(shè)計,讓我經(jīng)歷了一個課程設(shè)計的全過程,這將是我以后習(xí)和工作的財富,會對我以后的學(xué)習(xí)和工作有著很大的指導(dǎo)和幫助。最后再次感謝指導(dǎo)我和幫助過我完成此次課程設(shè)計的老師和同學(xué)!附錄資料:不需要的可以自行刪除教你如何保護(hù)筆記本HYPERLINK""一、每天關(guān)機前要做的清洗:雙擊“我的電腦”——右鍵點C盤——點“屬性”——點“磁盤清理”——點“確定”——再點“是”——再點“確定”。清理過程中,您可看得到未經(jīng)您許可(您可點“查看文件”看,就知道了)進(jìn)來的“臨時文件”被清除了,盤的空間多了。對D,E,F(xiàn)盤也要用這法進(jìn)行。二、隨時要進(jìn)行的清理:打開網(wǎng)頁——點最上面一排里的“工具”——點“Internet選項”——再點中間的“Internet臨時文件”中的“刪除文件”——再在“刪除所有脫機內(nèi)容”前的方框里打上勾——再點“確定”——清完后又點“確定”。這樣,可為打開網(wǎng)和空間提高速度。三、一星期進(jìn)行的盤的垃圾清理:點“開始”——用鼠標(biāo)指著“所有程序”,再指著“附件”,再指著“系統(tǒng)工具”,再點“磁盤粹片整理程序”——點C盤,再點“碎片整理”(這需要很長時間,最好在您去吃飯和沒用電腦時進(jìn)行。清理中您可看到您的盤里的狀況,可將清理前后對比一下)——在跳出“清理完成”后點“關(guān)閉”。按上述,對D,E,F(xiàn)盤分別進(jìn)行清理。電腦系統(tǒng)越來越慢,怎么刪除臨時文件啊1.關(guān)閉"休眠"方法:打開[控制面板]→[電源選項]→[休眠],把"啟用休眠"前面的勾去掉說明:休眠是系統(tǒng)長時間一種待機狀態(tài),使您在長時間離開電腦時保存操作狀態(tài),如果您不是經(jīng)常開著電腦到別處去的話,那就把它關(guān)了吧!☆立即節(jié)省:256M2.關(guān)閉"系統(tǒng)還原"方法:打開[控制面板]→[系統(tǒng)]→[系統(tǒng)還原],把"在所有驅(qū)動器上關(guān)閉系統(tǒng)還原'勾上說明:系統(tǒng)還原是便于用戶誤操作或產(chǎn)生軟件問題時的一種挽救手段,可以回復(fù)到誤操作以前的狀態(tài).不建議初級用戶使用.當(dāng)然,它采用的是跟蹤手段,需要記錄大量信息,所消耗的資源也要很大的.☆立即節(jié)省:數(shù)百M(根據(jù)還原點的多少而不同)您也可以在不關(guān)閉系統(tǒng)還原的前提下,相應(yīng)的減少系統(tǒng)還原所占的磁盤空間,這只會減少可用還原點的數(shù)目,一般還原點有一兩個就夠了吧.方法:...[系統(tǒng)還原]-選擇一個"可用驅(qū)動器"-[設(shè)置]-調(diào)整"要使用的磁盤空間"3.關(guān)閉"遠(yuǎn)程管理"方法:打開[控制面板]→[系統(tǒng)]→[遠(yuǎn)程],把"允許從這臺計算機發(fā)送遠(yuǎn)程協(xié)助邀請"前面的勾去掉.說明:誰會經(jīng)常用到這種功能呢?它占用的不是磁盤空間,但是會影響系統(tǒng)運行速度.☆提高系統(tǒng)性能4.關(guān)閉"自動更新"方法:打開[控制面板]→[自動更新]→選"關(guān)閉自動更新"說明:系統(tǒng)更新占用的也不是磁盤空間,您可以在有可用更新時到微軟的更新頁面上更新,而不是總需要一個進(jìn)程監(jiān)視那是不是有可用更新.☆提高系統(tǒng)性能5.關(guān)閉"索引服務(wù)"方法:[開始]→[運行]→輸入"msconfig"→[服務(wù)]去掉indexingservise前面的勾說明:索引服務(wù)是提高系統(tǒng)搜索速的的,誰沒事總在系統(tǒng)里搜來搜去啊☆提高系統(tǒng)性能6.減少開機加載的啟動項方法:[開始]→[運行]→輸入"msconfig"→[啟動]去掉不必要的啟動項說明:必要的啟動項一般"系統(tǒng)盤\windows\system32下的最好不要去掉;而肯定能去掉的有TINTSETPIMJPMIGIMSCMIGQQ等☆加快開機速度7.合理設(shè)置虛擬內(nèi)存方法:打開[控制面板]→[系統(tǒng)]→[高級]-[性能]設(shè)置-[高級]-[虛擬內(nèi)存]更改-在"自定義大小"中填入數(shù)值說明:一般的最小值是物理內(nèi)存的1.5倍,最大值是物理內(nèi)存的3倍;如果您經(jīng)常運行大型軟件的話最小值應(yīng)該設(shè)為(物理內(nèi)存*1.5*0.2+物理內(nèi)存*1.5),最大值應(yīng)為(物理內(nèi)存*3*0.2+物理內(nèi)存*3)☆提高系統(tǒng)性能8.取消系統(tǒng)失敗時的日志文件和詢問打開[控制面板]→[系統(tǒng)]→[高級]→[啟動和故障恢復(fù)]→[系統(tǒng)失敗]去掉"將事件寫入系統(tǒng)日志""發(fā)送錯誤警報"☆提高系統(tǒng)性能9.刪除無用的文件方法:打開[控制面板]→[文件夾選項]→[查看]→[顯示所有文件和文件夾]C:\DocumentsandSettings\用戶名\Cookies\除index文件外的所有文件(瀏覽網(wǎng)頁產(chǎn)生的記錄文件)C:\DocumentsandSettings\用戶名\LocalSettings\Temp\下的所有文件(用戶臨時文件)C:\DocumentsandSettings\用戶名\LocalSettings\TemporaryInternetFiles\下的所有文件(瀏覽網(wǎng)頁記錄的多媒體信息,加速以后瀏覽)C:\DocumentsandSettings\用戶名\LocalSettings\History\下的所有文件(訪問歷史紀(jì)錄)C:\DocumentsandSettings\用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)C:\WINDOWS\Temp\下的所有文件(臨時文件)C:\WINDOWS\ServicePackFiles下的所有文件(升級sp1或sp2后的備份文件)C:\WINDOWS\DriverCache\i386下的壓縮文件(驅(qū)動程序的備份文件)C:\WINDOWS\SoftwareDistribution\download下的所有文件(未完成的軟件下載)C:\Windows\下以$u...開頭的隱藏文件(微軟更新安裝文件備份)☆立即節(jié)省:數(shù)百M10.磁盤碎片整理下面該做的就是磁盤碎片整理了,只有整理之后才能獲得更多的空間哦^_^方法:[開始]→[程序]→[附件]→[系統(tǒng)工具]→[磁盤碎片整理]...(記得先"分析"后"整理")二。發(fā)信人:liushafeng(終結(jié)者),信區(qū):Hardware標(biāo)題:減少WinXP資源占用的八大技巧發(fā)信站:紫金飛鴻(SunJun416:25:482006)WindowsXP被微軟稱為其歷史上最優(yōu)秀的操作系統(tǒng),有讓你眼花繚亂的各種功能、更快的速度,當(dāng)然這一切都對計算機的硬件提出了更高的要求,如果你希望WindowsXP能夠盡可能少地占用你有限的雖然WindowsXP被微軟自稱為有史以來最穩(wěn)定、功能最強大的Windows操作系統(tǒng),并且運行速度飛快——啟動速度甚至比同樣配置的Win2000還要快許多,你可能依然不滿足于此,希望一、使用樸素界面XP安裝后默認(rèn)的界面包括任務(wù)欄、開始選單、桌面背景、窗口、按鈕等都采用的是XP的豪華、炫目的風(fēng)格,但缺點顯而易見,它們將消耗掉不少系統(tǒng)資源,但實用意義不大。[方法]鼠標(biāo)右鍵單擊桌面空白處,在彈出選單點擊“屬性”進(jìn)入顯示屬性設(shè)置窗口,將“主題、外觀”都設(shè)置為“Windows經(jīng)典”,將桌面背景設(shè)置為“無”,按確定保存退出。二、減少啟動時加載項目許多應(yīng)用程序在安裝時都會自作主張?zhí)砑又料到y(tǒng)啟動組,每次啟動系統(tǒng)都會自動運行,這不僅延長了啟動時間,而且啟動完成后系統(tǒng)資源已經(jīng)被吃掉不少![方法]選擇“開始”選單的“運行”,鍵入“msconfig”啟動“系統(tǒng)配置實用程序”,進(jìn)入“啟動”標(biāo),在此窗口列出了系統(tǒng)啟動時加載的項目及來源,仔細(xì)查看你是否需要它自動加載,否則清除項目前的復(fù)選框,加載的項目愈少,啟動的速度自然愈快。此項需要重新啟動方能生效。三、優(yōu)化視覺效果[方法]選擇“系統(tǒng)屬性”中的“高級”標(biāo)簽進(jìn)入“性能選項”界面,其中“視覺效果”中可供選擇的包括:自動設(shè)置為最佳、最佳外觀、最佳性能、自定義。選中的效果越多則占用的系統(tǒng)資源越多,選定“最佳性能”項將關(guān)閉列表中列出諸如淡入淡出、平滑滾動、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論