香橙派OrangePi AIpro,助力国产AIoT迈向新的台阶!

前言:很高兴受邀CSDN与OrangePi官方组织的测评活动,本次测评是一块基于AI边缘计算的香橙派开发板OrangePi AIpro。这是 香橙派 联合 华为昇腾 合作精心打造的新一代边缘AI计算产品,于2023年12月初发布,提供 8/20TOPS澎湃算力[1],能覆盖生态开发板者的主流应用场景,让用户实践各种创新场景,并为其提供配套的软硬件。价格方面也是颇具性价比,8TOPS、8GB内存的创客价/预售价仅为799元。

本篇博文就围绕OrangePi AIpro 开发板进行较为全面的测评,包括基础开箱及环境配置,同时会从 AI IOT 两个部分进行较为深入的测评体验。  

开箱测评

开箱展示

拿到产品,第一时间进行了拆箱。可以看到包装非常的专业、很严实,产品包括OrangePi AIpro开发板、65w pd充电器、充电线。瓷漆的设计高端大气,各细节考虑全面,很有质感。看了下充电器参数,兼容了5V/3A、9V/3A、12V/3A、15V/3A、20V/3.25A这几个常见的电压和电流输出,同时看到散热风扇和烧录系统镜像的32G内存卡都已经安装好了,一般AI CPU运行模型都需要散热,将芯片维持在一个正常的温度范围内是很有必要的。所以拿到板子不需要额外过多的安装步骤,开箱就能用起来,这一点还是非常友好的。

芯片方面,拆开风扇可以看到丝印上印制CN,表示中国制造的国产华为芯片,不过具体哪个厂商制作的目前还不清楚。可以说拿到这块香橙派开发板还是感觉很自豪的,即使国外限制芯片也不必担心,我们也拥有自己优秀的AI芯片,所以非常值得我们学习和使用OrangePi AIpro。

视图展示

下面是官方的开发板正反面视图,更好地展示香橙派细节。

正面试图:

背面试图:

注意到MIPI摄像头和显示器的接口,三年前玩过树莓派3B,也有摄像头的接头,没记错的话接口应该是一样的。板载的蓝牙WIFI天线,这里还专门标出来2.4G频段。背面可以看到可以接M.2的固态硬盘,定位孔和传统的开发板设计是非常相似的,上手也是非常的友好 。

⚠香橙派提醒:使用板子时天线不能贴到板子上,同时天线上的导电布也不能挨着板子,否则可能会烧坏板子哦~

接线登录

OrangePi AIpro的接线非常简单,因为板子上有个Micro-USB的调试串口,旁边正好有一根Micro-USB接口的接线。可是插入电脑没识别到串口,这根线好久没用可能坏掉了,现在更常见的是Type-C接口的,手头也没有其他Micro-USB的线了,不过没关系,还可以使用CH340串口调试工具。按照官方手册,UART0 的 TX 和 RX 引脚接到了40 Pin 扩展接口中的8号和10号引脚。

注意:查看手册,这里拨码开关BOOT1和BOOT2都拨到右边,否则无法正常启动内核。

刚上电风扇飕飕一顿转,吓我一跳,哈哈!看来是板子运行起来了,过一会风扇速度降下来了,风扇转速应该是软件控制的,后面再改一下吧。

打开MobaXterm软件,使用串口登录,这里波特率设置115200,RESET后打印启动信息和登录命令行,输入如下账号和密码即可完成串口登录:

除了串口,还有更为方便的WIFI方式连接到开发板,因为板子是带WIFI模块的。这里电脑和开发板连接同一个路由器,确保IP地址在同一个网段下,这样我们就能用SSH连接开发板,然后就可以把串口线拿掉,方便开发调试。

#板子搜索连接周围WIFI热点的方法:
nmcli dev wifi  #WIFI扫描
sudo nmcli dev wifi connect wifi_name password wifi_passwd
wifi_name:    需要换成想连接的WIFI 热点的名字。
wifi_passwd:  需要换成想连接的WIFI 热点的密码。

电脑和开发板连接同一个路由器并处在同一个网段后,就可以通过终端输入ssh HwHiAiUser@xxx.xxx.xx.xx远程登录开发板了,密码对应为Mind@123,当然也可以直接使用mobaxterm进行连接,这也是官方推荐的方式,

外设引脚

OrangePi AIpro接口很丰富,引脚也引出来了,一共40 Pin,非常的细致,如下图所示:

这里手册也介绍了40 Pin 接口使用的一些注意事项:

  • 40 pin 接口中总共有26 个GPIO 口,但8 号和10 号引脚默认是用于调试串口功能的,并且这两个引脚和Micro USB 调试串口是连接在一起的,所以这两个引脚请不要设置为GPIO 等功能。

  • 所有的GPIO 口的电压都是3.3v。

  • 40 pin 接口中27 号和28 号引脚只有I2C 的功能,没有GPIO 等其他复用功能,另外这两个引脚的电压默认都为1.8v。

有了以上这些基本的环境搭建和板子初步了解后,就可以初步体验一下部分外设功能了。

点亮一盏LED灯

作为一名嵌入式工程师,拿到一块新的板子,怎么能不点亮一盏灯呢?正好手里有一个HW-269灯珠模块,使用杜邦线飞线连接,这里选取了几个靠近的GPIO进行接线。

具体接线:香橙派两个提供5V电源分别接到灯珠引脚2和引脚3,GPIO2_15连接灯珠引脚3,输出低电平即可点亮灯。

手册里介绍 Linux 镜像中预装了 gpio_operate 工具用于设置 GPIO 管脚的输入与输出方向,也可将每个GPIO 管脚独立的设为 0 或 1。

gpio_operate set_direction 2 15 1  //设置GPIO2_15为输出方向
gpio_operate set_value 2 15 0      //设置GPIO2_15输出低电平,点亮
gpio_operate set_value 2 15 0      //设置GPIO2_15输出高电平,熄灭

接好线,命令行分别键入设置GPIO方向以及输出电平,可以发现灯亮了,燃起来了!好像又回到了最初学习单片机的场景,一瞬间有点恍惚......

感受:

这里不得不说香橙派 AIpro的 40 Pin引脚确实丰富,提供了丰富的外设资源,包含:GPIO、I2C、UART、SPI 和 PWM等功能。Linux 镜像中给我们提前预装了 gpio_operate 工具用于设置 GPIO 管脚的输入与输出方向,也可将每个 GPIO 管脚独立的设为 0 或 1。很方便。后面自己又试用了 USART、SPI、IIC,手册上都有对应的例程,稍加改动就能应用到实际的项目中去。

OrangePi AIpro AI功能体验测评

登录juypter lab

官方手册给出的几个AI例程均在 Linux 系统桌面使用,这里如果你没有HDMI屏幕的话,可以在电脑上远程连接的,需要确保开发板和电脑在同一个频段,将板子IP跟在notebooks启动脚本后面即可。具体操作步骤如下:

首先进入这个目录:

 cd ~/samples/notebooks

开启notebook服务器:

./start_notebook.sh 192.168.2.109  #IP是OrangePi AIpro开发板的地址

将上图中红框内容粘贴到Chrome浏览器,如下所示,即可运行官方预制的AI例程了,可以看到有9个AI样例,下面就挑选几个感受一下OrangePi AIpro的算力。

目标检测用例测评

该样例中 infer_mode 的值可赋值为image、video 和camera,分别对应对图片、视频、USB 摄像头中的内容进行目标检测,默认值为video。这里使用的是video,实际运行启动时间大概20秒,检测效果不错,没有出现误标情况。

这里在运行此模型时我SSH另起一个连接,以此检测案例运行过程中芯片的数据信息,键入如下指令:

npu-smi info watch

在运行目标检测YOLOv5s例程时,通过监测发现芯片温度稳定在57°左右,正常待机时在52°左右,在风扇加持下温度没有明显上升;AI Core占用率不超过30%,内存占用率稳定在37%,可见YOLOv5轻量的网络在OrangePi AIpro运行还是挺流畅,适合在边缘设备部署,进行实时目标检测。

文字识别用例测评

OCR一般指Scene Text Recognition (场景文字识别),主要面向自然场景。 OCR两阶段方法一般包含两个模型,检测模型负责找出图像或视频中的文字位置,识别模型负责将图像信息转换为文本信息。此样例中,我们使用的检测模型为CTPN,识别模型则是SVTR。

运行结果:两排字均能识别出来,包括标点符号,识别速度还是很快的。

目标分类用例测评

运行结果:案例运行大概3秒后,我们可以看到模型对图片进的推理结果,一共展示了五种类别的置信度,最高的置信度类别是Standard Poodle,达到94%,效率很高。

OrangePi AIpro IoT亚马逊云使用测评

IoT作为AIoT的重要组成部分,正好作者最近工作和这方面强相关,对IoT也比较熟悉,在这里顺带测试一下OrangePi AIpro 在IoT方面的使用效果,这里选取的是AWS亚马逊云。

连接AWS IoT Core

AWS IoT Core 支持与 IoT 设备、无线网关、服务和应用程序的连接。设备可以连接到服务和其他设备,这样它们就可以向 AWS IoT 服务和其他设备发送数据和从中接收数据。应用程序和其他服务还可以连接 AWS IoT Core 以控制和管理物联网设备,并处理来自物联网解决方案的各种数据。

SDK 和工具

  • 这些AWS 软件开发工具包为 API 和其他服务的 AWS IoT Core API 提供特定语言的支持。 AWS AWS 移动 SDK 为应用程序开发者提供针对特定平台的 AWS IoT Core API 支持,以及移动设备上的其他 AWS 服务。

  • AWS CLI提供对 AWS IoT 服务端点提供命令行访问权限,并提供在 PowerShell 脚本环境中管理 AWS 服务和资源的工具。

身份验证

  • 服务终端节点使用 IAM 用户和 AWS 证书对用户进行身份验证。

连接前需要先创建一个产品,详细细节参考文档:创建AWS IoT资源然后保存Download certificates and keys,下载根 CA 文件,入下图所示:

将证书私钥等文件保存到香橙派的root/certs路径下保持,使用SSL加密socket通信导入到AWS SDK即可,入下所示。

static int32_t setCredentials( SSL_CTX * pSslContext,const OpensslCredentials_t * pOpensslCredentials )
{int32_t sslStatus = 0;sslStatus = setRootCa( pSslContext, pOpensslCredentials->pRootCaPath );sslStatus = setClientCertificate( pSslContext, pOpensslCredentials->pClientCertPath );sslStatus = setPrivateKey( pSslContext, pOpensslCredentials->pPrivateKeyPath );return sslStatus;
}

使用官方AWS IoT 嵌入式 C 示例的设备 SDK运行程序,由于是C语言,需要在香橙派安装CMake,编译后运行查看日志发现已经先后成功地建立TLS和MQTT连接。

基于MQTT数据交互

Json格式的请求响应文档下格式如下所示:

{"state": {"desired": {"attribute1": integer2,"attribute2": "string2",..."attributeN": boolean2},"reported": {"attribute1": integer1,"attribute2": "string1",..."attributeN": boolean1}},"clientToken": "token","version": version
}
  • state — 更新仅影响指定字段。通常,您将使用 desiredreported 属性,但不能在同一请求中同时使用这两个属性。

    • desired — 请求在设备中更新的状态属性和值。

    • reported — 设备报告的状态属性和值。

  • clientToken — 如果使用,您可以通过客户端令牌匹配请求和相应的响应。

  • version 如果使用,仅当指定的版本与 Device Shadow 服务拥有的最新版本相符时,该服务才会处理更新。

我们通过desiredreported 这种AWS的格式,实现数据上报和下发控制。

OTA初探

作为一款AI功能开发板,当我们的模型经过不断迭代优化后,需要将新的程序更新到板子,这里就需要通过远程空中下载的方式给设备升级(OTA)。使用AWS JOB机制便可实现功能,同时考虑到Linux升级文件一般会比较大,为了加快升级速度这里引用差分逻辑。

下面是AWS 官方文档给出的整个JOB 流转过程,这里简单移植使用了一下。

我把OrangePi AIpro的初始版本号设置成0.0.0,云平台上传了两个基础包和一个差分包,这里升级检测的时候会下载这两个差分包和全包,然后还原成原始文件。在板载外置天线加持下,下载速度还是比较快的,这里我只是把包下载好了,然后直接上报升级成功。后面有时间会研究一下OrangePi AIpro bootloader相关内容,把完整的OTA链路打通。

总结建议

本文通过开箱简单做了测评,从OrangePi AIpro的试图展示到外设资源,同时也点亮了一盏LED灯初步感受这块开发板的使用体验,然后从AI和IOT两个方面进行较为细致的测试。由于是第一次接触香橙派,以前一直使用的都是树莓派,经过对比发现OrangePi AIpro功能还是非常的强大,生态比想象的要完善,虽然网上相关资源比树莓派要少,但通过阅读官方手册就能上手,还是比较全面的。同时开发板的外观精致,包装专业,配件也齐全。可以发现OrangePi AIpro无论是在人工智能领域、工业自动化、还是智能家居等,都是一个不错的选择。

不过在使用过程中,个人感觉有以下两个点可以优化下:

  • 1、相比较之前使用过的树莓派,Micro-USB的串口调试很方便,不过建议换成Type-C接口更好,毕竟更普遍;

  • 2、两个BOOT拨码开关都在板子背面,如果开发板放入金属壳子,打开顶盖是看不到拨码开关的,需取下板子才能更改拨码开关位置,放置正面会更方便一点,或许官方觉得一般人不会频繁更改启动配置吧。

未来展望

昇腾的不断发展在AIoT领域发挥着越来越重要的作用,但相比较树莓派成熟的生态体系来讲还有一段距离,毕竟进场晚,不过没关系,有这么多优秀的开发工程师不断使用、改进、分享合作,共同推动昇腾AI官方社区生态发展,所谓前人种树,后人乘凉。同时我们对国产品牌也要有信心,期待香橙派与华为昇腾团不断更新迭代,促进国产AIoT为各行业的智能化转型赋能。

以上是OrangePi AIpro到手一周的使用感受,后期有时间会继续探索输出更多有关OrangePi AIpro教程及技术博文,欢迎大家交流探讨。

[1]:TOPS,全称为Tera Operations Per Second,是处理器运算能力单位。TOPS是Tera Operations Per Second的缩写,1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。昇腾论坛有博主专门对此做了对比测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/340726.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows hash简介

一、hash简介 1、Windows系统使用两种方法对用户的密码进行哈希处理。它们分别是LAN Manager(LM)哈希和 NT LAN Manager(NTLM)哈希 2、所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的 字符串数据进行一次数学加密函数运算…

mysql中InnoDB存储引擎的Buffer Pool

大家好。众所周知,对于使用InnoDB作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是存储在磁盘上的。在处理客户端的请求时,当需要访问某个页…

Wireshark Lua插件入门

摘要 开发中经常通过抓包分析协议,对于常见的协议如 DNS wireshark 支持自动解析,便于人类的理解,对于一些私有协议,wireshark 提供了插件的方式自定义解析逻辑。 1 动手 废话少说,直接上手。 第一步当然是装上wiresh…

守护景区安全:探讨景区视频监控方案的搭建及必要性

据新闻报道,5月25日,安徽黄山景区内发生雷击,闪电击中飞来石景点的护栏,多人被碎石砸中受伤。景区工作人员表示,飞来石附近本就属于雷区,当天曾发过两次雷电预警。 随着旅游业的繁荣发展,越来越…

内存管理【C++】

内存分布 C中的内存区域主要有以下5种 栈(堆栈):存放非静态局部变量/函数参数/函数返回值等等,栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆:用于程序运行时动态内存分配&#xff…

Element ui 快速入门(基础知识点)

element ui官网 前言: 在当今时代,我们在编写计算机程序时,不仅仅是写几个增删改查的简单功能,为了满足广大用户对页面美观的需求,为了让程序员们写一些功能更简便,提高团队协作效率,所以eleme…

Audio PsyChat:web端语音心理咨询系统

这是一个在服务器本地运行的web语音心理咨询系统,咨询系统内核使用PsyChat,我们为其制作了Web前端,并拼接了ASR和TTS组件,使局域网内用户可以通过单纯的语音进行交互。其中ASR和TTS组件使用PaddleSpeech API。 使用 使用单卡3090…

C语言王国——字符函数和字符串函数(2)

目录 5 strtok函数 5.1 函数的表达式 5.2 函数模拟 6 strstr函数 6.1 函数表达式 7 strerror函数 7.1 函数表达式 7.2 例子 7.3 perror 8 strncpy、strncat、strncmp函数 四 结论 5 strtok函数 strtok函数我的理解是他是一个分割字符串的函数 5.1 函数的表达式 cha…

国联易安:网络反不正当竞争,要防患于未然

据市场监管总局官网消息,为预防和制止网络不正当竞争,维护公平竞争的市场秩序,鼓励创新,保护经营者和消费者的合法权益,促进数字经济规范健康持续发展,市场监管总局近日发布《网络反不正当竞争暂行规定》&a…

图解Mysql索引原理

概述 是什么 索引像是一本书的目录列表,能根据目录快速的找到具体的书本内容,也就是加快了数据库的查询速度索引本质是一个数据结构索引是在存储引擎层,而不是服务器层实现的,所以,并没有统一的索引标准,…

【分享】两种方法禁止修改Word文档

对于比较重要的Word文件,不想被随意编辑修改,可以试试以下两个方法,不清楚的小伙伴,一起来看看吧! 方法1:设置“只读方式” 我们可以给Word文档设置以“只读方式”打开,这样就算编辑修改了文档…

[数据集][目标检测]焊接处缺陷检测数据集VOC+YOLO格式3400张8类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3400 标注数量(xml文件个数):3400 标注数量(txt文件个数):3400 标注…

用AI工具设计赛博朋克壁纸

用AI工具设计赛博朋克壁纸 今天我要向大家分享的项目十分直观且具有高流量,我坚信这会对大家有所帮助。我相信大家在壁纸创作者的作品中一定看过科幻和赛博朋克的元素,这些深具特色的未来科技主题的壁纸影响了现代设计的方向。 设计师们巧妙地运用了几…

鸿蒙HarmonyOS实战—如何使用Video组件播放视频

1.视频播放 鸿蒙系统中,关于视频播放,可以使用上层视频组件Video。 参数如下 src 支持file:///data/storage路径前缀的字符串,用于读取应用沙箱路径内的资源。需要保证目录包路径下的文件有可读权限。 说明:视频支持的格式是&am…

在Three.js中实现模型点击高亮:整合EffectComposer与OutlinePass的终极指南

效果【后期实现鼠标点击选中轮廓后给出一个弹窗显示相应的模型信息】 标签指示线参考我的上一篇文章 引言 Three.js不仅让WebGL的3D图形编程变得简单易懂,还通过其强大的扩展库支持丰富的后期处理效果,为3D场景增添无限魅力。本篇文章将引导您深入了…

实习面试题(答案自敲)、

1、为什么要重写equals方法,为什么重写了equals方法后,就必须重写hashcode方法,为什么要有hashcode方法,你能介绍一下hashcode方法吗? equals方法默认是比较内存地址;为了实现内容比较,我们需要…

使用from…import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间(namespace),并且在该命名…

词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码

实验原理: 词法分析是编译程序进行编译时第一个要进行的任务,主要是对源程序进行编译预处理之后,对整个源程序进行分解,分解成一个个单词,这些单词有且只有五类,分别时标识符、关键字(保留字&a…

CentOS7配置国内清华源并安装docker-ce以及配置docker加速

说明 由于国内访问国外的网站包括docker网站,由于种种的原因经常打不开,或无法访问,所以替换成国内的软件源和国内镜像就是非常必要的了,这里整理了我安装配置的基本的步骤。 国内的软件源有很多,这里选择清华源作为…

终于来啦!Stable Diffusion 3将在6月12日正式开源

6月3日晚,著名开源大模型平台Stability AI的联合首席执行官Christian Laforte,在AMD的产品发布会上宣布,文生图模型 Stable Diffusion 3将于6月12日在Hugging Face开源权重。 本次开源的是Stable Diffusion 3的Medium模型,有20亿…