RA4M2開發(fā)(4)----讀取HS3003數(shù)據(jù),并在OLED上顯示,串口打印
概述
HS3003是一種數(shù)字式溫濕度傳感器,可以測量環(huán)境中的溫度和濕度。讀取HS3003的數(shù)據(jù)需要連接傳感器到一個數(shù)據(jù)采集系統(tǒng),一般是微處理器或者單片機(jī)。以下是一個簡單的讀取HS3003數(shù)據(jù)的概述:
連接電路:將HS3003傳感器連接到微處理器或單片機(jī)的GPIO引腳。需要注意HS3003的電氣特性,比如供電電壓和信號電平等。
發(fā)送命令:發(fā)送讀取溫濕度數(shù)據(jù)的命令到HS3003傳感器。具體的命令格式和通信協(xié)議需要參考HS3003的數(shù)據(jù)手冊。
接收數(shù)據(jù):等待HS3003傳感器回應(yīng),并接收傳感器發(fā)送的數(shù)據(jù)。HS3003傳感器的數(shù)據(jù)一般是經(jīng)過數(shù)字轉(zhuǎn)換后的二進(jìn)制數(shù)據(jù),需要解析成溫濕度值。
解析數(shù)據(jù):將接收到的二進(jìn)制數(shù)據(jù)解析成溫濕度值。具體的解析算法需要參考HS3003的數(shù)據(jù)手冊,一般涉及到位移、位運(yùn)算、符號擴(kuò)展等操作。
處理數(shù)據(jù):對得到的溫濕度值進(jìn)行處理,比如校準(zhǔn)、濾波、顯示等。
循環(huán)讀?。焊鶕?jù)需要循環(huán)執(zhí)行步驟2到5,以實(shí)現(xiàn)連續(xù)讀取HS3003傳感器的溫濕度數(shù)據(jù)。 需要注意的是,HS3003傳感器的使用和讀取數(shù)據(jù)需要按照數(shù)據(jù)手冊的規(guī)范和建議操作,否則可能會導(dǎo)致數(shù)據(jù)精度降低、傳感器損壞等問題。 最近在弄課程,需要樣片的可以加群申請:6_15061293。
視頻教學(xué)
https://www.bilibili.com/video/BV1th4y1R7of/

csdn課程
csdn課程更加詳細(xì)。?https://edu.csdn.net/course/detail/36131
樣品申請
https://www.wjx.top/vm/wBbmSFp.aspx#
硬件準(zhǔn)備
首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是芯片型號R7FAM2AD3CFP的開發(fā)板:?

樣品申請
https://www.wjx.top/vm/wBbmSFp.aspx#
IIC配置
配置RA4M2的I2C接口,使其作為I2C master進(jìn)行通信。 對于OLED的IIC配置,可以查看往期的博客。 查看HS3003說明書,最小電路圖如下所示。?

由于需要讀取HS3003數(shù)據(jù),需要使用IIC接口,這里使用PMOD2上的接口(P410和P411)。?

點(diǎn)擊Stacks->New Stack->Connectivity -> I2C Master(r_sci_i2c)。?

查看說明書可以得知,ISL29035的地址為0x44(1000100)。?

設(shè)置IIC的配置。?

R_SCI_I2C_Open()函數(shù)原型

R_SCI_I2C_Open()函數(shù)為執(zhí)行IIC初始化,開啟配置如下所示。
R_SCI_I2C_Write()函數(shù)原型

R_SCI_I2C_Write()函數(shù)是向IIC設(shè)備中寫入數(shù)據(jù),寫入格式如下所示。
R_SCI_I2C_Read()函數(shù)原型

R_SCI_I2C_Read()函數(shù)是向IIC設(shè)備中讀取數(shù)據(jù),讀取格式如下所示。
sci_i2c_master_callback()回調(diào)函數(shù)
對于數(shù)據(jù)是否發(fā)送完畢,可以查看是否獲取到I2C_MASTER_EVENT_TX_COMPLETE字段。?

HS3003寫數(shù)據(jù)
對于HS3003寫數(shù)據(jù),手冊上的操作方式如下所示。 設(shè)備地址+操作地址+數(shù)據(jù)?

初始化程序如下所示。
HS3003讀數(shù)據(jù)
對于讀取數(shù)據(jù),可以直接在發(fā)送地址后,進(jìn)行讀取,當(dāng)時需要注意再發(fā)送完地址后,要有等待時間。?

讀取操作函數(shù)如下所示,先發(fā)送操作地址,在進(jìn)行讀取,這里是一次讀取32位。
HS3003初始化
首先需要將HS3003進(jìn)行喚醒,默認(rèn)情況下是睡眠模式。 喚醒需要對Measurement Requests (MR)進(jìn)行操作,MR命令用于將HS300x從休眠模式喚醒。通過發(fā)送7位從地址和第8位=0 (WRITE)來發(fā)起測量請求。

對于不同精度的數(shù)據(jù)讀取,等待時間是不同的。

對于等待的時間,可以參考下圖紅框的數(shù)據(jù)。?

HS3003讀取溫濕度
對于讀取數(shù)據(jù),可以直接在發(fā)送地址后,進(jìn)行讀取,當(dāng)時需要注意再發(fā)送完地址后,要有等待時間。?

讀取操作函數(shù)如下所示,先發(fā)送操作地址,在進(jìn)行讀取。
對于讀取的數(shù)據(jù),需要進(jìn)行處理。 濕度在后兩個字節(jié)的15-2位,溫度在前2個字節(jié)的13-0位。?

對于原始的數(shù)據(jù),要對他進(jìn)行處理。?

實(shí)現(xiàn)效果
正常顯示數(shù)據(jù)。?

同時串口也可以打印數(shù)據(jù)。?

主程序
Humiture_HS3003.c
Humiture_HS3003.h