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

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

3天内不再提示

基于OpenHarmony的智能金属探测器

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 作者:OpenAtom OpenHarmony 2022-06-23 14:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、简介

智能金属探测器是基于 OpenAtom OpenHarmony(以下简称“OpenHarmony”)操作系统,利用电磁感应原理来探测周围的金属物体。该样例采用多设备协同的方式,兼容 OpenHarmony 设备开发与应用开发,整个样例体现了 OpenHarmony 的 NAPI、eTS UI、UI 管理状态 @state 和音频播放等技术特性。

62c46bcc-f22e-11ec-ba43-dac502259ad0.png

本项目由 Geek_Lite_Board 开发板和润和 RK3568 开发板构成,Geek_Lite_Board 开发板主控芯片为 STM32F427IIH6,作为设备端检测磁场强度的变化,使用的是 OpenHarmony 3.0 LTS 版本。润和 RK3568 开发板是由润和软件研发,采用瑞芯微 RK3568 芯片,作为应用端显示金属探测信息,使用的是 OpenHarmony 3.1 Release 版本。

二、运行效果

当周围有金属靠近时,设备端蜂鸣器会发出警报并把检测信息通过 Wi-Fi 模组发送给应用端。在应用端收到检测信息之后,会通过屏幕显示检测状态并语音播报检测结果。

62f78f02-f22e-11ec-ba43-dac502259ad0.gif

三、功能实现

Geek_Lite_Board 开发板通过 AK8963 电子罗盘芯片获取地球磁场强度。通常地球的磁场强度是 0.4-0.6 高斯,当金属靠近电子罗盘芯片时,根据电磁感应原理,金属在磁场中的感应会引起磁场信号的变化。Geek_Lite_Board 开发板通过 Wi-Fi 与润和 RK3568 开发板实时通信,把检测到的信息实时上传。

润和 RK3568 开发板作为应用端,采用方舟开发框架(ArkUI)基于 eTS 扩展的声明式开发范式编写页面,通过 NAPI 接口接收设备端 Geek_Lite_Board 开发板的检测信息,使用 OpenHarmony 媒体子系统中的音频播放功能实现语音播报金属检测状态。

64207df8-f22e-11ec-ba43-dac502259ad0.png

磁场数据获取

AK8963 一款具有高灵敏度霍尔传感器技术的三轴电子罗盘集成芯片,内部包含磁力传感器,可以在 x 轴、y 轴、z 轴检测地球磁场强度。

643f81f8-f22e-11ec-ba43-dac502259ad0.png

● 通过Mpu_Read_Bytes()函数读芯片数据寄存器的值。
uint8_t Mpu_Read_Bytes(uint8_t const regAddr, uint8_t *pData, uint8_t len)
● 获取 AK8963 的磁场原始数据。
Mpu_Data.mag_x = (MPU_BUFF[16] << 8) | MPU_BUFF[15]; // x轴磁场数据Mpu_Data.mag_y = (MPU_BUFF[18] << 8) | MPU_BUFF[17]; // y轴磁场数据Mpu_Data.mag_z=(MPU_BUFF[20]<< 8)|MPU_BUFF[19];//z轴磁场数据
● 对 AK8963 原始磁场数据进行转化,得到磁场强度,单位高斯。
Gauss_Mag_z = Mpu_Calc.mag_z * 0.15f * 0.01f;

检测金属信息

首先采集 100 组 z 轴磁场强度基准数据,然后对这些数据做平均处理,由此得到 z 轴磁场强度的零点数据。
const uint16_t calibrateCount = 1000; // 测量最大次数为1000const uint16_t calibrateFrequency = 5; // 每测量5次取一次有效值const uint16_t calibrateAverageCount = 100; // 取100次有效值if(i < calibrateCount){    i++;    if(i%calibrateFrequency == calibrateFrequency){       Mag_z_buff[j++] = Gauss_Mag_z;        if(j >= calibrateAverageCount){            i = calibrateCount;            Mag_z_Flag = true;            for(k=0;k                origin_mag_z += Mag_z_buff[k];            }            origin_mag_z = origin_mag_z / calibrateAverageCount;            // 校准完成,蓝灯亮,发送给应用端 "CalibrateOK"            BLUE_LED_ON();            memset(buff,0x00,sizeof(buff));            sprintf(buff,"angle:%s","CalibrateOK");            ESP8266_send_data(buff,strlen(buff));        }    }}
以 origin_mag_z 作为零点,把获取到的磁场数据与它进行对比,以此来判断是否检测到金属。

NAPI获取数据

NAPI(Native API)是 OpenHarmony 标准系统的一种 JS API 实现机制,适合封装 IO、CPU 密集型、OS 底层等能力并对外暴露 JS 接口,通过 NAPI 可以实现 JS 与 C/C++ 代码互相访问。润和 RK3568 应用端通过 NAPI 来接受设备端发出的检测信息。 底层 NAPI 模块封装封装模块名为 tcpserverapi,下载至 tcpservermodule 文件夹。下载完成后放到 3.1Release 源码根目录,并配置编译脚本;第一次编译完成需要烧写整个镜像,后面修改模块源码,只需将库 send 到板子里面。命令如下:
// 先挂载,再sendhdc_std shell mount -oremount,rw /   hdc_stdfilesendlibtcpserverapi.z.sosystem/lib/module/libtcpserverapi.z.so
应用端导入 NAPI 模块
import tcpserverapi from '@ohos.tcpserverapi'
应用端 NAPI 接口调用
// 调用initServer接口 初始化 TCP 服务器tcpserverapi.initServer() // 调用recvMsg 获取并解析Geek_Lite_Board开发板发送过来的角度tcpserverapi.recvMsg().then((result) => {      var resultAngle = result.angle;})

UI状态显示与管理

如上图所示为检测中页面,整体布局分为文字标题和检测状态示意图。

文字标题由 Flex 布局容器 text 组件实现,用于呈现一段信息,如下为 text 接口相关属性。

647feb30-f22e-11ec-ba43-dac502259ad0.png

检测状态示意图包括页面背景图,检测状态图,检测结果说明文字,具体功能由 Flex 弹性布局组件实现。接口原型如下所示:
Flex(options?: { direction?: FlexDirection, wrap?: FlexWrap, justifyContent?: FlexAlign, alignItems?: ItemAlign, alignContent?: FlexAlign })
通过调用 recvMsg 接口接送金属探测器的消息,并修改首页展示状态,关键实现代码描述如下:
aboutToAppear() {    var intervalID = setInterval(() => {        tcpserverapi.recvMsg().then((result) => {       }   }}
其中 “ var intervalID = setInterval(() => ” 使用了定时器,定时调用 “recvMsg” 方法,通过 NAPI 获取金属检测结果。
if (resultMetal.match("metal:")) {    this.metal = resultMetal.slice(6);    console.info('=======' + this.metal)    if (this.metal === 'Detected') {          this.detectionState = '发现金属';          this.detection = $r("app.media.img_detected");          this.isDisplay = false;    }    else if (this.metal === 'UnDetected' || this.metal ==='CalibrateOK') {          this.detectionState = '检测中';          this.detection = $r("app.media.img_detecting");          this.isDisplay = true;     }}
当通过 NAPI 方式获取到检测信息为 “ metal:Detected ” 时,设置 detectionState 为发现金属状态,屏幕显示检测到金属页面;当通过 NAPI 方式获取到的检测信息为 “ metal:UnDetected ” 时,此时并未检测到任何金属信息,设置 detectionState 为检测中状态,屏幕显示检测中状态页面。

语音播报检测状态

检测到金属后,RK3568 会播报已探测到金属的语音信息,达到通知用户的目的,通过 OpenHarmony 媒体子系统的音频播放功能实现。OpenHarmony 媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。媒体子系统包含了音频播放、视频播放、音频录制和视频录制等常用功能。音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行管理。本样例主要通过导入 media 模块、创建音频播放实例、实现音频播放接口和实现暂停播放接口等流程实现。

导入media模块


import media from '@ohos.multimedia.media';
创建音频播放实例
// OH media对象privateplayer=media.createAudioPlayer();

实现音频播放接口

使用 play() 调用开始播放音频资源,需在完成音频数据加载后,即 src 属性设置完成后才能调用。


play():void

四、总结

本文简述了如何使用 OpenHarmony 进行多设备的开发,演示了 NAPI、eTS UI、UI 管理状态 @state 和音频播放等技术特性的应用,通过这些多元化的功能,我们最终实现了金属探测器样例。丰富多样的 OpenHarmony 开发样例离不开广大合作伙伴和开发者的贡献,如果你也想把自己开发的样例分享出来,欢迎把样例提交到 OpenHarmony 知识体系 SIG 仓来,一起实现开发样例共建。

五、参考链接

RK3568开发板上丝滑体验OpenHarmony标准系统

https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/docs/rk3568_quick_start

在Windows编译OpenHarmony工程

https://gitee.com/Cruise2019/team_x/blob/master/homework/ohos_build_win/readme.md

OpenHarmony NAPI 学习文档

https://gitee.com/javen678/hello-ohos-napi/tree/master/doc#/javen678/hello-ohos-napi/blob/master/doc/1.HelloNAPI.md

OpenHarmony基于eTS扩展的声明式开发范式

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md

音频播放开发指导

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/audio-playback.md

从零开发金属探测器应用

https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/metal_detection/quick_develop.md

GEEKROS官网

https://www.geekros.com/


审核编辑 :李倩


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

    关注

    15

    文章

    2744

    浏览量

    75516
  • 蜂鸣器
    +关注

    关注

    12

    文章

    897

    浏览量

    47619
  • OpenHarmony
    +关注

    关注

    31

    文章

    3928

    浏览量

    20740

原文标题:基于OpenHarmony的智能金属探测器

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Amphenol数字红外探测器评估套件使用指南

    Amphenol数字红外探测器评估套件使用指南 在电子设计领域,红外探测器的应用越来越广泛。Amphenol的数字红外探测器评估套件(Digital IR EVM KIT,Part No.
    的头像 发表于 12-11 09:20 262次阅读

    相机分辨率:融合探测器与光学性能

    图1、该系统的调制传递函数为 MTFSYS = MTFOPTICS*MTFDETECTOR。由于探测器的调制传递函数起着主导作用,所以这是一个受探测器限制的系统(Fλ/d = 0.1) 相机的分辨率
    的头像 发表于 11-11 07:58 163次阅读
    相机分辨率:融合<b class='flag-5'>探测器</b>与光学性能

    混合探测器与光电倍增管的区别以及参数解析

    混合探测器又叫混合型光电探测器,简称HPD(Hybrid photon detector)。混合探测器也具有倍增功能,与光电倍增管(PMT)的区别主要是倍增方式不同---混合探测器的倍
    的头像 发表于 10-11 08:14 266次阅读
    混合<b class='flag-5'>探测器</b>与光电倍增管的区别以及参数解析

    光电探测器PMT、APD、CCD、CMos、ICCD、EMCCD

    PMT和APD都属于点探测器,只能探测光子信息,可以通过扫描方式测光谱。CCD和CMOS属于线阵或者面探测器,可以成像。ICCD和EMCCD属于不同类型的CCD。 一、PMT PMT:光电倍增管
    的头像 发表于 09-16 07:58 877次阅读
    光电<b class='flag-5'>探测器</b>PMT、APD、CCD、CMos、ICCD、EMCCD

    VirtualLab:通用探测器

    摘要 通用探测器是VirtualLab Fusion中来评估和输出电磁场任何信息的最通用工具。它能够提供不同域(空间域和空间频域)和坐标系(场与探测器位置坐标系)的信息。此外,通过使用非常灵活的内置
    发表于 06-12 08:59

    DZR185AC零偏压肖特基二极管探测器

    DZR185AC是一款由HEROTEK公司生产的零偏压肖特基二极管探测器,专为高频信号检测设计。其核心优势在于无需外部偏置电压即可工作,通过金属-半导体接触形成的肖特基势垒实现信号检波。相比传统对数
    发表于 05-12 09:18

    VirtualLab Fusion应用:光波导系统的均匀性探测器

    个均匀性检测,为此类研究提供工具。在本文档中,我们演示了均匀性检测的配置选项。 这个使用用例展示了 … 均匀性检测 均匀性检测的编辑对话框
    发表于 04-30 08:49

    激光焊接技术在焊接探测器元器件的工艺流程

    准备, 1.材料准备, 对探测器元器件和焊接材料进行清洁和处理,去除表面的油污、铁锈等杂质,确保焊接表面的洁净度。 根据焊接要求,选择合适的焊接材料,如金属丝、金属片等。 2.设备检查与预热, 检查激光焊接机的各项功能是
    的头像 发表于 04-28 10:47 524次阅读

    红外探测器像元尺寸详解

    红外探测器像元尺寸是红外热成像领域中的一个关键参数,它指的是在红外探测器芯片焦平面阵列上,每个像元的实际物理尺寸,通常以微米(μm)为单位来进行表示,常见的像元尺寸有8μm、12μm、17μm、25μm等。以下是对红外探测器像元
    的头像 发表于 03-31 16:33 1557次阅读
    红外<b class='flag-5'>探测器</b>像元尺寸详解

    红外探测器晶圆级、陶瓷级和金属级三种封装形式有什么区别?

    红外探测器作为红外热像仪的核心部件,广泛应用于工业、安防、医疗等多个领域。随着技术的不断进步,红外探测器的封装形式也在不断发展和完善。其中,晶圆级、陶瓷级和金属级封装是三种最常见的封装形式,它们各自具有独特的特点和优势,适用于不
    的头像 发表于 03-05 16:43 1054次阅读
    红外<b class='flag-5'>探测器</b>晶圆级、陶瓷级和<b class='flag-5'>金属</b>级三种封装形式有什么区别?

    解决方案 | 声纳探测器 低噪运放破解水下探测难题

    声纳探测器解决方案总述:声纳探测器是一种利用声波在水下传播特性来探测目标的设备。它通过发射声波,然后接收目标反射回来的回波,根据回波的时间、频率和幅度等信息,确定目标的位置、形状、大小和运动状态等
    的头像 发表于 02-24 13:49 1490次阅读
    解决方案 | 声纳<b class='flag-5'>探测器</b> 低噪运放破解水下<b class='flag-5'>探测</b>难题

    VirtualLab Fusion应用:用于光波导系统的均匀性探测器

    探测器,可以进行所需的研究。在本文件中,我们将演示可用的选项以及如何操作均匀性探测器。 案例演示 均匀性探测器 探测器功能:相干参数 如果存在多个相干模式,则重叠的模可以相干
    发表于 02-08 08:57

    探测器的基本原理

    通过光伏效应,硅探测器提供了一种将光能转化为电流的方法。这种现象背后的理论根源是探测器价带和导带之间的小能隙。当具有足够能量将电子从价态激发到导带的光入射到探测器上时,由此产生的电荷积累会导致连接
    的头像 发表于 01-08 06:22 825次阅读
    硅<b class='flag-5'>探测器</b>的基本原理

    用于光波导系统的均匀性探测器

    提供了均匀性探测器,可以进行所需的研究。在本文件中,我们将演示可用的选项以及如何操作均匀性探测器。 **案例演示 ** **均匀性探测器 ** **探测器功能:相干参数 ** 如
    发表于 12-20 10:30

    红外光束烟雾探测器

    光束烟感电子软件设计 反射光束感烟探测器,内置激光指针和数字指南,设计成人性化的认准方法。 内置微处理,可自我诊断和监视内部故障。 支持安装距离:8~160米。
    发表于 12-16 18:12