在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

零知開源——STM32F407VET6驅動SHT41溫濕度傳感器完整教程

PCB56242069 ? 來源:PCB56242069 ? 作者:PCB56242069 ? 2025-07-09 18:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

??零知開源是一個真正屬于國人自己的開源軟硬件平臺,在開發效率上超越了Arduino平臺并且更加容易上手,大大降低了開發難度。零知開源在軟件方面提供了完整的學習教程和豐富示例代碼,讓不懂程序的工程師也能非常輕而易舉的搭建電路來創作產品,測試產品。快來動手試試吧!

?訪問零知開源平臺,獲取更多實戰項目和教程資源吧!

項目概述

本項目基于STM32F407VET6零知增強板,實現SHT41高精度濕度傳感器的驅動和數據采集。SHT41是Sensirion推出的新一代數字溫濕度傳感器,具有±0.2°C的溫度精度和±1.8%RH的濕度精度,采用I2C接口通信。本教程將展示如何通過STM32F407的硬件I2C接口驅動SHT41,并實現實時溫濕度數據的采集與顯示。

一、硬件連接

1.1 硬件清單

>主控芯片:STM32F407VET6零知增強板

>傳感器SHT41溫濕度傳感器(I2C地址:0x44)

>杜邦線若干

1.2 接線硬件表

SHT41引腳 零知增強板引腳 功能說明
VCC 3.3V 電源正極
GND GND 電源地
SCL 21/SCL I2C時鐘
SDA 20/SDA I2C數據線

注意:I2C總線需要4.7kΩ上拉電阻(開發板通常已內置)

1.3 接線實物圖

wKgZO2huSbeAB7VbAAb2le_lNfA966.png

二、軟件環境配置

2.1 安裝開發工具

零知IDE 3.8.0

選擇開發板零知增強板

2.2 依賴庫

Adafruit SHT4x Library

Adafruit_I2CDevice

Adafruit BusIO

三、核心代碼實現

3.1 零知IDE代碼驅動

#include "Adafruit_SHT4x.h"
Adafruit_SHT4x sht4 = Adafruit_SHT4x();

void setup() {
  Serial.begin(115200);
  while (!Serial) delay(10);  // 等待串口初始化

  // 初始化傳感器
  if (!sht4.begin()) {
    Serial.println("Sensor not found!");
    while (1) delay(1);
  }
  
  // 設置高精度模式
  sht4.setPrecision(SHT4X_HIGH_PRECISION);
  // 關閉加熱器(節能模式)
  sht4.setHeater(SHT4X_NO_HEATER);
}

void loop() {
  sensors_event_t humidity, temp;
  sht4.getEvent(&humidity, &temp);  // 讀取數據

  Serial.print("Temperature: "); 
  Serial.print(temp.temperature); 
  Serial.println(" ℃");
  
  Serial.print("Humidity: "); 
  Serial.print(humidity.relative_humidity); 
  Serial.println("% rH");
  delay(1000);  // 每秒讀取一次
}

3.2核心庫函數解析

3.2.1Adafruit_SHT4x庫

bool Adafruit_SHT4x::begin(TwoWire *theWire) {
  i2c_dev = new Adafruit_I2CDevice(SHT4x_DEFAULT_ADDR, theWire);
  if (!i2c_dev->begin()) return false;
  return reset(); // 發送復位命令
}

功能:初始化I2C通信并復位傳感器

參數:I2C接口指針(默認使用Wire)

返回值:初始化成功返回true,失敗返回false

bool Adafruit_SHT4x::getEvent(sensors_event_t *humidity, 
                              sensors_event_t *temp) {
  // 根據精度和加熱器設置選擇命令
  uint8_t cmd = SHT4x_NOHEAT_HIGHPRECISION; 
  uint16_t duration = 10;
  
  // 發送測量命令
  if (!i2c_dev->write(&cmd, 1)) return false;
  
  delay(duration); // 等待測量完成
  
  // 讀取6字節數據(溫度+CRC, 濕度+CRC)
  uint8_t readbuffer[6];
  if (!i2c_dev->read(readbuffer, 6)) return false;
  
  // CRC校驗
  if (readbuffer[2] != crc8(readbuffer, 2) ||
      readbuffer[5] != crc8(readbuffer + 3, 2)) 
    return false;
  
  // 原始數據轉換
  uint16_t temp_raw = (readbuffer[0] 

功能:獲取溫濕度數據并填充到事件結構體

參數:指向溫濕度事件結構體的指針

返回值:成功返回true,失敗返回false

static uint8_t crc8(const uint8_t *data, int len) {
  const uint8_t POLYNOMIAL(0x31);
  uint8_t crc(0xFF);
  
  for (int j = len; j; --j) {
    crc ^= *data++;
    for (int i = 8; i; --i) {
      crc = (crc & 0x80) ? (crc 

功能:計算CRC8校驗碼

參數:數據指針和長度

返回值:CRC8校驗值

3.2.2Adafruit_Sensor庫

void Adafruit_SHT4x::fillTempEvent(sensors_event_t *temp, uint32_t timestamp) {
  memset(temp, 0, sizeof(sensors_event_t));
  temp->version = sizeof(sensors_event_t);
  temp->sensor_id = _sensorid_temp;
  temp->type = SENSOR_TYPE_AMBIENT_TEMPERATURE;
  temp->timestamp = timestamp;
  temp->temperature = _temperature;
}

功能:填充溫度事件結構體

參數:

temp:目標結構體指針
timestamp:時間戳

void Adafruit_SHT4x::fillHumidityEvent(sensors_event_t *humidity, 
                                      uint32_t timestamp) {
  memset(humidity, 0, sizeof(sensors_event_t));
  humidity->version = sizeof(sensors_event_t);
  humidity->sensor_id = _sensorid_humidity;
  humidity->type = SENSOR_TYPE_RELATIVE_HUMIDITY;
  humidity->timestamp = timestamp;
  humidity->relative_humidity = _humidity;
}

功能:填充濕度事件結構體

參數:

humidity:目標結構體指針
timestamp:時間戳

3.2.3Adafruit_I2CDevice庫

bool Adafruit_I2CDevice::write_then_read(const uint8_t *write_buffer,
                                        size_t write_len, 
                                        uint8_t *read_buffer,
                                        size_t read_len, 
                                        bool stop) {
  if (!write(write_buffer, write_len, stop)) {
    return false;
  }
  return read(read_buffer, read_len);
}

功能:先寫后讀的I2C操作(常用模式)
參數:

write_buffer:寫入數據緩沖區

write_len:寫入數據長度

read_buffer:讀取數據緩沖區

read_len:讀取數據長度

stop:是否在寫操作后發送停止條件

bool Adafruit_I2CDevice::read(uint8_t *buffer, size_t len, bool stop) {
  size_t pos = 0;
  while (pos < len) {
    size_t read_len = min(len - pos, _maxBufferSize);
    bool read_stop = (pos + read_len >= len) ? stop : false;
    
    if (!_read(buffer + pos, read_len, read_stop))
      return false;
    
    pos += read_len;
  }
  return true;
}

功能:從I2C設備讀取數據
參數:

buffer:數據緩沖區

len:讀取長度

stop:是否發送停止條件

四、常見問題解答

Q1:編譯時報錯"Adafruit_SHT4x.h: No such file or directory"

A:解決方法

檢查是否安裝了依賴庫(Adafruit BusIO)

Q2:傳感器檢測失敗("Couldn't find SHT4x")

A:排查步驟

檢查硬件連接(VCC、GND、SCL、SDA)

確認I2C地址正確(SHT41默認為0x44)

使用I2C掃描工具確認設備地址

檢查上拉電阻(4.7kΩ)

Q3:數據讀取不穩定或CRC校驗失敗

A:解決方案

降低I2C時鐘速度

縮短I2C總線長度

嘗試不同的精度模式

Q4:如何提高測量精度?

A:優化方法

使用高精度模式:sht4.setPrecision(SHT4X_HIGH_PRECISION)

啟用加熱器:sht4.setHeater(SHT4X_MED_HEATER_100MS)

避免傳感器暴露在氣流中

五、結果顯示

成功運行后,串口監視器將輸出以下格式的數據:

wKgZO2huSWSAMVpHAAMcxHCKsEo199.png

資源鏈接

SHT41數據手冊

STM32F407VET6參考手冊

Adafruit SHT4x庫GitHub

通過本教程,開發者可以快速構建穩定可靠的環境監測系統,點擊了解更多零知開發教程:

https://www.lingzhilab.com/freesources.html

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1541

    瀏覽量

    127704
  • 溫濕度傳感器

    關注

    5

    文章

    597

    瀏覽量

    36502
  • STM32F4
    +關注

    關注

    3

    文章

    203

    瀏覽量

    29018
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    SHT3x系列溫濕度傳感器驅動設計與實現

    在我們的產品中經常會遇到溫濕度檢測的需求。可以用于檢測溫濕度傳感器元件也有很多。我們經常使用的SHT各系列數字溫濕度
    發表于 12-12 15:14 ?3951次閱讀
    <b class='flag-5'>SHT</b>3x系列<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>驅動</b>設計與實現

    SHT1x系列溫濕度傳感器驅動設計與實現

    在我們的產品中,經常需要檢測溫濕度數據。有很多檢測溫濕度的方法和模塊,其中SHT1x系列溫濕度傳感器就是一種成本較低使用方便的
    發表于 12-14 14:11 ?1948次閱讀
    <b class='flag-5'>SHT</b>1x系列<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>驅動</b>設計與實現

    STM32F407VET6STM32F407IET6有什么區別?

    STM32F407VET6STM32F407IET6,除了引腳上數量不同之外,還有什么區別嗎? 我的CAN驅動,在STM32F407VET6可正常運行。在
    發表于 07-03 07:06

    開源——STM32F407VET6驅動SHT41溫濕度傳感器完整教程

    目基于STM32F407VET6增強板,實現SHT41高精度溫濕度傳感器
    發表于 07-10 12:01

    sht10溫濕度傳感器驅動

    本帖最后由 jafybestwish 于 2014-10-6 10:00 編輯 sht10溫濕度傳感器驅動,提供
    發表于 10-06 09:57

    開源分享-溫濕度模塊DHT11的使用

    、核心代碼// DHT11溫濕度傳感器demo演示 #include "dht11.h" //使用DHT11DHT sensor; void setup
    發表于 05-13 17:32

    基于SHT11溫濕度傳感器和單片機技術的智能溫濕度測量系統

    研究了基于SHT11溫濕度傳感器和單片機技術的智能溫濕度測量系統。系統使用SHT11溫濕度
    發表于 04-27 06:34

    SHT10溫濕度傳感器是如何進行通信的

    怎樣去調試STM32F103ZET6及外圍傳感器呢?SHT10溫濕度傳感器是如何進行通信的?
    發表于 11-11 06:42

    溫濕度傳感器如何驅動SHT85單片機STM32 HAL庫?

    溫濕度傳感器如何驅動SHT85單片機STM32 HAL庫?
    發表于 02-07 07:46

    STM32F407VET6數據手冊

    STM32F407VET6數據手冊。
    發表于 04-13 14:10 ?637次下載

    DHT22+數字溫濕度傳感器+AM2302+溫濕度模塊+取代SHT11+SHT15

    DHT22+數字溫濕度傳感器+AM2302+溫濕度模塊+取代SHT11+SHT15
    發表于 11-22 19:22 ?56次下載

    基于STM32F407VET6的CS1237驅動程序

    基于STM32F407VET6的CS1237驅動程序,親測可用,歡迎大家一起交流
    發表于 08-28 11:22 ?189次下載

    STM32F407VET6

    STM32F407VET6規格書
    發表于 02-07 15:59 ?100次下載

    stm32f407vet6原理介紹

    STM32F407VET6是一款基于ARM Cortex-M4內核的高性能微控制,由STMicroelectronics公司生產。它具有豐富的外設和功能,廣泛應用于各種嵌入式系統開發。本文將介紹
    的頭像 發表于 01-03 16:49 ?1.4w次閱讀
    <b class='flag-5'>stm32f407vet6</b>原理介紹

    開源——基于STM32F407VET6增強板的四路獨立計時

    本教程介紹基于STM32F407VET6增強板的四路獨立計時實現方案。項目采用TFT顯示屏、蜂鳴器和按鈕構建交互系統,支持各計時獨立
    的頭像 發表于 07-01 10:13 ?211次閱讀
    <b class='flag-5'>零</b><b class='flag-5'>知</b><b class='flag-5'>開源</b>——基于<b class='flag-5'>STM32F407VET6</b><b class='flag-5'>零</b><b class='flag-5'>知</b>增強板的四路獨立計時<b class='flag-5'>器</b>
    主站蜘蛛池模板: 美女黄色一级毛片 | 失禁h啪肉尿出来高h健身房 | 久久成人国产精品免费 | 黄色视屏日本 | 欧美黄色免费大片 | 成年女人在线观看 | 亚洲综合一区二区三区 | 日本三级香港三级人妇 m | 五月综合色婷婷影院在线观看 | 午夜不卡在线 | 夜天干天干啦天干天天爽 | 99久久精品久久久久久婷婷 | 欧美成人午夜精品免费福利 | 日韩精品在线一区二区 | 欧美色人阁 | 在线观看国产一级强片 | 欧美三级网站 | 日韩孕交| 精品国内一区二区三区免费视频 | 午夜国产精品久久久久 | 天天插综合网 | 日本黄色录象 | 国产午夜免费视频片夜色 | аⅴ天堂 在线 | 亚洲天堂视频一区 | 三级免费黄录像 | 四虎国产精品永久地址49 | 欧洲性开放大片免费观看视频 | 一区二区三区免费精品视频 | 色天天干 | 国产美女一级视频 | 综合婷婷丁香 | 国产亚洲一区二区三区在线 | 久久伊人成人网 | 韩国三级理论在线看中文字幕 | 欧美不卡1卡2卡三卡老狼 | 国产人人看 | 天堂资源地址在线 | 毛片在线播放网址 | 欧美影欧美影院免费观看视频 | 精品国内一区二区三区免费视频 |