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