|
第一次在51黑電子論壇發(fā)帖,內(nèi)心有點(diǎn)小激動(dòng),各位前輩多多指教。
51hei截圖20200426220037.jpg (40.86 KB, 下載次數(shù): 267)
下載附件
2020-4-26 22:03 上傳
51hei截圖20200426220026.jpg (35.62 KB, 下載次數(shù): 115)
下載附件
2020-4-26 22:03 上傳
51hei截圖20200426220017.jpg (75.63 KB, 下載次數(shù): 124)
下載附件
2020-4-26 22:02 上傳
51hei截圖20200426215955.jpg (37.96 KB, 下載次數(shù): 109)
下載附件
2020-4-26 22:01 上傳
溫濕度傳感器 DHT11
1.實(shí)驗(yàn)內(nèi)容
1)掌握溫濕度傳感器使用
2)掌握點(diǎn)對(duì)點(diǎn)通訊
3)掌握 DHT11 移植方法
2.實(shí)現(xiàn)現(xiàn)象
終端獲得 DH T11 傳感器的數(shù)據(jù),無(wú)線傳輸給協(xié)調(diào)器;協(xié)調(diào)器再通過(guò)串口發(fā)給電腦串口調(diào)試
助手顯示。協(xié)調(diào)器、終端通過(guò)串口輸出,LCD 也同步刷新。
3.實(shí)驗(yàn)詳解
由于此實(shí)驗(yàn)和 DS18B20 共用一個(gè) IO 口,所以移植起來(lái)更加容易。DHT11 帶溫度、濕度檢
測(cè),而 DS18B20 則只帶溫度檢測(cè),不過(guò)精度相對(duì)要高點(diǎn),一般應(yīng)用只會(huì)選其中一種而已。程序
大部分相同,本實(shí)驗(yàn)中只講不同部分。
打開(kāi)《3.高級(jí)篇-zigbee 協(xié)議棧應(yīng)用與組網(wǎng)\7.溫濕度傳感器 DHT11\ZStack-CC2530-2.3.0-
1.4.0\Projects\zstack\Samples\SampleApp\CC2530DB\SampleApp.eww》 工程。
1)我們將基礎(chǔ)實(shí)驗(yàn)里面的 DHT11.c 和 DHT11.h 文件復(fù)制到 SampleApp\Source 文件夾下。
2)在協(xié)議棧的 APP 目錄樹(shù)下點(diǎn)擊右鍵--Add--添加 DHT11.c 和 DHT11.h 文件。并在
SampleApp.c 文件中包含 DHT11.h 頭文件。
3)初始化傳感器引腳,和 ds18b20 共用一個(gè) GPIO
4)讀取溫度數(shù)據(jù),這個(gè)是重點(diǎn),其它基本都相同,只要看懂此段代碼即可會(huì)使用 DH11 了.
void SampleApp_Send_P2P_Message( void )
{
byte i, temp[3], humidity[3], strTemp[7];
DHT11(); //獲取溫濕度
//將溫濕度的轉(zhuǎn)換成字符串,供 LCD 顯示
temp[0] = wendu_shi+0x30;
temp[1] = wendu_ge+0x30;
temp[2] = '\0';
humidity[0] = shidu_shi+0x30;
humidity[1] = shidu_ge+0x30;
humidity[2] = '\0';
//將數(shù)據(jù)整合后方便發(fā)給協(xié)調(diào)器顯示
osal_memcpy(strTemp, temp, 2);
osal_memcpy(&strTemp[2], " ", 2);
osal_memcpy(&strTemp[4], humidity, 3);
//獲得的溫濕度通過(guò)串口輸出到電腦顯示
HalUARTWrite(0, "T&H:", 4);
HalUARTWrite(0, strTemp, 6);
HalUARTWrite(0, "\n",1);
//輸出到 LCD 顯示
for(i=0; i<3; i++) //輸出溫度、濕度提示字符
{
if(i==0)
{
LCD_P16x16Ch(i*16,4,i*16);
LCD_P16x16Ch(i*16,6,(i+3)*16);
}
else
{
LCD_P16x16Ch(i*16,4,i*16);
LCD_P16x16Ch(i*16,6,i*16);
}
}
LCD_P8x16Str(44, 4, temp); //LCD 顯示溫度值
LCD_P8x16Str(44, 6, humidity); //LCD 顯示濕度值
if ( AF_DataRequest( &SampleApp_P2P_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_P2P_CLUSTERID,6,strTemp,&SampleApp_TransID,AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
}
5)接收數(shù)據(jù)
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
uint16 flashTime;
switch ( pkt->clusterId )
{
case SAMPLEAPP_P2P_CLUSTERID:
HalUARTWrite(0, "T&H:", 4); //提示接收到數(shù)據(jù)
HalUARTWrite(0, pkt->cm d.Data, pkt->cmd.DataLength); //輸出接收到的數(shù)據(jù)
HalUARTWrite(0, "\n", 1); // 回車(chē)換行
break;
case SAMPLEAPP_PERIODIC_CLUSTERID:
break;
case SAMPLEAPP_FLASH_CLUSTERID:
flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );
HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );
break;
}
}
6)DH11.c 文件還需要修改一個(gè)地方。打開(kāi)文件將原來(lái)的延時(shí)函數(shù)改成協(xié)議棧自帶的延時(shí)函數(shù),
保證時(shí)序的正確。同時(shí)要包含#include"OnBoard.h"。
4.實(shí)驗(yàn)步驟
1)選擇 CoodinatorEB-Pro, 下載到開(kāi)發(fā)板 A;作為協(xié)調(diào)器,通過(guò) USB 線跟電腦連接.
2)選擇 EndDeviceEB-Pro, 下載到開(kāi)發(fā)板 B;作為終端設(shè)備無(wú)線發(fā)送數(shù)據(jù)給協(xié)調(diào)器,也通過(guò) USB
線跟電腦連接.
3)給兩塊開(kāi)發(fā)板上電,打開(kāi)串口調(diào)試助手,設(shè)為:9600 8N1 并打開(kāi)串口,串口請(qǐng)選擇自己的端
口號(hào)。終端連網(wǎng)成功后會(huì)向協(xié)調(diào)器發(fā)數(shù)據(jù),實(shí)驗(yàn)結(jié)果如下圖所示。5.實(shí)驗(yàn)結(jié)果左邊是終端 右邊是協(xié)調(diào)器 ,終端采集溫度,通過(guò) ZigBee 發(fā)送到協(xié)調(diào)器,協(xié)調(diào)器經(jīng)過(guò)串口,
將數(shù)據(jù)發(fā)到電腦
好啦,完成了。雖然是搬磚,但是也是有水平的搬磚的。
全部資料51hei下載地址:
溫濕度傳感器DHT11.7z
(1.87 MB, 下載次數(shù): 115)
2020-4-26 23:00 上傳
點(diǎn)擊文件名下載附件
指導(dǎo)資料+源程序 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|