0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ROHM传感器评估套件的3D外壳以及RohmMultiSensor库更新

张桂英 来源:ggfx 作者:ggfx 2023-02-24 09:51 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

pYYBAGPzGCyAdag-AADADNujym0609.jpg

不久前,我创建了RohmMultiSensorArduino库,利用该库可以轻松控制ROHM传感器评估套件中的多个传感器。第一篇文章发布以来,库API发生了一些变化,使得测量更加容易。此外,RohmMultiSensor现在为每个传感器和开发板提供3D打印外壳!

硬件

Arduino UNO或Mega

ROHM传感器评估套件

3D打印传感器外壳,详细信息请参阅Thingiverse

软件

Arduino IDE

RohmMultiSensor库,详细信息请参阅GitHub

工具

3D打印机

在本文中,我们将介绍该库的一些新功能和改进功能。我们还会介绍传感器和开发板的3D打印外壳。

新测量方法

首先解释一下我如何——也许更重要的是为什么——改变了测量方式。在之前版本的库中,您调用了一个函数,其返回值如下所示:

float* accelValue = acc.measure();

虽然这种方法非常直观,而且对于大多数传感器来说效果很好,但对于返回多个值的传感器而言并不方便。比如,加速度计会返回三个值:X、Y和Z轴的加速度。然后,该函数必须返回一个包含三个值的数组。用C/C++术语来说,这意味着返回一个指向数组的指针,动态地分配一个新的数组。数组用完之后,我们需要手动释放该数组以释放内存。

delete[] accelValue;

在C/C++中动态分配数组并重新分配数组在C/C++中并不少见,但对于刚刚开始编程且尚未完全理解内存管理和指针等内容的人来说,这并不是最直观的。

为了让Arduino初学者便于使用该库,测量系统发生了以下变化:每个传感器仍然具有原始.measure()函数。但是,这个函数不带参数,不返回任何东西。传感器测量的值被存储一个测量变量中,该变量是传感器类的一部分。

sensorAcc.measure();
// 现在我们把数据放在测量变量中
Serial.println(sensorAcc.accelX);
Serial.println(sensorAcc.accelY);
Serial.println(sensorAcc.accelZ);

这个新系统也意味着库能够更好地处理异步测量和中断。

改进的中断支持

更新库还改进了对中断的支持。在旧版本中,唯一支持——实际上是需要——中断的传感器是BM1422GMV地磁传感器。但是,几乎所有使用I2C总线的传感器都有某种形式的中断。这就是为什么现在库可以支持KX022加速度计的中断功能,后续我会提供更多支持!

现在,实现中断的方式非常简单:每次Arduino接收到传感器的中断后,测量变量就会被更新。这个值一直有效,直到新中断到达。此时,系统从传感器读取一个新值并保存。

以下代码展示了如何将BM1422GMV和KX022与中断一起使用。

// 定义所使用的传感器

#define INCLUDE_BM1422GMV

#define INCLUDE_KX022_1020

// 包含库

#include 

// 用中断0实例化KX022-1020类

KX022_1020 sensorAcc(INT_0);

// 用中断1实例化BM1422GMV类

BM1422GMV sensorMag(INT_1);

// 定义中断服务程序

void acc_isr(void) {

sensorAcc.setFlagDrdy();

}

void mag_isr(void) {

sensorMag.setFlagDrdy();

}

void setup() {

// 开始串行通信

Serial.begin(9600);

Serial.println();

// 开启TWI(I2C)接口。

// 调用.init()之前,必须调用这个函数!

Wire.begin();

// 用默认值初始化KX022-1020和BM1422GMV

// 我们必须为.init()提供中断服务例程

sensorAcc.init(acc_isr);

sensorMag.init(mag_isr);

Serial.println("X[g]tY[g]tZ[g]tX[uT]tY[uT]tZ[uT]");

}


void loop() {

// 测量传感器数值

sensorAcc.measure();

sensorMag.measure();

// 输出所测量的数值

Serial.print(sensorAcc.accelX);

Serial.print('t');

Serial.print(sensorAcc.accelY);

Serial.print('t');

Serial.print(sensorAcc.accelZ);

Serial.print('t');

Serial.print(sensorMag.magX);

Serial.print('t');

Serial.print(sensorMag.magY);

Serial.print('t');

Serial.println(sensorMag.magZ);


// 下次测量之前等待100 ms

delay(100);

}

由于KX022不需要中断工作,因此可以禁用中断!

// 定义所使用的传感器

#define INCLUDE_KX022_1020

// 包含库

#include RohmMultiSensor.h

// 用默认设置实例化传感器类

KX022_1020 sensorAcc;

// 上述指令相当于

// KX022_1020 acc(INT_NONE);

void setup() {

// 开始串行通信

Serial.begin(9600);

Serial.println();

// 开启TWI(I2C)接口。

// 调用.init()之前,必须调用这个函数!

Wire.begin();

// 用默认值初始化KX022-1020

sensorAcc.init();

Serial.println("X[g]tY[g]tZ[g]");

}

void loop() {

// 测量传感器数值

sensorAcc.measure();

// 将值打印至串口

Serial.print(sensorAcc.accelX);

Serial.print('t');

Serial.print(sensorAcc.accelY);

Serial.print('t');

Serial.println(sensorAcc.accelZ);

// 下次测量之前等待100 ms

delay(100);

}

传感器外壳

除了RohmMultiSensor库,我们还为传感器制作了重要的外壳!凭借这些装置,您可以将传感器安装在任何位置,然后使用线将它们连至开发板。如果您需要确保像加速度计和磁力计这样的传感器牢固安装并提供精确测量,或者需要将传感器开发板放在单独的外壳中,这将非常有用。

将传感器安装到外壳中非常简单。所有外壳都由两部分组成:下半部分和上半部分。

pYYBAGPzFEeAZKULAACD6t1_Giw353.jpg

图1 KX022-1020或BM1422GMV等传感器的通用外壳。左边为下半部分,右边为上半部分。

只需将传感器插入外壳的下半部分,让引脚突出另一侧即可。

poYBAGPzGC-AfLddAACGzvy6uFw731.jpg

图2 插入外壳下半部分的传感器,底视图(左)和顶视图(右)

然后,用两个M3螺栓将传感器固定到位。

poYBAGPzGDGAf1IvAACTm8A19XE994.jpg

图3 装有两个M3螺栓的传感器,底视图(左)和顶视图(右)

现在只需要用M3螺栓将外壳的上半部分固定到下半部分。完成!外壳现在可以自由安装在几乎任何东西上。

pYYBAGPzGDOANaN6AABrvtL1Ir0666.jpg

图4 装配完成的传感器外壳

有些传感器,比如紫外线传感器或颜色传感器,需要与外界进行光学接触。这些传感器的外壳设计能够实现这种光学接触,如下图所示。

poYBAGPzGDSAENu5AACH0KxKrqk923.jpg

图5 装配完成的UV传感器外壳

当然,如果没有开发板外壳,那么这个外壳清单就不完整!开发板外壳可以让您将Arduino和ROHM传感器评估开发板放入一个非常方便的箱子中,同时仍然能够在上面安装传感器!

pYYBAGPzGDaADYZYAADLjm1UI40882.jpg

图6 开发板外壳

pYYBAGPzGDiAfq1GAAFH0e3_CME195.jpg

图7 传感器开发板的顶盖

poYBAGPzGDqAfOFTAADg_JaiDKE699.jpg

图8 传感器开发板的底盖

当然,还有很多需要改进的地方。如上文所述,许多其他传感器也可以使用中断,实现这些功能也不错。另外,我们可以设法在运行程序(sketch)时重新配置传感器设置,该功能也很有用。目前,这个过程只能在Arduino启动、构建传感器类时完成。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2550

    文章

    51035

    浏览量

    753081
  • Rohm
    +关注

    关注

    8

    文章

    370

    浏览量

    66029
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186956
收藏 人收藏

    评论

    相关推荐

    3D打印外壳资料

    /index.htm?spm=2013.1.w5002-4851414884.2.DnEssPNanoPi M3 3D打印外壳NanoPi M1 3D打印
    发表于 11-29 18:03

    3D传感器如何为车内安全保驾护航?

    图像感知技术公司,此前,他们的3D感知技术已经实现了穿透不同材料、感知液体,以及绘制3D模型等场景应用。当地时间7月13日,Vayyar宣布发布新一代传感器产品,将面向汽车及自动驾驶市
    发表于 07-29 07:38

    3D传感器有哪些类型

    目标表面的横截面轮廓,从而生成高密度3D点云。整个零件的3D点云用于执行尺寸和体积测量以及决策。智能线轮廓传感器提供内置的测量工具,还可以生成与3D
    发表于 12-09 14:09

    3D元件封装

    3D元件封装3D元件封装3D元件封装3D元件封
    发表于 03-21 17:16 0次下载

    快速了解3D力度感测技术厂商Peratech推出3D力度触摸传感器

    Peratech QTC力度感测的独特柔性显示可实现全新应用。3D力度感测技术厂商Peratech宣布推出一款集成了柔性有机液晶显示(OLCD)的有源矩阵3D力度触摸
    发表于 04-26 16:09 3650次阅读

    多个3D智能传感器组网的多传感器网络介绍

    由多个3D智能传感器组网的多传感器网络是应对这一挑战的理想解决方案,同步扫描以及跨多部扫描设备执行校准和拼接的能力带来诸多关键优势。
    发表于 11-04 15:47 2074次阅读

    3D视觉传感器的精度是指什么

    经常听到有人问“3D视觉传感器/3D激光视觉传感器的精度是指什么?跟重复精度有什么区别?”“3D视觉传感
    发表于 03-28 13:33 2296次阅读
    <b class='flag-5'>3D</b>视觉<b class='flag-5'>传感器</b>的精度是指什么

    选择3D传感器时需要注意什么

    3D传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。
    发表于 04-13 14:59 573次阅读
    选择<b class='flag-5'>3D</b><b class='flag-5'>传感器</b>时需要注意什么

    创建3D打印智能灯丝传感器的教程

    今天我将演示如何使用光学编码传感器和控制在穿孔板上创建 3D 打印智能灯丝传感器。我为我们的灯丝传感
    发表于 07-12 16:19 1338次阅读
    创建<b class='flag-5'>3D</b>打印智能灯丝<b class='flag-5'>传感器</b>的教程

    利用Arduino Create和ROHM传感器评估套件制作智能花园系统

    今天,我们将利用ROHM传感器评估套件打造一套智能花园系统。在此项目中,我们整合接近/环境光传感器(ALS)和其他
    的头像 发表于 02-23 17:58 1203次阅读
    利用Arduino Create和<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>评估</b><b class='flag-5'>套件</b>制作智能花园系统

    ROHM Arduino传感器套件打造DIY万圣节僵尸面具

    今天,我们会利用ROHM传感器评估套件制作一款超级简单的万圣节僵尸面具!我们将使用ROHM接近传感器
    的头像 发表于 02-23 17:45 923次阅读
    用<b class='flag-5'>ROHM</b> Arduino<b class='flag-5'>传感器</b><b class='flag-5'>套件</b>打造DIY万圣节僵尸面具

    Arduino预处理指令教程

    在适用于ROHM传感器评估套件的轻量级Arduino中,我介绍了RohmMultiSensor
    的头像 发表于 02-24 09:51 1750次阅读
    Arduino预处理<b class='flag-5'>器</b>指令教程

    采用ROHM传感器套件的DIY Arduino家庭安防系统 第1部分 机制

    在该项目中,我们将使用Arduino Mega和ROHM传感器评估套件来制作一套DIY Arduino家庭安防系统。
    的头像 发表于 02-24 15:08 1022次阅读
    采用<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>套件</b>的DIY Arduino家庭安防系统 第1部分 机制

    利用ROHM传感器评估套件实现UCLA AirMouse–第2部分

    在利用ROHM传感器评估套件实现UCLA AirMouse – 第1部分中,我们完成了项目的硬件。对于发射部分,我们将AirMouse按钮
    的头像 发表于 02-27 10:27 556次阅读

    3D霍尔传感器与三轴的霍尔开关传感器有什么区别和联系

    霍尔微电子全新推出3D 3轴霍尔传感器 ,那么3D霍尔传感器3轴的霍尔开关
    的头像 发表于 09-20 11:52 1005次阅读