色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】跟著小哈一起讀AHT20溫濕度傳感器驅動源碼

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-04 16:17 ? 次閱讀
本文來源電子發燒友社區,作者:juby, 帖子地址:https://bbs.elecfans.com/jishu_2012362_1_1.html

AHT20簡介
  • 2020年上市,奧松生產;
  • 3mmx3mmx1mm 超小體積;
  • 經過標定的數字信號,標準I2C輸出格式;
  • 由一個電容式濕度傳感元件和一個標準的片上溫度傳感元件組成;
  • 采用SMD封裝適于回流焊;
  • 響應迅速、抗干擾能力強;
  • AHT20 的供電范圍為 2.0-5.5V, 推薦電壓為3.3V。
應用場景
它廣泛應用于暖通空調 、除濕器、測試及檢測設備、消費品、汽車 、自動控制、數據記錄器、氣象站、家電、濕度調節、醫療及其他相關濕度檢測控制等領域。
封裝傳感器性能
查看我們之前分享的網文,對比DHT21的參數如下:
DHT11及DHT21溫濕度傳感器時序圖解析(STM32
由上對比,AHT20的精度要比DHT21的精度要好,而且價格又低了很多。
原理圖手冊中推薦電路開發板中的原理圖
與開發板連接情況如下:
[td]
管腳名稱 復用描述
GPIO_13 GPIO_13/ADC6/PWM4_OUT/I2C0_SDA/ UART0_LOG_TXD
GPIO_14 GPIO_14/PWM5_OUT/I2C0_SCL/ UART0_LOG_RXD
由上我們知道,這個AHT20使用的Hi3861芯片的I2C0。
程序源碼
AHT20的鴻蒙驅動代碼,潤和公司的開源庫中已經有了,我們就不重復造輪子了,直接使用,結合AHT20的數據手冊分析一下代碼。
潤和公司開源的鴻蒙OS AHT20 數字溫濕度傳感器驅動庫:https://gitee.com/hihopeorg/harmonyos-aht20
如何編譯
  • 修改編譯腳本
  • 在~/harmony/code/code-1.0目錄下執行:python build.py wifiiot
模塊的地址
I2C發送的首字節包括7位的I2C設備地址 0x38和一個SDA方向位X(讀R:'1',寫W:'0')。
手冊中描述的模塊地址定義如下:
由上分析,我們得到讀數據操作的首字節AHT20_READ_ADDR和寫數據操作的首字節AHT20_WRITE_ADDR分別定義如下:
#define AHT20_DEVICE_ADDR 0x38
#define AHT20_READ_ADDR ((0x38<<1)|0x1)
#define AHT20_WRITE_ADDR ((0x38<<1)|0x0)
I2C總線
AHT20 采用標準的 I2C協議進行通訊。
對于I2C通信我們之前分享過網文:
STM32 I2C通信操作24C02寫數據、讀數據
4位數碼管顯示模塊驅動
基于鴻蒙OS移植OLED驅動程序
I2C寫函數
上圖中的AHT20_Write()函數中調用了I2cWrite()函數。
I2cWrite()函數是系統中I2C進行寫操作的函數,這個函數的參數含義解釋如下:
參數1WifiIotI2cIdx id,這個參數是使用的I2C的ID,這個參數可選下面枚舉中的一個值:
typedef enum {
/** I2C hardware index 0 */
WIFI_IOT_I2C_IDX_0,
/** I2C hardware index 1 */
WIFI_IOT_I2C_IDX_1,
} WifiIotI2cIdx;
因為我們這里使用的是I2C0,所以這個參數應該為:WIFI_IOT_I2C_IDX_0 。
參數2unsigned short deviceAddr,這個參數是I2C總線下面的設備地址,因為這是一個寫操作,所以這個參數我們選用上面的宏定義:AHT20_WRITE_ADDR
參數3const WifiIotI2cData *i2cData,這個參數是我們要發送的數據,該變量的數據類型為一個結構體類型: HalWifiIotI2cData ,該結構體的定義如下。
/**
*@BriefDefines I2C data transmission attributes.
*/
typedef struct {
/** Pointer to the buffer storing data to send */
unsigned char *sendBuf;
/** Length of data to send */
unsigned intsendLen;
/** Pointer to the buffer for storing data to receive */
unsigned char *receiveBuf;
/** Length of data received */
unsigned intreceiveLen;
} HalWifiIotI2cData;
I2C讀函數
上圖中的AHT20_Read()函數中調用了I2cRead()函數。
I2cRead()函數是系統中I2C進行讀操作的函數。
I2cRead()函數的參數與I2cWrite()函數的參數類似,只是參數3:const WifiIotI2cData *i2cData ,這個參數用于接收我們讀取到的數據。
常用命令
AHT20常用的命令有:
  • 初始化命令 ('1011’1110') ,即0xBE;
  • 測量溫濕度命令('1010’1100'),即0xAC
  • 軟復位命令('1011’1010'),即0xBA。
基本指令集狀態位
通過發送0x71可以獲取一個字節的狀態字,狀態字各位的含義描述如下:
狀態字各位含義說明傳感器讀取流程
  • 上電后要等待40ms,讀取溫濕度值之前, 首先要看狀態字的校準使能位Bit[3]是否為 1(通過發送0x71可以獲取一個字節的狀態字),如果不為1,要發送0xBE命令(初始化),此命令參數有兩個字節, 第一個字節為0x08,第二個字節為0x00。
AHT20模塊的狀態判斷通過下面AHT20_Calibrate()函數來判斷,具體執行過程如下圖所示:
注:在第一步的校準狀態檢驗只需要上電時檢查,在正常過程無需操作。
軟復位
上面代碼中有一個這樣的指令:AHT20_ResetCommand()
這個命令用于在無需關閉和再次打開電源的情況下,重新啟動傳感器系統。
在接收到這個命令之后,傳感器系統開始重新初始化,并恢復默認設置狀態,軟復位所需時間不超過 20 毫秒。
灰色部分由 AHT20 控制
#define AHT20_CMD_RESET 0xBA // 軟復位命令
// 發送軟復位命令
static uint32_t AHT20_ResetCommand(void)
{
uint8_t resetCmd[] = {AHT20_CMD_RESET};
return AHT20_Write(resetCmd, sizeof(resetCmd));
}
  • 直接發送 0xAC命令(觸發測量),此命令參數有兩個字節,第一個字節為 0x33,第二個字節為0x00。
觸發測量命令發送的數據如下:
具體使用的代碼如下:
#define AHT20_CMD_TRIGGER 0xAC // 觸發測量命令
#define AHT20_CMD_TRIGGER_ARG00x33
#define AHT20_CMD_TRIGGER_ARG10x00

// 發送 觸發測量 命令,開始測量
uint32_t AHT20_StartMeasure(void)
{
uint8_t triggerCmd[] = {AHT20_CMD_TRIGGER, AHT20_CMD_TRIGGER_ARG0, AHT20_CMD_TRIGGER_ARG1};
return AHT20_Write(triggerCmd, sizeof(triggerCmd));
}
  • 等待75ms待測量完成,忙狀態Bit[7]為0,然后可以讀取六個字節(發0X71即可以讀取)。
注:傳感器在采集時需要時間,主機發出測量指令(0xAC)后,延時75毫秒以上再讀取轉換后的數據并判斷返回的狀態位是否正常。若狀態比特位[Bit7]為0代表設備閑,可正常讀取,為1時傳感器為忙狀態,主機需要等待數據處理完成。
  • 計算溫濕度值。
相對濕度轉換
將上圖中藍色背景的六個字節數據中,紅色方框框住的為濕度數據,組成一個20bit長度的一個整形數;紫色方框框住的20bit為溫度數據。
濕度數據按下面代碼實現拼接:
#define AHT20_RESOLUTION (1<<20)??// 2^20

uint32_t humiRaw = buffer[1];
humiRaw = (humiRaw << 8) | buffer[2];
humiRaw = (humiRaw << 4) | ((buffer[3] & 0xF0) >> 4);
通過手冊我們得知相對濕度的計算公式如下:
上面代碼求得的 humiRaw 即為上圖公式中的Srh,所以根據上圖公式,使用如下代碼即可獲得相對濕度RH。
*humi = humiRaw / (float)AHT20_RESOLUTION * 100;
溫度轉換
按如下方式合并溫度數據的20bit數據:
uint32_t tempRaw = buffer[3] & 0x0F;
tempRaw = (tempRaw << 8) | buffer[4];
tempRaw = (tempRaw << 8) | buffer[5];
查看手冊。我們知道20bit的數據跟℃的換算關系如下:
用代碼具體實現如下:
*temp = tempRaw / (float)AHT20_RESOLUTION * 200 - 50;
結果展示
將上面編譯之后的結果下載驗證,輸出如下:
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • wi-fi
    +關注

    關注

    14

    文章

    2147

    瀏覽量

    124612
  • HarmonyOS
    +關注

    關注

    79

    文章

    1979

    瀏覽量

    30274
  • HiSpark
    +關注

    關注

    1

    文章

    156

    瀏覽量

    6938
收藏 人收藏

    評論

    相關推薦

    遠程溫濕度實時監測系統應用方案

    通信、云計算、大數據分析等技術。傳感器作為系統的“眼睛”,負責實時采集環境中的溫濕度數據。通過Wi-Fi、藍牙、LoRa、NB-IoT等通訊方式,將
    的頭像 發表于 01-02 17:03 ?94次閱讀

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-使用AHT20進行環境監測之開發板測試

    溫濕度打開ELF 1板卡,在/home/root下輸入如下命令開始測試,可以看到程序可以正常運行沒有報錯,并直接返回測量到的數值。root@ELF1:~# ./elf1_cmd_aht20此時用手指觸摸溫濕度
    發表于 11-29 09:04

    CW32模塊使用案例 AHT10溫濕度傳感器

    AHT10,新溫濕度傳感器在尺寸與智能方面建立了新的標準:它嵌入了適于回流焊的雙列扁平無引腳SMD 封裝,底面 4 x 5mm ,高度1.6mm。
    的頭像 發表于 11-28 17:28 ?441次閱讀
    CW32模塊使用案例 <b class='flag-5'>AHT</b>10<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>

    飛凌嵌入式ElfBoard ELF 1板卡-使用AHT20進行環境監測之開發板測試

    。測試設備周圍溫濕度打開ELF 1板卡,在/home/root下輸入如下命令開始測試,可以看到程序可以正常運行沒有報錯,并直接返回測量到的數值。root@ELF1:~# ./elf1_cmd_aht20此時用手指觸摸溫濕度
    發表于 11-28 09:30

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-使用AHT20進行環境監測之AHT20傳感器介紹

    i2c接口的的AHT20溫濕度傳感器。i2c硬件原理見硬件手冊,通信協議見3.2.2小節,我們前面這些章節已經介紹了i2c的基本通信原理,本節我們主要關注的是AHT20作為i2c從設備
    發表于 11-27 09:09

    飛凌嵌入式ElfBoard ELF 1板卡-使用AHT20進行環境監測之AHT20傳感器介紹

    i2c接口的的AHT20溫濕度傳感器。i2c硬件原理見硬件手冊,通信協議見3.2.2小節,我們前面這些章節已經介紹了i2c的基本通信原理,本節我們主要關注的是AHT20作為i2c從設備
    發表于 11-26 09:36

    溫濕度傳感器種類及原理的優劣分析

    溫濕度傳感器種能夠感知并測量環境中溫度和濕度變化的設備,它們在環境監測、氣象觀測、農業、工業生產、智能家居等多個領域發揮著重要作用。下面將對溫濕
    的頭像 發表于 10-21 15:05 ?871次閱讀

    溫濕度傳感器是什么類型的傳感器

    溫濕度傳感器種能夠實時監測和記錄環境中溫度和濕度變化的設備或裝置。這類傳感器廣泛應用于環境監測、氣象觀測、農業、工業生產、倉儲管理、智能
    的頭像 發表于 10-21 14:53 ?557次閱讀

    溫濕度傳感器怎么調試

    溫濕度傳感器種廣泛應用于工業、農業、氣象、科研等領域的傳感器,用于測量環境的溫度和濕度。在實際應用中,
    的頭像 發表于 08-19 15:04 ?1054次閱讀

    溫濕度傳感器技術參數有哪些

    溫濕度傳感器種用于測量環境溫度和濕度傳感器。它們廣泛應用于氣象、農業、工業、醫療、智能家居等領域。本文將介紹
    的頭像 發表于 08-19 15:03 ?1188次閱讀

    想要準確地測量環境溫濕度溫濕度傳感器是關鍵!

    ? 溫濕度是生產生活中最重要的環境指標之,不僅人需要在適宜的溫濕度條件下保持良好的精神狀態和敏捷的思維,食品、藥品、各種儀器設備等都對環境溫濕度有特殊的要求。基于對環境
    的頭像 發表于 07-04 08:48 ?593次閱讀

    可以利用stm32cube去讀取AHT20溫濕度傳感器嗎?

    有人會利用stm32cube去讀取AHT20溫濕度傳感器嗎?
    發表于 03-28 08:30

    學習筆記|如何用Go程序采集溫濕度傳感器數據

    整個利用Go語言從AHT20溫濕度傳感器獲取數據的完整步驟和實現方法。、C程序獲取AHT20溫濕度
    的頭像 發表于 03-21 11:46 ?738次閱讀
    學習筆記|如何用Go程序采集<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>數據

    溫濕度傳感器有哪些應用場景?

    溫濕度傳感器在眾多領域,特別是在實時記錄溫濕度變化的工作中最為廣泛。溫濕度傳感器可以根據所記錄的內容,對其進行科學有效的管理、分析和歸納。下
    的頭像 發表于 02-19 16:28 ?1391次閱讀
    <b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>有哪些應用場景?

    溫濕度傳感器工作原理 溫濕度傳感器的接線方法

    溫濕度傳感器種用于測量環境溫度和相對濕度的裝置。它通常用于工業、農業、氣象、室內空調等領域。本文將詳細介紹溫濕度
    的頭像 發表于 02-14 18:00 ?9702次閱讀
    主站蜘蛛池模板: 国产亚洲日韩在线播放不卡| 国产亚洲欧美在线中文BT天堂网| 亚洲AV美女成人网站P站| 秋霞电影网午夜鲁丝片| 牛和人交videos欧美| 毛片在线看片| 麻豆免费观看高清完整视频| 久久精品电影久久电影大全| 加勒比一本之道高清视频在线观看| 国产精品美女久久久久AV超清| 春水福利app导航| 吃奶摸下的羞羞漫画| 被滋润的艳妇疯狂呻吟白洁老七| brazzers欧美最新版视频| a免费在线观看视频| WRITEAS塞红酒瓶| www.色小姐| 出轨的妻子在线观看| 大学生宿舍飞机china free| 俄罗斯孩交精品| 国产不卡一卡2卡三卡4卡网站| 国产精品AV色欲蜜臀在线| 国产高清精品自在久久| 国产人妻麻豆蜜桃色在线| 国产综合视频在线观看一区| 激情床戏视频片段有叫声| 精品人妻无码一区二区三区蜜桃臀 | 亚洲精品婷婷无码成人A片在线| 亚洲成人黄色片| 亚洲区视频在线观看| 伊人久久国产精品| 2019伊人查蕉在线观看| 99热在线精品视频| 波多野结衣二区| 国产精品爽爽久久久久久竹菊| 国产亚洲精品福利视频| 久久99视频免费| 美女的避毛| 日本妞欧洲| 亚洲A片不卡无码久久尤物| 一本之道高清www在线观看|