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启动、构建传感器类时完成。

审核编辑:汤梓红

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

    关注

    2526

    文章

    48092

    浏览量

    740010
  • Rohm
    +关注

    关注

    8

    文章

    348

    浏览量

    65425
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184828
收藏 人收藏

    评论

    相关推荐

    手机平板电脑翻页传感器(3D方向传感器)

    我们主要做翻页传感器,用手动作可以使手机,平板电脑 里的书自动翻页,还可以旋转方向。我们的官名叫3D方向传感器。LUVKYHJ@FOXMAIL.COM手机,*** QQ1428777356
    发表于 03-20 23:48

    友善3D打印外壳资料

    `友善3D打印外壳资料网站,为玩家提供开源的外壳资料http://www.thingiverse.com/FriendlyARM3DPrinter/designs`
    发表于 10-25 13:58

    3D打印外壳资料

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

    树莓派外壳3D文件分享

    树莓派外壳3D文件分享,可以3d打印,用UG NX画的,给你的pi穿上外衣,不要再让他裸奔了,容易短路。
    发表于 12-06 20:23

    DV102014投射式电容式多点触控,带有3D GestIC传感开发套件

    DV102014,DV102014投射式电容式多点触控,带有3D GestIC传感开发套件。 DV102014开发套件是用于评估和设计2
    发表于 05-25 14:14

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

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

    3D传感器在环境感知、捕捉方面的作用

    以及将物品从一个位置移动到另一个位置等。这些应用都依赖于经济且强大的3D视觉传感器,目前,该领域存在多种竞争型技术。所有这些技术都有各自的优点和缺点,具有不同的工作距离、分辨率、处理能力以及
    发表于 08-10 06:27

    3D传感器有哪些类型

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

    【罗姆传感器评估板试用体验连载】一、产品开箱

    感谢eefans和厂家提供的试用活动。本次收到的是来自罗姆放的传感器评估板。板卡采用日系简洁风的包装:板卡全家福:套件包含3传感器板卡和一
    发表于 02-11 19:08

    【罗姆传感器评估板试用体验连载】开箱展示

    首先感谢电子发烧友平台的眷顾,有幸申请到了Rohm传感器开发板套件。这次申请的套件包含了Rohm三个类型
    发表于 03-11 14:01

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

    今天,我们将利用ROHM传感器评估套件打造一套智能花园系统。在此项目中,我们整合接近/环境光传感器(ALS)和其他
    的头像 发表于 02-23 17:58 822次阅读
    利用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 600次阅读
    用<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 1166次阅读
    Arduino预处理器指令教程

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

    在该项目中,我们将使用Arduino Mega和ROHM传感器评估套件来制作一套DIY Arduino家庭安防系统。
    的头像 发表于 02-24 15:08 711次阅读
    采用<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 354次阅读