最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于CH32V208WB和CH32V003F4的微型氣象站

2023-02-27 03:26 作者:修地球八級工  | 我要投稿

1.前言

????微型氣象站主要實(shí)現(xiàn)對居住或辦公場所內(nèi)溫度、濕度、大氣壓強(qiáng)和光照等氣象變化實(shí)時監(jiān)測,更為準(zhǔn)確呈現(xiàn)屋內(nèi)或辦公區(qū)域的氣象變化,便于直觀感知。

????微型氣象站由檢測端和接收端兩部分組成。檢測端連接傳感器,將傳感器測量數(shù)據(jù)上報(bào)至騰訊云物聯(lián)網(wǎng)平臺。在騰訊云物聯(lián)網(wǎng)平臺建立數(shù)據(jù)流轉(zhuǎn)規(guī)則,將檢測端上報(bào)的數(shù)據(jù)以MQTT報(bào)文形式轉(zhuǎn)發(fā)至接收端。接收端處理收到的數(shù)據(jù),顯示在液晶屏上。實(shí)現(xiàn)一處檢測,多處查看。

數(shù)據(jù)流示意圖

2.硬件構(gòu)成

2.1 檢測端硬件構(gòu)成

??? 檢測端圍繞CH32V208WBU6評估板,外接AHT21B溫濕度傳感器、BMP280壓力傳感器、光敏電阻、1.44"LCD和W25Q64 SPI Flash模塊組成。由于作者非電子行業(yè)從業(yè)者,能力有限,沒有設(shè)計(jì)專門的電路板,所以本項(xiàng)目外接模塊均以杜邦線連接。

檢測端接線圖
檢測端運(yùn)行LCD顯示內(nèi)容

a.CH32V208WBU6評估板:

CH32V208WBU6評估板
系統(tǒng)框圖

??? 主控CH32V208WBU6集成10M以太網(wǎng) MAC+PHY模塊、SPI接口、I2C接口和16路ADC通道等豐富外設(shè);以及最大可配置64KB易失數(shù)據(jù)存儲區(qū)SRAM,480KB可配置程序存儲區(qū)CodeFlash(零等待應(yīng)用區(qū)+非零等待數(shù)據(jù)區(qū))。滿足本項(xiàng)目對外設(shè)資源的需求。

????CH32V208WBU6通過I2C接口讀取并處理AHT21B和BMP280測量的溫濕度和大氣壓強(qiáng)原始數(shù)據(jù)成實(shí)際值;通過ADC通道采樣光敏電阻的電壓轉(zhuǎn)換成光照狀態(tài),以及采樣內(nèi)置溫度傳感器的溫度并轉(zhuǎn)換成實(shí)際值作為參照溫度;通過SPI接口接入的LCD和帶字庫的SPI Flash將傳感器測量值顯示在LCD上;通過將接入了10M以太網(wǎng) MAC+PHY模塊的RJ45接口連接路由器,接入互聯(lián)網(wǎng),以TCP協(xié)議連接至騰訊云物聯(lián)網(wǎng)平臺,以MQTT消息傳輸協(xié)議定時上報(bào)測量的溫濕度和氣壓數(shù)據(jù),實(shí)現(xiàn)跨區(qū)域消息傳遞,并定期獲取網(wǎng)絡(luò)時間校準(zhǔn)RTC時間。

外設(shè)資源使用說明

b.AHT21B溫濕度傳感器

AHT21B是一款配置了專用的ASIC傳感器芯片、高性能的半導(dǎo)體硅基電容式濕度傳感器和一個標(biāo)準(zhǔn)的片上溫度傳感器,使用標(biāo)準(zhǔn)I2C數(shù)據(jù)輸出信號格式。

?AHT21B溫度測量范圍:-40~+80°C,濕度測量范圍:0~100%RH;溫度測量精度:±0.5℃,濕度測量精度:±3%RH(25℃);溫度分辨率:0.01℃,濕度分辨率:0.024%RH。

????本項(xiàng)目選用是已經(jīng)引出了電源和I2C接口的AHT21B模塊,方便接入CH32V208WB評估板使用。

c.BMP280氣壓傳感器

BMP280壓力測量范圍:300-1100hPa(海拔高度-500m到9000m);相對精度:±0.12hPa ?(950-1050hPa@25℃);絕對精度:±1hPa(950-1050hPa,0~40℃);支持I2C和SPI兩種形式通信。

??? 本項(xiàng)目選用是已經(jīng)引出了電源和I2C接口的BMP280模塊,方便接入CH32V208WB評估板使用。

d.1.44" 128x128像素LCD

????本項(xiàng)目選用的是驅(qū)動IC為ST7735S帶背光的液晶屏,SPI接口通信。屏幕尺寸1.44寸,分辨率128x128,此尺寸和分辨率顯示16像素字高的漢字和ASCII字符具有不錯的效果,也可以減少顯示內(nèi)容刷新對主控CH32V208WB過長時間的占用,避免過大的字符或圖案刷新占用主控CH32V208WB過長時間,影響實(shí)時性要求高的任務(wù)刷新。

e.SPI Flash

????存儲LCD顯示字庫,為LCD顯示ASCII字符和漢字字符提供字模數(shù)據(jù)來源。

f.光敏電阻

????光敏電阻器是利用半導(dǎo)體的光電導(dǎo)效應(yīng)制成的一種電阻值隨入射光的強(qiáng)弱而改變的電阻器,利用此特性接入ADC通道采樣電阻值變化,即可轉(zhuǎn)換為光照情況。

2.2 接收端硬件構(gòu)成

????接收端圍繞CH32V003F4P6核心板,外接ESP8266-01 802.11b/g/n Wi-Fi通信模塊和0.96" 128x64像素OLED液晶屏組成。

接收端接線圖
接收端運(yùn)行效果

a.CH32V003F4P6核心板

CH32V003F4P6核心板
系統(tǒng)框圖

????主控CH32V003F4P6集成2個看門狗定時器和1個32位系統(tǒng)時基定時器,以及USART、I2C等常見外設(shè),具有2KB SRAM+16KB Flash,滿足外接模塊對主控外設(shè)資源的需求。

????CH32V003F4P6通過USART1接入ESP8266-01模塊,配置ESP8266-01模塊連接至騰訊云物聯(lián)網(wǎng)平臺,接收騰訊云物聯(lián)網(wǎng)平臺流轉(zhuǎn)的檢測端上報(bào)的數(shù)據(jù);通過IIC1接口接入OLED屏幕,將接收到的數(shù)據(jù)現(xiàn)在OLED屏幕上。

外設(shè)資源使用說明

b.ESP8266-01模塊

????ESP8266-01模塊是一款基于樂鑫ESP8266EX的低功耗UART-WiFi芯片模組,在燒錄MQTT+AT固件后,可以實(shí)現(xiàn)使用AT指令接入云端服務(wù),為連接該模塊的設(shè)備添加聯(lián)網(wǎng)功能。

????CH32V003F4P6沒有連接以太網(wǎng)相關(guān)的外設(shè),為了方便連接互聯(lián)網(wǎng),使用一片ESP8266-01模塊提供聯(lián)網(wǎng)功能。

c.0.96" OLED屏幕模塊

????本項(xiàng)目選用的是使用IIC模式通信的0.96" OLED屏幕模塊,屏幕像素128x64。接收端沒有大量的圖形或者數(shù)據(jù)刷新要求,此尺寸和模式滿足項(xiàng)目要求

3.程序說明

????檢測端和接收端程序均使用MounRiver Studio作為IDE開發(fā)編寫。文件編碼使用默認(rèn)的GBK,絕大多數(shù)文件內(nèi)都添加了方便理解的漢字注釋(如下方systick服務(wù)函數(shù)所示),如果使用默認(rèn)文件格式是UTF-8格式的編輯器或者IDE打開出現(xiàn)亂碼,請使用增強(qiáng)型文本編輯器轉(zhuǎn)換一下格式即可。

3.1 ?檢測端程序說明

??? 檢測端程序包含兩部分,一是傳感器檢測部分,每5s讀取一次傳感器測量值,處理成實(shí)際值后顯示在LCD屏幕上;二是ETH以太網(wǎng)任務(wù)部分,同步傳感器檢測周期5s,將最新一次的測量數(shù)據(jù)發(fā)送至騰訊云物聯(lián)網(wǎng)平臺。任務(wù)使用SysTick作為時基定時器,確保周期性任務(wù)的準(zhǔn)時執(zhí)行。

????從SPI Flash中讀取字模數(shù)據(jù)和將字模數(shù)據(jù)發(fā)送至LCD主控IC ST7735S均使用SPI DMA功能,提高數(shù)據(jù)傳輸效率。因?yàn)閷DC采樣的三個通道實(shí)時性要求不高,同步傳讀取傳感器測量值周期5秒,ADC工作模式配置使用手動觸發(fā),單次采樣,使用SPI DMA接收采樣數(shù)據(jù)。SysTick作為任務(wù)刷新時基定時器,每10ms在中斷服務(wù)函數(shù)中刷新一次以太網(wǎng)通信的時間任務(wù)狀態(tài)(統(tǒng)計(jì)TCP超時等),同時更新周期性任務(wù)狀態(tài)機(jī)狀態(tài)。

SysTick中斷服務(wù)函數(shù)

檢測端主任務(wù)
以太網(wǎng)任務(wù)

3.2 接收端程序說明

????接收端因?yàn)闆]有外接過多的模塊和涉及大量的數(shù)據(jù)處理,于是將系統(tǒng)時鐘調(diào)整至了與CH32V003F4P6核心板上晶振一致的24MHz,節(jié)省能耗。

接收端程序框圖

????USART1使用TC(發(fā)送完成)和IDLE(總線空閑)中斷結(jié)合DMA功能,形成接發(fā)不定長數(shù)據(jù)(一定范圍內(nèi)的不定長)形式,提高初始化配置ESP8266-01模塊工作模式和接收ESP8266-01模塊轉(zhuǎn)發(fā)的數(shù)據(jù)的效率。如下代碼介紹了TC和IDLE中斷對單次啟用DMA功能的配置方法。


????ESP8266-01模塊配置連接到騰訊云物聯(lián)網(wǎng)平臺使用狀態(tài)機(jī)模式,上一任務(wù)ESP8266-01模塊返回執(zhí)行成功后,解鎖并開始執(zhí)行下一任務(wù)。如下代碼介紹了使用AT指令配置EPS8266-01模塊連接至騰訊云物聯(lián)網(wǎng)平臺的流程。

4.騰訊云物聯(lián)網(wǎng)開發(fā)平臺

騰訊云物聯(lián)網(wǎng)開發(fā)平臺(IoT Explorer)是面向智慧生活與產(chǎn)業(yè)互聯(lián)應(yīng)用的物聯(lián)網(wǎng) PaaS 平臺,為基于物聯(lián)網(wǎng)的各行業(yè)設(shè)備制造商、方案商及應(yīng)用開發(fā)商提供一站式設(shè)備智能化服務(wù)。

本項(xiàng)目基于騰訊云物聯(lián)網(wǎng)開發(fā)平臺的提供最多50個設(shè)備接入的“公共實(shí)例”資源實(shí)現(xiàn)。

4.1 騰訊云物聯(lián)網(wǎng)開放平臺新建一個產(chǎn)品

啟用或新建公共實(shí)例
新建一個項(xiàng)目

新建一個產(chǎn)品

4.2 物模型添加自定義功能

物模型中添加自定義功能

4.3 屬性上報(bào)實(shí)現(xiàn)方式

物模型主題

例如:

將標(biāo)識符后的數(shù)據(jù)發(fā)布至屬性上報(bào)主題

如果訂閱了屬性上報(bào)響應(yīng)主題會收到如下圖所示的報(bào)文內(nèi)容

屬性上報(bào)響應(yīng)主題報(bào)文

檢測端上報(bào)屬性由如下部分代碼實(shí)現(xiàn)

4.4 獲取網(wǎng)絡(luò)時間校準(zhǔn)RTC時間的實(shí)現(xiàn)方式

獲取ntp信息報(bào)文

例如:

訂閱ntp服務(wù)消息下行主題

發(fā)布報(bào)文:{"type":"get","resource":["time"]}

向ntp服務(wù)消息上行主題發(fā)布獲取ntp信息的主題

收到訂閱的ntp服務(wù)消息下行主題發(fā)布的ntp消息,字符“time”后的數(shù)值即為當(dāng)前UTC時間戳,ntptime1和ntptime2后的數(shù)值最后三位為毫秒。

收到訂閱ntp服務(wù)消息下行主題發(fā)布的ntp消息

程序中由如下代碼提取出time字符之后的數(shù)值字符并轉(zhuǎn)換成整形數(shù)字

再將變量UnixTimeStampCount存儲的UTC時間戳寫入到RTC計(jì)數(shù)寄存器,實(shí)現(xiàn)設(shè)備同步網(wǎng)絡(luò)時間。

4.5 物模型屬性云流轉(zhuǎn)實(shí)現(xiàn)方式

a.檢測端和接收端以新建設(shè)備形式添加至“設(shè)備調(diào)試”列表

新建設(shè)備

b.新建一個或者使用一個空閑的自定義主題作為消息云流轉(zhuǎn)目標(biāo)主題接收檢測端上報(bào)主題的消息

新建自定義主題

c.“數(shù)據(jù)流轉(zhuǎn)”→“規(guī)則引擎”→“新建規(guī)則”,新建一條數(shù)據(jù)流轉(zhuǎn)規(guī)則

新建數(shù)據(jù)流轉(zhuǎn)規(guī)則

d.編輯規(guī)則

編輯規(guī)則
編輯流轉(zhuǎn)數(shù)據(jù)源

e.添加行為

添加流轉(zhuǎn)數(shù)據(jù)的行為

f.啟用規(guī)則

啟用規(guī)則

g.訂閱自定義主題,等待規(guī)則轉(zhuǎn)發(fā)數(shù)據(jù)

設(shè)備訂閱接收云流轉(zhuǎn)消息的自定義主題
接收端收到流轉(zhuǎn)的數(shù)據(jù)
對照檢測端上報(bào)的數(shù)據(jù)

h.在流轉(zhuǎn)規(guī)則“字段”中添加篩選條件(params.Temperature, params.Humidity, params.Atmosphere),只將上報(bào)屬性報(bào)文中“params.Temperature”,“params.Humidity”和“params.Atmosphere”三項(xiàng)內(nèi)容流轉(zhuǎn)至接收端。

上報(bào)的 JSON 數(shù)據(jù)格式,可以是嵌套的 JSON。例如:{"device_status":{"switch":"on"}},可以通過 device_status.switch 來獲取到 switch 的值。

添加流轉(zhuǎn)篩選條件

添加篩選條件后收到的流程消息
對照檢測端上報(bào)的數(shù)據(jù)

接收端對流轉(zhuǎn)數(shù)據(jù)的處理方式如下代碼所示:


5.后記

????感謝沁恒公司組織的這次創(chuàng)新應(yīng)用大賽,讓我接觸到了沁恒公司推出的外設(shè)資源豐富的RISC-V內(nèi)核的通用微控制器,結(jié)合易于上手的IDE和常用開發(fā)文檔均能找到中文版本,很大程度縮短了學(xué)習(xí)時間。由于本人水平有限,謬誤之處,請不吝批評指正。


基于CH32V208WB和CH32V003F4的微型氣象站的評論 (共 條)

分享到微博請遵守國家法律
江陵县| 昌都县| 讷河市| 改则县| 成安县| 乌兰浩特市| 驻马店市| 和平县| 云龙县| 惠东县| 遂川县| 武山县| 包头市| 仙居县| 新营市| 通州市| 云霄县| 黔西| 会昌县| 武汉市| 古交市| 平乡县| 彰武县| 盖州市| 玉山县| 铁岭市| 新闻| 易门县| 长垣县| 齐齐哈尔市| 莱芜市| 江永县| 大冶市| 巴中市| 湖口县| 黔西县| 赣州市| 集贤县| 方城县| 奈曼旗| 木里|