<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

STHS34PF80人體存在傳感器(1)----獲取人體存在狀態

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2024-01-09 15:51 ? 次閱讀

概述

STHS34PF80是一款高性能的紅外(IR)傳感器,特別適用于檢測存在感和運動。其主要特點是高靈敏度,能在沒有透鏡的情況下探測到4米遠的物體(尺寸為70 x 25厘米),并配有集成的硅紅外濾波器。這款傳感器能夠區分靜止和移動物體,并具有80°的視場角。它出廠時已校準,且設計為低功耗,包含用于提高探測效果的智能算法。 其應用范圍廣泛,不僅包括存在感和接近感應、報警/安全系統、智能家居、智能照明、物聯網、智能儲物柜和智能墻板,還特別適用于檢測人體的存在。由于其高靈敏度和精確度,它能夠有效地用于人體檢測,如在安保系統中探測潛在的入侵者,或在智能家居系統中監測房間內的人員動態。 最近在弄ST的課程,需要樣片的可以加群申請:615061293 。

視頻教學

[https://www.bilibili.com/video/BV1fN4y1e7gu/]

樣品申請

[https://www.wjx.top/vm/OhcKxJk.aspx#]

完整代碼下載

[https://download.csdn.net/download/qq_24312945/88711592]

主要特點

高靈敏度探測: 專為探測紅外線的存在和運動設計,具有高靈敏度。 探測范圍: 能夠在沒有透鏡的情況下,探測到70 x 25厘米大小的物體,最遠達4米。 集成硅紅外濾波器: 通過濾除非紅外波長,確保精確探測。 靜態和運動物體探測: 能夠檢測到靜止和移動的物體。 視場角: 提供80°的視場角。 出廠校準: 出廠即校準,保證了即插即用的可靠性和準確性。 低功耗設計: 設計注重能效,確保低能耗。 嵌入式智能算法: 用于提升存在感和運動探測的效果。

硬件準備

首先需要準備一個開發板,這里我準備的是自己繪制的開發板:

接口

STHS34PF80模塊接口的示意圖如下所示,支持IIC或者SPI通訊。

最小系統圖

生成STM32CUBEMX

用STM32CUBEMX生成例程,這里使用MCU為STM32WB55RG。 配置時鐘樹,配置時鐘為32M。

串口配置

查看原理圖,PB6和PB7設置為開發板的串口。

配置串口。

IIC配置

配置IIC為快速模式,速度為400k。

CS設置

STS34PF80IO設置如下所示。 在IIC模式下CS需要給個高電平。

官方提供IIC接線如下所示。

設置PC0為輸出口。

串口重定向

打開魔術棒,勾選MicroLIB

在main.c中,添加頭文件,若不添加會出現 identifier "FILE" is undefined報錯。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函數聲明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/* USER CODE END PFP */

參考案例

[https://github.com/STMicroelectronics/sths34pf80-pid]

獲取ID

參考例程序中對應的獲取ID驅動程序,如下所示。

獲取ID可以查看0x0F,讀出來的值應該為0xD3。

對應的獲取ID驅動程序,如下所示。

printf("??????????");

    HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);        

    uint8_t whoami;
    sths34pf80_lpf_bandwidth_t lpf_m, lpf_p, lpf_p_m, lpf_a_t;

    /* Initialize mems driver interface */
    dev_ctx.write_reg = platform_write;
    dev_ctx.read_reg = platform_read;
    dev_ctx.handle = &SENSOR_BUS;



    /* Wait sensor boot time */
    platform_delay(BOOT_TIME);

    /* Check device ID */
    sths34pf80_device_id_get(&dev_ctx, &whoami);
    printf("STHS34PF80_ID=0x%x,whoamI=0x%xn",STHS34PF80_ID,whoami);
    if (whoami != STHS34PF80_ID)
        while(1);

溫度測量濾波方式

首先需要設置AVG_TRIM (10h) 寄存器用于配置溫度平均值濾波的參數,以控制環境溫度和目標溫度測量的平滑度和穩定性。在溫度測量中,可能會受到噪聲和干擾的影響,這可能導致短期內測量值的波動。通過應用平均值濾波,可以平滑這些波動,從而得到更加穩定的溫度數據。AVG_TRIM 寄存器中的設置會決定平均值濾波的級別,從而影響濾波的時間常數以及平滑度。

這里默認參數如下

  1. 在AVG_TRIM(10h)寄存器中寫入02h // AVG_T = 8,AVG_TMOS = 32
  2. 在CTRL1(20h)寄存器中寫入07h // ODR = 15 Hz

AVG_T[1:0]: 這個設置位用于選擇環境溫度的平均值濾波樣本數。 AVG_TMOS[2:0]: 這個設置位用于選擇目標溫度的平均值濾波樣本數以及與之相關的噪聲水平。

對象溫度的平均值數量 (sths34pf80_avg_tobject_num_set 函數): 這個函數設置用于測量對象溫度的平均值數量。參數 val 可以是多種不同的值,例如 AVG_TMOS_2, AVG_TMOS_8, AVG_TMOS_32, 等等,表示不同的平均值數量。這些設置影響傳感器輸出的平滑程度和響應速度,高的平均值數量會增加輸出數據的平滑度,但也可能增加響應時間。

環境溫度的平均值數量 (sths34pf80_avg_tambient_num_set 函數): 類似地,這個函數設置環境溫度測量的平均值數量。參數 val 可以是 AVG_T_8, AVG_T_4, AVG_T_2, AVG_T_1 等,用于設置不同的平均值數量。這也會影響傳感器輸出的平滑程度和響應速度。

在你提供的代碼段中,使用了 STHS34PF80_AVG_TMOS_32 和 STHS34PF80_AVG_T_8 作為參數,分別用于設置對象溫度和環境溫度的平均值數量。這意味著傳感器會對對象溫度使用32個數據點的平均值,對環境溫度使用8個數據點的平均值。這樣的設置有助于在傳感器的測量中實現一定程度的數據平滑和過濾噪聲,同時保持適當的響應速度。

/* Set averages (AVG_TAMB = 8, AVG_TMOS = 32) */
  sths34pf80_avg_tobject_num_set(&dev_ctx, STHS34PF80_AVG_TMOS_32);
  sths34pf80_avg_tambient_num_set(&dev_ctx, STHS34PF80_AVG_T_8);

智能識別算法

STHS34PF80嵌入了智能數字算法,以支持以下三種檢測模式: ? 存在檢測 ? 運動檢測 ? 環境溫度沖擊檢測 這些算法分別使用不同的低通濾波器(LPF_P、LPF_M和LPF_A_T)。此外,存在和運動檢測算法使用另一個共同的低通濾波器(LPF_P_M)。這些濾波器用于生成中間信號(TPRESENCE、TMOTION和TAMB_SHOCK),可以用于對算法本身進行微調。這些濾波器的截止頻率值可以通過它們各自的位范圍進行配置,這些位范圍可以在LPF1(0Ch)和LPF2(0Dh)寄存器中找到,如下所示。

寄存器LPF1 (0Ch)和LPF2 (0Dh)如下所示。

案例中只是對濾波器進行了讀取以及打印。

/* read filters */
  sths34pf80_lpf_m_bandwidth_get(&dev_ctx, &lpf_m);
  sths34pf80_lpf_p_bandwidth_get(&dev_ctx, &lpf_p);
  sths34pf80_lpf_p_m_bandwidth_get(&dev_ctx, &lpf_p_m);
  sths34pf80_lpf_a_t_bandwidth_get(&dev_ctx, &lpf_a_t);

  printf("lpf_m: %02d, lpf_p: %02d, lpf_p_m: %02d, lpf_a_t: %02drn", lpf_m, lpf_p, lpf_p_m, lpf_a_t);

使用塊數據更新(BDU)功能

在很多傳感器中,數據通常被存儲在輸出寄存器中,這些寄存器分為兩部分:MSB和LSB。這兩部分共同表示一個完整的數據值。例如,在一個加速度計中,MSB和LSB可能共同表示一個加速度的測量值。 連續更新模式(BDU = '0'):在默認模式下,輸出寄存器的值會持續不斷地被更新。這意味著在你讀取MSB和LSB的時候,寄存器中的數據可能會因為新的測量數據而更新。這可能導致一個問題:當你讀取MSB時,如果寄存器更新了,接下來讀取的LSB可能就是新的測量值的一部分,而不是與MSB相對應的值。這樣,你得到的就是一個“拼湊”的數據,它可能無法準確代表任何實際的測量時刻。 塊數據更新(BDU)模式(BDU = '1'):當激活BDU功能時,輸出寄存器中的內容不會在讀取MSB和LSB之間更新。這就意味著一旦開始讀取數據(無論是先讀MSB還是LSB),寄存器中的那一組數據就被“鎖定”,直到兩部分都被讀取完畢。這樣可以確保你讀取的MSB和LSB是同一測量時刻的數據,避免了讀取到代表不同采樣時刻的數據。 簡而言之,BDU位的作用是確保在讀取數據時,輸出寄存器的內容保持穩定,從而避免讀取到拼湊或錯誤的數據。這對于需要高精度和穩定性的應用尤為重要。

案例也是設置了BDU。 BDU在CTRL1 (20h)寄存器中。

/* Set BDU */
  sths34pf80_block_data_update_set(&dev_ctx, 1);

設置ODR速率

初始化完畢之后需要通過CTRL1(20h)寄存器中的ODR[3:0]位范圍選擇其中一種操作模式(連續模式),或者在CTRL2(21h)寄存器中將ONE_SHOT位設置為1(單次觸發模式)。

當配置了寄存器LPF1 (0Ch)和LPF2 (0Dh) 的LPF_P、LPF_M和LPF_A_T、LPF_P_M濾波器之后,可以去設置ODR速率。

這里設置速率為8Hz。

/* Set ODR */
  sths34pf80_odr_set(&dev_ctx, STHS34PF80_ODR_AT_8Hz);

獲取狀態

STATUS (地址為0x23U) 用于表示傳感器的狀態。 drdy(1位):這個位用于指示數據就緒(Data Ready)狀態。當傳感器有新的數據可供讀取時,這個位會被設置。

FUNC_STATUS(25h)主要檢測三個標志位:PRES_FLAG、MOT_FLAG 和 TAMB_SHOCK_FLAG,這些標志位用于檢測不同類型的事件。 PRES_FLAG是存在檢測標志位。當存在檢測到人員存在時,此位變為1。 MOT_FLAG:運動檢測標志位。當檢測到運動時,此位變為1。 TAMB_SHOCK_FLAG:環境溫度沖擊檢測標志位。當檢測到環境溫度沖擊時,此位變為1。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  sths34pf80_drdy_status_t status;
  sths34pf80_func_status_t func_status;

  sths34pf80_drdy_status_get(&dev_ctx, &status);
  if (status.drdy)
  {
    sths34pf80_func_status_get(&dev_ctx, &func_status);

    printf("TAmbient Shock: %d - Presence: %d - Motion: %drn",func_status.tamb_shock_flag, func_status.pres_flag, func_status.mot_flag);
 }        

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

測試結果

在未有人的情況下。

在人體純在情況下。

審核編輯 黃宇

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

    關注

    2528

    文章

    48296

    瀏覽量

    741142
  • stm32cubemx
    +關注

    關注

    5

    文章

    261

    瀏覽量

    14466
收藏 人收藏

    評論

    相關推薦

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(1)----獲取ID

    STHS34PF80 是一款非冷卻、工廠校準的紅外運動和存在檢測傳感器,工作波長在 5 μm 至 20 μm 之間。
    的頭像 發表于 12-01 15:28 ?5109次閱讀
    基于STM32CUBEMX驅動TMOS模塊<b class='flag-5'>STHS34PF80</b>(1)----<b class='flag-5'>獲取</b>ID

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(2)----驅動STHS34PF80進行人體檢測

    STHS34PF80 是一款非冷卻、工廠校準的紅外運動和存在檢測傳感器,工作波長在 5 μm 至 20 μm 之間。STHS34PF80 傳感器
    的頭像 發表于 12-01 15:29 ?421次閱讀
    基于STM32CUBEMX驅動TMOS模塊<b class='flag-5'>STHS34PF80</b>(2)----驅動<b class='flag-5'>STHS34PF80</b>進行<b class='flag-5'>人體</b>檢測

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(3)----修改檢測閾值

    用于配置和設置 STHS34PF80 傳感器的一些參數,以便進行存在檢測和運動檢測。
    的頭像 發表于 12-01 15:30 ?400次閱讀
    基于STM32CUBEMX驅動TMOS模塊<b class='flag-5'>STHS34PF80</b>(3)----修改檢測閾值

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(5)----配置嵌入式函數

    STHS34PF80傳感器項目種修改 Arduino 腳本,重新移植到STM32的MCU中。
    的頭像 發表于 12-01 15:33 ?429次閱讀
    基于STM32CUBEMX驅動TMOS模塊<b class='flag-5'>STHS34PF80</b>(5)----配置嵌入式函數

    基于STM32CUBEMX驅動TMOS模塊STHS34PF80(6)----獲取狀態數據

    STHS34PF80傳感器項目種修改 Arduino 腳本,重新移植到STM32的MCU中。 該項目基于STHS34PF80 IR溫度傳感器,能夠檢測環境和物體溫度,并且在最大4米范
    的頭像 發表于 12-01 15:39 ?422次閱讀
    基于STM32CUBEMX驅動TMOS模塊<b class='flag-5'>STHS34PF80</b>(6)----<b class='flag-5'>獲取</b><b class='flag-5'>狀態</b>數據

    通過STEVAL-MKI109V3在unico上識別不到STHS34PF80是為什么?怎么處理?

    TMOS測試:通過STEVAL-MKI109V3在unico上識別不到STHS34PF80。
    發表于 03-26 08:31

    微波雷達傳感器模塊,智能衛生間技術應用,人體存在感應雷達

    ,從而實現人體存在感應。智能衛生間服務對象是,因而能否做到“智慧”前提是對于人員的存在感知。例如通過智能傳感器采用來檢測衛生間客流和廁位的
    發表于 09-07 16:02

    HC-SR505人體紅外感應傳感器特點介紹

    HC-SR505人體紅外感應傳感器一、本例程實現功能二、HC-SR505傳感器介紹三、接線圖四、完整代碼五、代碼運行結果一、本例程實現功能通過HC-SR505人體紅外感應
    發表于 12-07 10:08

    LivingScan人體存在傳感器手冊

    LivingScan人體存在傳感器是一款基于超寬帶(UWB)雷達技術、自成體系的隔空人體存在檢測傳感器
    發表于 07-13 16:24 ?5次下載

    方案 | ST最新一代高靈敏度 STHS34PF80人體感應檢測方案

    。意法半導體推出基于紅外信號的TMOS(溫度感應半導體金屬氧化物)人體存在檢測傳感器,助力智能產品性能的進一步提升和功能的更加完善。優勢1:能探測靜止存在的物體。市場
    的頭像 發表于 09-07 10:09 ?994次閱讀
    方案 | ST最新一代高靈敏度 <b class='flag-5'>STHS34PF80</b><b class='flag-5'>人體</b>感應檢測方案

    意法半導體發布新型人體存在和移動檢測芯片

    ????????意法半導體發布新型人體存在和移動檢測芯片。STHS34PF80是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統的被動紅外(PI
    的頭像 發表于 07-28 15:13 ?622次閱讀

    意法半導發布了新型人體存在和移動檢測芯片:STHS34PF80

    近期,意法半導發布了新型人體存在和移動檢測芯片:STHS34PF80,它是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統的被動紅外(PIR)
    的頭像 發表于 07-30 09:47 ?1277次閱讀

    ST TMOS熱敏紅外傳感器: 精準檢測人員存在和移動

    意法半導發布新型人體存在和移動檢測芯片。STHS34PF80是一款帶有微加工熱敏晶體管(TMOS)的高集成度、超低功耗的紅外(IR)傳感器,可取代傳統的被動紅外(PIR)
    發表于 08-08 14:48 ?347次閱讀

    人體存在傳感器方案,雷達感控聯動技術,人體接近傳感器感應互動人體存在傳感器怎么選?

    人體存在傳感器方案,雷達感控聯動技術,人體接近傳感器感應互動人體
    的頭像 發表于 10-20 14:25 ?498次閱讀

    e2studio開發STHS34PF80人體存在傳感器(1)----獲取人體存在狀態

    STHS34PF80是一款高性能的紅外(IR)傳感器,特別適用于檢測存在感和運動。其主要特點是高靈敏度,能在沒有透鏡的情況下探測到4米遠的物體(尺寸為70 x 25厘米),并配有集成的硅紅外濾波器
    的頭像 發表于 01-09 16:00 ?259次閱讀
    e2studio開發<b class='flag-5'>STHS34PF80</b><b class='flag-5'>人體</b><b class='flag-5'>存在</b><b class='flag-5'>傳感器</b>(1)----<b class='flag-5'>獲取</b><b class='flag-5'>人體</b><b class='flag-5'>存在</b><b class='flag-5'>狀態</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>