iexplore123

  • 2025-04-02
  • 回复了主题帖: 【Thingy:91X】测评 篇一:初识Thingy:91X (2)硬件概览

    wangerxian 发表于 2025-3-30 15:02 nRF9151功耗也挺低的吧? 确实,低功耗也是Nordic占据市场的底气之一

  • 2025-03-30
  • 发表了主题帖: 【Thingy:91X】测评 篇一:初识Thingy:91X (3)HellonRFCloud远程点灯与续航测试

    # 【Thingy:91X】测评 篇一:初识Thingy:91X (3)HellonRFCloud远程点灯与续航测试 根据前面的介绍,我们已经对Thingy:91X有了一个大致的了解,Thingy:91X搭载了许多可用外设,想要对这些外设快速进行开发验证还是很消耗精力的。好在Nordic也为我们提供了[hello.nrfcloud.com](https://hello.nrfcloud.com/)来快速部署Thingy:91X进行验证,无需进行复杂的配置和编程,只要插入sim卡并打开电源,Thingy:91X就会自动连接到nRF Cloud,我们甚至可以通过nRF Cloud的网页应用来远程进行Thingy:91X初次使用的点灯测试。 ## nRF Cloud Desktop 介绍 Thingy:91X 出厂时预装了与hellonRFCloud网页通信的应用,但其他情况下我们也可以通过 nRF Cloud Desktop 重新烧录该应用来进行验证。nRF Cloud Desktop 是 Nordic 提供的一款桌面程序,主要用于测试设备、固件更新和数据可视化。它简化了 Thingy:91X 的配置流程,支持开发者快速将固件烧录到设备中。 打开nRF Cloud Desktop,连接Thingy:91X并启动Quick Start应用,可以看到Thingy:91X的相关介绍。Quick Start应用为THingy:91X提供了4个预先编译的应用程序,烧录后会通过AT指令查询设备型号以验证与Thingy:91X的通讯是否正常,之后他会建议我们安装其他相关APP以及配置VSCode或者命令行开发环境,非常友好。 ## Hello,nrfcloud! 扫描电路板上的二维码进入[hello.nrfcloud.com](https://hello.nrfcloud.com)网页应用后,我们可以看到设备状态,包括连接状态、电量、环境数据等。 > 如果不确定设备是否连接成功,右侧有关于LED闪烁的说明,黄色闪烁表示正在连接,蓝色闪烁表示连接成功,一目了然。 ### 远程点灯 右侧的LED控制面板可以让我们远程控制Thingy:91X上的LED灯,点击Thingy:91X左上角的LED灯图标选择颜色,可以看到网页提示以及对Thingy:91X挂起了一个点灯的请求,只需要点击盒子正上方的`Button 1`按钮,Thingy:91X上的LED灯就会点亮为指定颜色。 [localvideo]92892b2c6ecf4e84eed9ede19ff86cd1[/localvideo] 连接到串口终端,可以看到相关的调试信息: ### 定位 HellonRFCloud还提供了一个可交互式地图,用于验证Thingy:91X的定位功能。 可以看到,THingy:91X提供了多种定位方式,包括GPS、Wi-Fi和基站定位,实际使用中,我们可以通过选择不同的定位方式来权衡定位精度和功耗的需求。 定位方式 | 定位效果 | 说明 ---|---|--- GPS | 精度高 | 功耗较高,定位时会关闭其他通信模块,适合室外定位。 Wi-Fi | 精度中等 | 功耗较低,适合人口密集区域,通过上报附近Wi-Fi热点信息来进行查询定位。 基站定位 | 精度低 | 功耗最低,连接到的基站越多,精度越高 > 在两天的测试中,基站定位的效果一直不太理想,定位结果几乎不可用。笔者了解到一些物联网卡商是将基站定位作为增值服务提供的,可能笔者使用的物联网卡商并没有提供基站定位服务。 ## 24h环境数据监控电量消耗分析 笔者分别以1小时上报间隔和1分钟上报间隔两种方式测试了Thingy:91X的电量消耗情况,结果表明,Thingy:91X在1小时上报间隔下的电量消耗仅为0.2%/h,而在1分钟上报间隔下的电量消耗为2.29%/h,在1小时上报间隔下,蜂窝通信模块的具有更长的待机时间,模块唤醒次数与数据上报次数相应也更少,所以电量消耗也更少。 以下是24h一分钟上报间隔下的环境数据监控结果,时间轴采用的是GMT+0时区,笔者所在的徐州时区为GMT+8时区,所以时间轴上显示的时间比实际时间少了8小时。 这天徐州气温较高,与测量结果大致相符。可以看到,有一段时间的温度和湿度数据产生了异常,时间在中午及午后这段时间,笔者推测可能是由于Thingy:91X在阳光直射下导致的传感器数据异常。 通过电池温度的监测数据大致验证了笔者的猜测,Thingy:91X在阳光直射下,电池温度也达到了40摄氏度以上,导致了传感器数据的异常。笔者不由得联想到气象站使用的百叶箱,百叶箱的设计极大的降低了阳光直射以及地面辐射对采集结果的影响。 以下是Thingy:91X以1小时上报间隔下的环境数据监控结果,可以看到这天徐州的气温降低了不少,Thingy:91X的传感器数据也相应的降低了。 > 这周徐州的天气变化较大,Thingy:91X的传感器数据也随之变化,笔者认为Thingy:91X的环境传感器效果还是比较不错的。另外一提,经过一场雨,最近徐州最低气温已经降到了个位数,与前几天30多度的天气形成了鲜明的对比。 ## 关于物联网卡 随设备附赠的物联网卡是由Nordic Semiconductor与Onomondo和Wireless Logic合作提供的,笔者在使用过程中发现,两张物联网卡在徐州均无法成功连接到LTE-M网络。 > 虽然两家物联网卡商都明确表明了支持NB-IoT网络,但笔者在使用link shell 指令进行验证时仅Onomondo的物联网卡成功连接到了NB-IoT网络。 Nordic预提供的应用都是通过LTE方式连接nRF平台,笔者最终使用了移动的4G物联网卡来测试示例应用,商家称该卡提供三个月每月300M的流量,可惜我接触不到该卡的管理控制台,所以无法验证流量使用情况。

  • 2025-03-29
  • 发表了主题帖: 【Thingy:91X】测评 篇一:初识Thingy:91X (2)硬件概览

    # 【Thingy:91X】测评 篇一:初识Thingy:91X (2)硬件概览 通过上次的介绍,我们了解到Thingy:91X搭载了Nordic的许多自家的芯片,使用nRF9151 SiP作为核心处理器,还集成了nRF7002 Wi-Fi 6 IC以及支持蓝牙LE、NFC、Zigbee等无线通信协议的Nordic SoC。乃至于板载的电源管理也是使用Nordic的nPM1300和nPM6001提供充电和电量监测功能,下面我们来稍微看看Thingy:91X的硬件设计。 根据Thingy91x的硬件文档提供的系统框图,我们可以一目了然地看到Thingy:91X的硬件架构:三大核心芯片协同工作,分别负责不同的功能;I2C总线连接了几乎所有传感器和扩展接口,SPI总线连接了外部闪存和惯性测量单元;nPM6001和nPM1300提供3.3V、1.8V和VSYS电压。 ## Thingy:91X的核心组件 ### nRF9151 SiP > 负责蜂窝通信(LTE-M、NB-IoT)和GNSS定位,连接SIM卡、GNSS/LTE天线。 nRF9151 SiP是Thingy:91X的核心处理器,专为蜂窝物联网设计。它支持LTE-M和NB-IoT协议,内置GNSS模块,可通过连接SIM卡和GNSS/LTE天线实现蜂窝通信和全球定位。这款芯片采用高度集成设计,封装了处理器、调制解调器和射频前端,支持23 dBm或20 dBm输出功率,并通过全球认证,适用于多种应用场景。在Thingy:91X中,nRF9151 SiP作为设备与外部世界的桥梁,负责数据传输和位置追踪,是硬件架构中的关键一环。 ### nRF7002 >通过SPI总线与nRF9151 SiP或nRF5340 SoC通信。 nRF7002是一款低功耗Wi-Fi 6芯片,支持2.4 GHz和5 GHz双频段,通过SPI总线与nRF9151 SiP或nRF5340 SoC通信。它的主要功能是基于SSID的Wi-Fi定位,通过扫描周围Wi-Fi热点信号增强室内定位能力。当nRF9151 SiP为主控时,nRF7002仅支持扫描模式;而与nRF5340 SoC协作时,它还能与蓝牙低功耗共存,扩展更多功能。 ### nRF5340 SoC >多协议SoC,通过UART与nRF9151通信 nRF5340 SoC是Nordic Semiconductor的一款多协议系统级芯片,采用双核Arm Cortex-M33处理器,支持蓝牙低功耗、蓝牙Mesh、LE Audio和802.15.4协议(如Thread®和Zigbee®)。在Nordic Thingy:91 X™中,nRF5340 SoC主要用于为设备提供USB连接。它预装了连接桥接应用程序,通过USB将nRF9151 SiP的两个UART接口暴露为两个CDC ACM设备,用于日志记录和调试。连接桥接应用程序还实现了一个蓝牙低功耗UART服务,但默认情况下处于禁用状态。nRF5340 SoC的固件可以通过USB更新,以启用蓝牙低功耗或802.15.4操作。 ## Thingy:91X的传感器外设 >包括环境传感器(Environmental sensor)、低功耗加速度计、IMU、磁力计,其中除IMU连接SPI外,其余传感器挂载在I2C总线上。 这些传感器通过共享的SPI和I2C总线与nRF9151 SiP和nRF5340 SoC连接。 传感器 | 型号 | 连接方式 | 中断引脚(nRF9151 SiP/nRF5340 SoC) | 说明 ---|---|---|---|--- 低功耗加速度计 | ADXL367 | I2C | P0.11 / P0.28 | 3轴加速度计,低功耗,负责检测运动和方向。可以生成GPIO中断以唤醒设备。 IMU | BMI270 | SPI | P0.06 / P0.17 | 6轴IMU,负责更高级的运动传感应用。可以生成GPIO中断以指示传感器数据准备就绪。 磁力计 | BMM350 | I2C | P0.07 / P1.13 | 负责检测周围的磁场。可以生成GPIO中断以指示传感器数据准备就绪。 环境传感器 | BME688 | I2C | - | 多合1传感器,集成温度、湿度、气压、气体传感器,用于环境监测。 以下是各传感器相关的电路图: ## Thingy:91X的电源管理 >nPM6001和nPM1300提供3.3V、1.8V和VSYS电压,支持USB充电和电量监测。 nPM1300是主要电源管理IC,负责为所有主要电源域供电并充电。它的输出电压和功能如下表所示: nPM1300 PMIC输出 | 供电域 | 电压范围 ------------------|--------|---------- VSYS | • nRF9151 SiP的VDD供电• nPM6001 PMIC的VIN输入• 充电LED供电 | 3.2–5.0 V VOUT1 | • 板载传感器的VDD和VDDIO供电• 外部闪存VDD• nRF5340 SoC VDD供电• nRF9151 SiP供电 | 1.8 V VOUT2 | • 连接到扩展板连接器或电流测量和调试板的外部电路供电• LED1和LED2供电• GNSS LNA和Wi-Fi/BLE RF前端开关供电 | 3.3 V LSOUT1 | 负载开关1,启用和禁用nPM6001 PMIC | 3.2–5.0 V LSOUT2 | 负载开关2,启用和禁用传感器电源域 | 1.8 V nPM6001为nRF7002供电。nPM6001提供4个Buck转换器和两个LDO,在Thingy:91X中,只有Buck3被使用。Buck3的输出电压为3.6 V。 > 顺带一提,Thingy:91X上有许多负载开关(load switch),比如U5、U13,用于启用和禁用不同的电源域,笔者还是第一次见到这种亮晶晶反光的贴片封装的负载开关,感觉很新奇。 ## Thingy:91X的LED和按键 - Button 1 : 连接到nRF9151 SiP (M1)的P0.26,位于外壳顶部的圆圈下方,可以直接按下。 - Button 2 : 连接到nRF5340 SoC的P0.24,当nRF5340运行Connectivity bridge时,作为nRF9151 SiP的复位按钮;位于PCB的侧面,必须拆下顶部外壳才能按下它。 Thingy:91X有三个用户可编程的RGB LED:LED1、LED2和LED3(充电LED)。 LED | 连接芯片 | 引脚 | 说明 ---|---|---|--- LED1 | nRF9151 SiP (M1) | P0.29 (红色)P0.31 (绿色)P0.30 (蓝色) | 提供用户可见反馈。 LED2 | nRF5340 SoC (U6) | P0.14 (红色)P0.26 (绿色)P0.15 (蓝色) | 提供用户可见反馈。 LED3 | nPM1300 PMIC (U11) | LED0 (红色)LED1 (绿色)LED2 (蓝色) | 指示充电和充电错误。 ------------ > **注:** 以上信息均来自于Nordic Semiconductor的官方文档,具体信息请参考Thingy:91X硬件设计文档。

  • 2025-03-24
  • 发表了主题帖: 【Thingy:91X】测评 篇一:初识Thingy:91X (1)概览

    # 【Thingy:91X】测评 篇一:初识Thingy:91X (1)概览 ## Nordic半导体 收到Thingy:91X的那一刻,笔者不禁对Nordic Semiconductor这家来自挪威的公司产生了更多的好奇。作为一家成立于1983年的无晶圆厂半导体公司,Nordic以其在超低功耗无线通信领域的技术实力闻名,尤其是蓝牙低功耗(BLE)市场,占据了约40%的份额(数据来源:Morningstar)。而Thingy:91X作为Nordic推出的一款物联网原型平台,基于nRF9151 SiP(System-in-Package),集成了LTE-M和NB-IoT蜂窝通信技术,目标是帮助开发者快速构建物联网应用原型,覆盖智能家居、资产跟踪、工业自动化等多个场景。 ## Thingy:91X介绍 Thingy:91 X 是一种用于蜂窝物联网应用的原型开发平台,基于 nRF9151 SiP,64 MHz Arm Cortex-M33 处理器,1 MB 闪存 + 256 KB RAM,支持多种连接方式,包括 LTE-M、NB-IoT、DECT NR+(非蜂窝 5G 技术)和 GNSS。它还集成了 nRF7002 Wi-Fi 6 伴侣 IC,用于基于 SSID 的 Wi-Fi 定位,配备环境传感器、运动传感器等,特别适合资产跟踪和环境监测等应用。 ## Thingy:91X | Thingy:91 | Thingy:52 对比 : 功能一览 为了更好地理解 Thingy:91X 的定位,我将它与 Nordic 的另外两款产品——Thingy:91 和 Thingy:52 进行对比。以下是详细的功能对比表: 特性 | [Thingy:91X](https://www.nordicsemi.com/Products/Development-hardware/Nordic-Thingy-91-X?lang=zh-CN) | [Thingy:91](https://www.nordicsemi.com/Products/Development-hardware/Nordic-Thingy-91?lang=zh-CN) | [Thingy:52](https://www.nordicsemi.com/Products/Development-hardware/Nordic-Thingy-52?lang=zh-CN) --- | --- | --- | --- 核心芯片 | nRF9151 SiP | nRF9160 SiP | nRF52832 SoC 通信技术 | LTE-M, NB-IoT, GNSS, NR+, Wi-Fi | LTE-M, NB-IoT, GPS | Bluetooth 5 传感器 | 环境 + 运动 | 环境 + 运动 | 环境 + 运动 扩展性 | 调试板 + Grove 接口 | | 电池容量 | 1400 mAh (v1.0.0) / 1350 mAh (v1.4.0+) | 1440 mAh | 1440 mAh SIM 卡 | Onomondo, Wireless Logic | iBasis | 无 ### 对比分析 - 通信与定位:Thingy:91X 支持最全面的通信技术(包括 Wi-Fi 和 NR+),定位功能也最为强大。 - 扩展性与电源:Thingy:91X 提供了扩展接口和先进的电源管理,这是 Thingy:91 和 Thingy:52 所欠缺的。 - 应用场景:Thingy:91X 和 Thingy:91 更适合蜂窝物联网和资产跟踪,而 Thingy:52 专注于蓝牙环境数据收集。 ## 开发者资源 Nordic 提供了丰富的开发者资源,帮助开发者快速上手 Thingy:91X: - 官方网站: [https://www.nordicsemi.com/](https://www.nordicsemi.com/),首页提供了产品概览、开发工具、云服务、教程与指南等。 - 开发工具: nRF Connect SDK、nRF Connect for Desktop、nRFutil 等工具,帮助开发者进行开发、调试和测试。 - 云服务: 利用 [nRF Cloud](https://nrfcloud.com/) 进行位置服务、安全数据传输和设备管理。 - 教程与指南: 在 Nordic 官方网站和 devzone 论坛上查找相关文档和社区支持。

  • 2025-03-23
  • 回复了主题帖: 【Thingy:91X】开发环境搭建+点灯

    给大佬点个赞!

  • 2025-03-22
  • 回复了主题帖: 【Thingy:91X】测评开箱

    秦天qintian0303 发表于 2025-3-22 10:23 居然还配了两张卡    登记后各有50M左右的附赠流量,不过我目前似乎没有登记成功,他们好像要以公司的名义。sim套餐也要和他们的人邮件联系才能谈 我买了张国内移动的物联网测试卡,后续试试

  • 2025-03-21
  • 发表了主题帖: 【Thingy:91X】测评开箱

    【Thingy:91X】测评开箱 经过长达8天的等待,终于收到了Thingy:91X的开发板啦。这是一款基于nRF9151的物联网原型平台,支持LTE-M和NB-IoT。 ## 开箱 得捷电子的包装还是很用心的,外包装一如既往得使用牛皮纸湿水胶带封装,箱子内填满了缓冲,保护得很好。 打开包装,里面有Thingy:91X和一张发货单。 Thingy:91X的包装盒非常简洁,印有Nordic的logo和Thingy:91X的型号。 打开包装,里面有Thingy:91X、一个用于电流测量与调试的插件、两张分别来自`onomondo`与`wirelesslogic`的物联网卡和一张产品说明手册。 给调试板来张特写 Thingy:91X的外壳采用快拆设计,方便打开一睹芯片的风采。 插入物联网卡,连接电源,开机,LED灯亮起,Thingy:91X启动成功。 扫描电路板上的二维码,可以查看到Thingy:91X的快速入门的网页应用。 ## 问题 笔者目前在徐州,试用了附赠的两张物联网卡,目前LTE-M还没有联通成功,`onomondo`提供的物联网卡在NB-IoT网络下联通成功,`wirelesslogic`提供的物联网卡目前还没有联通成功,可能是网络覆盖问题,后续会继续尝试。

  • 2025-03-17
  • 回复了主题帖: 《Hello算法》双向链表在LVGL的应用

    学的算法拿来实用,好!

  • 2025-03-11
  • 回复了主题帖: 测评入围名单:Thingy:91X 蜂窝物联网原型开发平台

    感谢论坛提供的测评机会,确认可进行后续测评任务

  • 2025-02-25
  • 回复了主题帖: 新手求嵌入式Linux开发学习路线以及方向

    搜到了个感觉有点意思的仓库 https://github.com/Eplankton/EmbedRoadAndCSInEU

  • 2025-02-24
  • 回复了主题帖: 在火龙果开发板(STEMlab125-14)上实现vivado生成的bit文件,求助

    能固化到flash里嘛,然后从flash启动

  • 回复了主题帖: 免费申请测评——Thingy:91X 蜂窝物联网原型开发平台

    就喜欢这种小巧精致的产品,浓缩的都是精华

  • 2025-01-14
  • 回复了主题帖: 【 AI挑战营(进阶)】【复现】使用inspirefacesdk的单人实时视频流识别

    junan007 发表于 2025-1-14 16:15 代码已经支持多人检测,但检测到多个人脸时绘制OSD后,OSD被快速刷新了,所以看起来不明显(仔细看还是能 ... 大佬厉害:congratulate:

  • 回复了主题帖: 【回顾2024,展望2025】新年抢楼活动来啦!

    2025年想自己搭建或者实现一套博客呀今年不要再鸽了:congratulate:

  • 回复了主题帖: 以拆会友!看看2.3寸“大”电视和32寸的大彩电内里乾坤

    拆得真仔细这个2.3寸大电视也是让我大开眼界了,现在基本见不到了:)

  • 回复了主题帖: 【泰坦触觉 TITAN Core开发套件】资实收集以及开发环境搭建

    这个触觉模块可有意思了:) 期待后续的创意

  • 回复了主题帖: 【瓜分2500元红包】票选2024 DigiKey “感知万物,乐享生活”创意大赛人气作品TOP3!

    我觉的LED立方体是这里面最有趣的项目:)

  • 2025-01-13
  • 回复了主题帖: 【 AI挑战营(进阶)】【复现】使用inspirefacesdk的单人实时视频流识别

    wangerxian 发表于 2025-1-13 15:25 环境光强度背景之类的对这种是不是影响很大? 可以对视频做处理的,举个例子vivo手机相机逆光也清晰 送给算法判断的脸其实是人脸检测模型裁出来的人脸框,只要能检测到脸基本上都能出结果

  • 发表了主题帖: 【 AI挑战营(进阶)】6.模型部署 2 使用windows原生通知实现的人员欢迎功能展示

    【AI挑战营(进阶)】在RV1106部署InsightFace算法的多人实时人脸识别实战6 模型部署2 欢迎特定人员应用展示 RKNN RUNTIME 的 C API 提供了两套调用方式,一种是更直观的通用调用流程(rv1106似乎不支持),另一种是性能更好的零拷贝调用流程,通过Rknn-ToolKit的代码生成工具`rknn.codegen`,我们可以快速生成零拷贝的调用流程示例代码,示例代码包含了测试推理性能、保存推理结果、与预推理结果进行余弦相似度比对的功能。 零拷贝调用流程如下: 以mtcnn第三层onet为例,运行示例代码,可以看到推理性能、推理结果保存、余弦相似度比对的结果。 ```shell rknn_app_query_model_info: model input num: 1, output num: 3 INPUTS: [NORMAL]: index=0, name=input, n_dims=4, dims=[1,48,48,3,], n_elems=6912, size=6912, w_stride=48, size_with_stride=6912, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007813 [NATIVE]: index=0, name=input, n_dims=4, dims=[1,48,48,3,], n_elems=6912, size=6912, w_stride=48, size_with_stride=6912, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=0, scale=0.007813 OUTPUTS: [NORMAL]: index=0, name=output1, n_dims=2, dims=[1,10,], n_elems=10, size=10, w_stride=0, size_with_stride=10, fmt=UNDEFINED, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003805 [NATIVE]: index=0, name=output1, n_dims=2, dims=[1,10,], n_elems=10, size=64, w_stride=0, size_with_stride=64, fmt=UNDEFINED, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003805 [NORMAL]: index=1, name=output2, n_dims=2, dims=[1,4,], n_elems=4, size=4, w_stride=0, size_with_stride=4, fmt=UNDEFINED, type=INT8, qnt_type=AFFINE, zp=-17, scale=0.002566 [NATIVE]: index=1, name=output2, n_dims=2, dims=[1,4,], n_elems=4, size=64, w_stride=0, size_with_stride=64, fmt=UNDEFINED, type=INT8, qnt_type=AFFINE, zp=-17, scale=0.002566 [NORMAL]: index=2, name=output3, n_dims=2, dims=[1,2,], n_elems=2, size=4, w_stride=0, size_with_stride=4, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=0.000000 [NATIVE]: index=2, name=output3, n_dims=2, dims=[1,2,], n_elems=2, size=64, w_stride=0, size_with_stride=64, fmt=UNDEFINED, type=FP16, qnt_type=AFFINE, zp=0, scale=0.000000 LOAD INPUTS input[0] - IMG: ./data/inputs/onet_dataset.txt_0.jpg RUNNING RKNN loop[0] time: 0.972000 ms Average time: 1.049000 ms CHECK OUTPUT check all output to './data/outputs/runtime' with golden data in './data/outputs/golden' output[0] - output1: rknn_layout_convert: src->fmt=UNDEFINED(1,10,), dst->fmt=UNDEFINED(1,10,) layout unchanged, memcpy directly rknn_dtype_convert: convert from INT8 to FP32 cosine similarity: 0.999994 output[1] - output2: rknn_layout_convert: src->fmt=UNDEFINED(1,4,), dst->fmt=UNDEFINED(1,4,) layout unchanged, memcpy directly rknn_dtype_convert: convert from INT8 to FP32 cosine similarity: 0.999892 output[2] - output3: rknn_layout_convert: src->fmt=UNDEFINED(1,2,), dst->fmt=UNDEFINED(1,2,) layout unchanged, memcpy directly rknn_dtype_convert: convert from FP16 to FP32 cosine similarity: 1.000000 ``` 可以看到,推理性能为1.049000 ms,推理结果保存在`./data/outputs/runtime`文件夹中,与预推理结果进行余弦相似度比对的结果为0.999994、0.999892、1.000000。 接下来,我们将`MTCNN`和`ArcFace`模型部署到`Rv1106`开发板上,实现人脸检测和人脸识别功能。 项目需要使用cmake进行编译,所以我们需要在项目根目录下的`CMakeLists.txt`文件,其中包括了交叉编译器的设置、头文件的引入、库文件的引入、源文件的引入、可执行文件的生成等,若要使用IDE配置项目,需要根据确定的交叉编译器和库文件重新进行配置。 > 使用IDE的语法检查和补全功能需要注意工具链的差异,比如rv1106工具链提供的gcc编译器支持的语法和标准可能与IDE提供的gcc编译器支持的语法和标准不同,这时IDE的语法检查和补全功能可能会出现问题。 #### 实现欢迎特定人员 由于我手头没有可以实现音频编解码的dsp模块,所以我无法使用嵌入式惯用的I/O和板间通信等方式去实现欢迎音频播放,所以这里我使用了一个简单的方式,将检测到的特定人员的结果写入到一个文件中,然后使用一个简单的脚本来检测文件中的内容,当检测到特定输出结果时,我的windows电脑会弹出一个欢迎的toast通知。 ```shell #!/bin/bash # 设置结果文件路径 ResultFilePath="/tmp/status_face.txt" # 检查是否传入参数 if [ $# -eq 0 ]; then echo "错误: 未传入任何参数!请传入参数作为文件内容。" exit 1 fi # 将参数内容覆盖写入文件 echo "$*" > $ResultFilePath # 打印成功消息 echo "参数已写入文件:$ResultFilePath" echo "文件内容:" cat $ResultFilePath ``` shell文件保存至`/oem/usr/bin/face_status.sh`,并且赋予执行权限,这样我们就可以通过`System("face_status.sh personname")`来将检测到的特定人员的结果写入到文件中。 ```ps1 # 加载模块 Import-Module BurntToast Import-Module Posh-SSH # 配置 Linux 服务器信息 $LinuxServer = "172.32.0.93" # Linux服务器的IP地址 $Username = "root" # 用户名 $Password = "luckfox" # 密码(如使用密钥,请替换为-KeyFile 参数) # 创建 SSH 会话 $SSHSession = New-SSHSession -ComputerName $LinuxServer -Credential (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Username, (ConvertTo-SecureString $Password -AsPlainText -Force)) $ResultFilePath = "/tmp/status_face.txt" # 检测人脸结果 Function CheckFaceResult{ Param ( [Parameter(Mandatory=$true)] [Object]$Session, [string]$FilePath ) # 检查文件是否存在 $CheckCommand = "if [ -f $FilePath ]; then cat $FilePath; else echo 'NOT_FOUND'; fi" $Result = (Invoke-SSHCommand -SessionId $Session.SessionId -Command $CheckCommand).Output.Trim() # 清除文件内容 $ClearCommand = "echo '' > $FilePath" Invoke-SSHCommand -SessionId $Session.SessionId -Command $ClearCommand # 返回标记状态 return $Result} # 欢迎特定人员 Function WelcomeSpecificPerson( [string]$PersonName ) { # 发送通知 New-BurntToastNotification -Text "欢迎$PersonName" -Sound 'Alarm2' -SnoozeAndDismiss } # 循环监控 while ($true) { # 打印运行信息 Write-Host "检测人脸结果..." # 检测人脸结果 $Result = CheckFaceResult -Session $SSHSession -FilePath $ResultFilePath # 检查是否检测到特定人员 if ($Result -eq "iex123") { WelcomeSpecificPerson -PersonName "IEX123" } Start-Sleep -Seconds 1 } # 断开 SSH 会话 Remove-SSHSession -SessionId $SSHSession.SessionId ``` 在Windows电脑上运行这个脚本,当检测到特定人员时,Windows电脑会弹出一个欢迎的toast通知。 [localvideo]dbc5cf5961525c5e64c11759a1a3fc06[/localvideo]

  • 2025-01-12
  • 回复了主题帖: 【 AI挑战营(进阶)】【复现】使用inspirefacesdk的单人实时视频流识别

    其实这个demo已经可以实现多人的实时识别了,但是似乎sdk调用部分似乎需要一些简单的修改来确保可以传出多个人脸检测的结果到接下来的识别和绘制流程中

最近访客

< 1/3 >

统计信息

已有31人来访过

  • 芯积分:181
  • 好友:--
  • 主题:21
  • 回复:37

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言