實驗結果

從視頻中,可以看到,當手指捏住傳感器后,OLED屏上的溫濕度數(shù)據(jù)發(fā)生變化。
基于FPGA的OLED動態(tài)顯示(溫濕度實時數(shù)據(jù))
Part一
硬件解析
1. 國產(chǎn)FPGA:HME-P1P060
58K邏輯單元,36K LUT-6,4個PLL,32個全局時鐘,144個DSP,基本上已經(jīng)滿足了學生等級開發(fā),感興趣的,可以去米聯(lián)客店鋪看看。

2. 0.96寸OLED

關于OLED的顯示,這里不做介紹,詳見二級菜單文章:京微齊力:基于HMEP060的OLED字符顯示(及FUXI工程建立演示)
3. DTH11溫濕度模塊(比較枯燥,請耐心看完原理)

DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。

上圖為DHT11的內部原理圖,可以看出感濕元件、感溫元件和OTP內存直接連接在內部一個八位MCU上,該MCU通過計算得出測量數(shù)值。
DATA用于FPGA與DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分為整數(shù)部分和小數(shù)部分,數(shù)據(jù)格式如下:一次完整的數(shù)據(jù)傳輸為40bit,高位在前。
數(shù)據(jù)格式:

數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結果的末8位。校驗和=數(shù)據(jù)之和,通過這個可以判斷接收到的數(shù)據(jù)是否正確。
下面說一下,數(shù)據(jù)傳輸時序:

主機(此處指FPGA)首先發(fā)送一次開始信號,即:拉低數(shù)據(jù)線,保持t1(至少18ms)時間;然后拉高數(shù)據(jù)線保持t2(20~40us)時間,隨后開始讀取DHT11的響應;如果操作正確的話,DHT11會拉低數(shù)據(jù)線,保持t3(80us)時間,作為響應信號;接下來DHT11會拉高數(shù)據(jù)線,保持t4(80us)時間,隨后開始輸出有效數(shù)據(jù)。
DHT11共輸出40bit有效數(shù)據(jù),每1bit數(shù)據(jù)都是以50us低電平開始,高電平的持續(xù)時間作為判斷數(shù)據(jù)位的條件。當數(shù)據(jù)位為0時,高電平的持續(xù)時間為26~28us;當數(shù)據(jù)位為1時,高電平的持續(xù)時間為70us。
DHT11數(shù)據(jù)位“0”時序圖和數(shù)據(jù)位“1”時序圖如圖:

需要注意的是,DHT11的溫度和濕度轉換較慢,如果讀取速度過快會導致DHT11無法響應的情況。
Part二
程序設計
1. DTH11數(shù)據(jù)采集(狀態(tài)機)
DHT11驅動模塊使用三段式狀態(tài)機來讀取DHT11的溫度和濕度值,從下圖可以比較直觀的看到每個狀態(tài)實現(xiàn)的功能以及跳轉到下一個狀態(tài)的條件。
再次強調,這里需要注意:由于DHT11溫度和濕度轉換較慢,如果讀取速度過快會導致DHT11無法響應的情況,所以我們在每次讀操作結束后延時兩秒(這樣魯棒性會比較高,也可以不要這步)。

在時序圖中,提到了18ms、26-28us、20-40us、50us、70us、80us等等,但是經(jīng)過分析后,并不需要定義這么多個計時周期數(shù),只需要定義兩個即可。為什么只定義這兩個就可以了呢?
在時序圖中,需要FPGA判斷時間的,有兩個位置,一個是FPGA拉低18ms以上,另外一個是判斷數(shù)據(jù)表示是數(shù)據(jù)0還是數(shù)據(jù)1。第一個很清楚就是18ms。數(shù)據(jù)0表示的數(shù)據(jù)位26-28us,為了保險起見,這里設置為35us,如果高電平的持續(xù)時間低于35us,那么就表示數(shù)據(jù)0。






2. 字符顯示
OLED的顯示(包括字符提取等),這里不做介紹,我在另一篇文章有介紹過,感興趣的可以看看:京微齊力:基于HMEP060的OLED字符顯示(及FUXI工程建立演示)

3. 字符輸出
代碼有注釋,可以看注釋

35 本例中,OLED顯示一共分為如下5個狀態(tài)。在初始化完成后,屏幕顯示的是雜亂無章的數(shù)據(jù),所以在初始化完成后,要進行一次刷新,將OLED中的數(shù)據(jù)全部寫0。然后進行顯示固定不變的支符,例如像溫度濕度這樣的字符。然后進入空閑態(tài),直到DHT11采集到數(shù)據(jù)后,就進入到數(shù)據(jù)顯示狀態(tài),數(shù)據(jù)顯示完成后,又回到空閑態(tài)。這是整個的一個流程。






Part三
弧形抓取
在工程中,例化了debugware IP核,對溫濕度傳感器的波形進行抓取,可以看到如下:

前文有說過,傳感器的數(shù)據(jù)位總共有40位,考慮到后續(xù)可能抓取別的波形,所以此處debugware的數(shù)據(jù)位寬我設置到了45位,預留了5位。
這里抓到的波形是:2E 0019 034A
對應的二進制即:
0010_1110_0000_0000_0001_1001_0000_0011_0100_1010
根據(jù)上文數(shù)據(jù)公式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和數(shù)據(jù)
所以此刻的,濕度:
46.00(10_1110_0000_0000)
溫度:
25.03(0001_1001_0000_0011)

審核編輯:湯梓紅
-
傳感器
+關注
關注
2577文章
55337瀏覽量
793224 -
dsp
+關注
關注
561文章
8263瀏覽量
367819 -
FPGA
+關注
關注
1662文章
22474瀏覽量
638337 -
OLED
+關注
關注
121文章
6368瀏覽量
234122 -
動態(tài)顯示
+關注
關注
0文章
40瀏覽量
11986
原文標題:京微齊力:基于P1P060的OLED動態(tài)顯示(溫濕度實時數(shù)據(jù))
文章出處:【微信號:HME-FPGA,微信公眾號:HME京微齊力】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
低功耗+LCD常顯單芯片藍牙溫濕度計方案
紡織車間溫濕度數(shù)據(jù)采集遠程監(jiān)控系統(tǒng)方案
冷庫溫濕度監(jiān)控系統(tǒng)物聯(lián)網(wǎng)解決方案
全無線物聯(lián)網(wǎng)庫房溫濕度自動監(jiān)控系統(tǒng)設計與實施解決方案
數(shù)據(jù)安全優(yōu)先:以太網(wǎng)溫濕度監(jiān)測與追溯合規(guī)方案
【瑞薩RA6E2地奇星開發(fā)板試用】DHT11 測量溫濕度
溫濕度傳感器HTU31D在溫濕度控器中的應用優(yōu)勢
一款適用于粉塵、易結露等惡劣環(huán)境溫濕度監(jiān)控中的溫濕度傳感芯片
物聯(lián)網(wǎng)溫濕度監(jiān)控系統(tǒng)
常見的溫濕度傳感器類型?
溫濕度變送器功能有哪些?一文詳細解析
智能倉儲:溫濕度監(jiān)控方案應用
用樹莓派RP2350 DIY 桌面動態(tài)溫濕度計
樹莓派RP2350 - 桌面動態(tài)溫濕度計
LoRa無線技術的溫濕度監(jiān)測預警系統(tǒng)
基于FPGA的OLED動態(tài)顯示(溫濕度實時數(shù)據(jù))
評論