yin_wu_qing 发表于 2021-8-22 19:15

【Silicon Labs 开发套件评测】+光传感与霍尔传感的检测

本帖最后由 yin_wu_qing 于 2021-8-22 19:24 编辑

<p>&nbsp; &nbsp;<span style="font-size:16px;">&nbsp;</span><span style="font-size:20px;">&nbsp; 收到板子也有段时间了,由于最近手头的事比较多,所以只能周末补发贴子咯。前期回顾:<a href="https://bbs.eeworld.com.cn/thread-1173930-1-1.html" target="_blank">【Silicon Labs 开发套件评测】+关于板上传感器的资料</a>,这块开发板集成了多个传感器,此次与大伙分享一下关于环境光传感器(VEML6035)与霍尔效应传感器(Si7210)的功能检测。</span></p>

<p><span style="font-size:20px;">&nbsp; &nbsp; &nbsp;威世半导体生产的环境光传感器VEML6035倡导低功耗、高灵敏度,采用IIC总线通讯,官方描述如下图所示:</span></p>

<p>&nbsp; &nbsp; &nbsp; &nbsp;<span style="font-size:20px;">&nbsp;根据数据手册我们可以获悉传感器的设备地址是0x29,数据手册中关于IIC接口介绍如下:</span></p>

<p>&nbsp; &nbsp; &nbsp;<span style="font-size:20px;">&nbsp; &nbsp;Si7210是由芯科科技(Silicon Labs)提供的霍尔传感器,其SOT-23封装的管脚定义如下:</span></p>

<p>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="font-size:20px;">&nbsp;根据数据手册我们可以获悉Si7210的设备地址有0x30, 0x31, 0x32, or 0x33,数据手册中关于IIC接口介绍如下:</span></p>

<p></p>

<p>&nbsp; &nbsp; &nbsp;&nbsp;<span style="font-size:20px;">&nbsp; VEML6035器件与霍尔传感器(Si7210)在EFM32PG22开发板上的电路连线可参考电路原理图</span></p>

<p></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp; &nbsp;&nbsp;<span style="font-size:20px;">&nbsp; &nbsp;</span></p>

<p><span style="font-size:20px;">&nbsp; &nbsp; &nbsp; &nbsp;在&ldquo;Simplicity Studio IDE</span><span style="font-size:20px;">&rdquo;中,创建一个RTOS基本工程,接着需要安装、使能一些关于IIC接口的组件。</span></p>

<p>&nbsp; &nbsp; &nbsp;&nbsp;<span style="font-size:20px;">&nbsp; </span></p>

<p><span style="font-size:20px;">&nbsp; &nbsp; &nbsp;这里使用串口工具来打印输出传感器所采集的实时数据,因此需要加载第三方重定向的函数库</span></p>

<p>&nbsp; &nbsp; &nbsp; &nbsp;<span style="font-size:20px;">&nbsp;使能VEML6035与Si7210传感器</span></p>

<p></p>

<p><span style="font-size:20px;">&nbsp; &nbsp; &nbsp; 然后在工程源码中添加传感器数据处理的任务,部分代码如下:</span></p>

<pre>
<code>#include &lt;stdio.h&gt;
#include "FreeRTOS.h"
#include "task.h"

#include "sl_i2cspm.h"
#include "em_cmu.h"
#include "sl_i2cspm_sensor_config.h"
#include "sl_veml6035.h"
#include "sl_si7210.h"

#ifndef TOOGLE_DELAY_MS
#define TOOGLE_DELAY_MS            1000
#endif

#ifndef EXAMPLE_USE_STATIC_ALLOCATION
#define EXAMPLE_USE_STATIC_ALLOCATION      0
#endif

static void Envir_Hall_test_task(void *arg);

sl_i2cspm_t *sl_i2cspm_sensor = SL_I2CSPM_SENSOR_PERIPHERAL;

void Sensor_Control_init(void)
{
TaskHandle_t xHandle = NULL;
BaseType_t xReturned = pdFAIL;

static StaticTask_t xTaskBuffer;
static StackType_txStack;

xReturned = xTaskCreate(Envir_Hall_test_task,
                         "Envir_Hall_test task",
                         BLINK_TASK_STACK_SIZE*3,
                         ( void * ) NULL,
                         tskIDLE_PRIORITY + 3,
                         &amp;xHandle);

EFM_ASSERT(xReturned == pdPASS);
}

static void Envir_Hall_test_task(void *arg)
{
const TickType_t xDelay = pdMS_TO_TICKS(TOOGLE_DELAY_MS);
float veml_templux;
float veml_daylux;
float si7210_hudata;
(void)&amp;arg;

sl_veml6035_init(sl_i2cspm_sensor,true);
sl_si7210_init(sl_i2cspm_sensor);
while(1)
    {
      sl_veml6035_get_als_lux(sl_i2cspm_sensor,&amp;veml_templux);
      sl_veml6035_get_white_lux(sl_i2cspm_sensor,&amp;veml_daylux);
      printf("veml_templux:%ld\r\n",(int32_t)(veml_templux*100));
      printf("veml_daylux:%ld\r\n",(int32_t)(veml_daylux*100));
      sl_si7210_measure(sl_i2cspm_sensor,10000,&amp;si7210_hudata);
      printf("si7210_hudata:%ld\r\n",((int32_t)si7210_hudata*1000));
      vTaskDelay(xDelay);
    }
}
</code></pre>

<p><span style="font-size:20px;">&nbsp; &nbsp; &nbsp; &nbsp; 编译完成,将hex文件下载到开发板中,然后打开串口调试助手,用手指放在VEML6035传感器上面,使周围环境光亮度发生变化,然后用螺丝刀在Si7210传感器附近晃动,产生霍尔值很明显。</span></p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="font-size:20px;">&nbsp;此次分享就告一段落啦,检测的结果说明环境光传感器(VEML6035)与霍尔效应传感器(Si7210)很灵敏,EFM32PG22微控制器非常适合这类低功耗器件的应用场景。</span></p>

<p></p>

<p></p>

Jacktang 发表于 2021-8-22 22:01

<p>看来环境光传感器和霍尔效应传感器确实是非常灵敏的</p>

w494143467 发表于 2021-8-25 11:39

<p>现在物联网时代,功耗确实是一大头!</p>
页: [1]
查看完整版本: 【Silicon Labs 开发套件评测】+光传感与霍尔传感的检测