速存,详细罗列香橙派AIpro外设接口样例大全(附源码)
本文分享自华为云社区《香橙派AIpro外设接口样例大全(附源码)》,作者:昇腾CANN。
Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,内存提供了 8GB 和 16GB两种版本。可以实现图像、视频等多种数据分析与推理计算,可广泛用于教育、机器人、无人机等场景。
其丰富的接口更是赋予了Orange Pi AIpro强大的可拓展性。包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB、两个MIPI摄像头、一个MIPI屏等,预留电池接口。

小编整理了外设接口使用示例,并提供了样例源码,供大家体验和学习。
- 通过MIPI接口播放音频
- USB接口录制和播放音频
- 通过MIPI接口获取Camera图像
- 通过USB接口获取Camera图像
- 通过HDMI接口显示图像
- 通过MIPI接口显示图像
1 通过MIPI接口播放音频
首先将耳机插入开发板的5mm耳机接口中。

然后进入音频测试程序所在的目录中。
(base) HwHiAiUser@orangepiaipro:~$ sudo -i
(base) root@orangepiaipro:~# cd /opt/opi_test/audio
(base) root@orangepiaipro:/opt/opi_test/audio# ls
capture.sh play.sh qzgy_48k_16_mono_30s.pcm sample_audio sample_audio_2ch
使用以下命令就可以播放测试音频到耳机了。
(base) root@orangepiaipro:/opt/opi_test/audio# ./sample_audio_2ch play 2 qzgy_48k_16_mono_30s.pcm
获取样例源码请访问:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Audio/MIPIAudio
本样例调用AscendCL的媒体数据处理接口实现音频的播放,最终在程序运行时播放*.pcm音频文件的内容,主要接口调用流程如下:

详细接口介绍请移步文末访问昇腾社区文档中心。
2 通过USB接口录制和播放音频
首先需要准备一个带录音功能的USB接口的耳机。

然后将USB接口的耳机插入开发的USB接口中。

使用arecord -l命令查看下录音设备的编号,如下面的输出所示,其中card0中的0表示录音设备编号为0。
(base) HwHiAiUser@orangepiaipro:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Audio [AB13X USB Audio], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
进入USB音频测试代码路径中。
(base) HwHiAiUser@orangepiaipro:~$ sudo -i
(base) root@orangepiaipro:~# cd /opt/opi_test/USBAudio
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ls
Readme.md main main.c
使用下面的命令可以使用USB音频设备录制一段音频。其中0表示录音设备编号,需根据实际情况填写。
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ./main plughw:0
录制结束后,在终端界面输入over即可退出录制。
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ./main plughw:0
Start record!
over #输入 over 结束录制音频
(base) root@orangepiaipro:/opt/opi_test/USBAudio#
录音成功后,在USBAudio样例目录下会生成音频文件pcm。
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ls *.pcm
audio.pcm
确保使用aplay -l命令能看到USB的播音设备。
(base) root@orangepiaipro:/opt/opi_test/USBAudio# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Audio [AB13X USB Audio], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
在Linux系统桌面中,使用下面命令可以将录制的音频播放到USB耳机。
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ffplay -ar 44100 -ac 2 -f s16le audio.pcm

获取样例源码请访问:
https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Audio/USBAudio
3 通过MIPI接口获取Camera图像
目前MIPI摄像头测试只能用样例程序拍一张图片,步骤如下所示:
首先需要准备一个树莓派IMX219摄像头。

然后将摄像头连接到开发板的MIPI摄像头接口中。测试一个摄像头拍照时,请使用CAMERA0接口。

登录Linux系统桌面,打开一个终端,再进入测试程序所在路径。
(base) HwHiAiUser@orangepiaipro:~$ sudo -i
(base) root@orangepiaipro:~# cd /opt/opi_test/camera
(base) root@orangepiaipro:/opt/opi_test/camera# ls
sample_hdmi test_one.sh test_two.sh update_dt.sh vi_l1_sample
运行下面的命令就会使用CAMERA0拍摄一张照片。
(base) root@orangepiaipro:/opt/opi_test/camera# ./vi_l1_sample 1 1 1
拍摄好的图片如下所示:
(base) root@orangepiaipro:/opt/opi_test/camera# ls *.yuv
vi_pipe0_chn0_w1920_h1080.yuv
在Linux桌面中使用ffplay命令可以查看下拍摄的图片。
(base) root@orangepiaipro:/opt/opi_test/camera# ffplay -pix_fmt yuv420p -video_size
1920*1080 ./vi_pipe0_chn0_w1920_h1080.yuv

获取样例源码请访问:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Camera/MIPICamera
本样例调用AscendCL的媒体数据处理接口获取和处理Camera图像,最终在程序运行时处理为YUV或RAW格式的图像,详细接口介绍请移步文末访问昇腾社区文档中心。
4 通过USB接口获取Camera图像
首先将USB摄像头插入到开发板的USB3.0 HOST接口中。


然后通过v4l2-ctl命令就可以看到USB摄像头的设备节点信息为/dev/video0。
(base) HwHiAiUser@orangepiaipro:~$ sudo apt-get update
(base) HwHiAiUser@orangepiaipro:~$ sudo apt-get install -y v4l-utils
(base) HwHiAiUser@orangepiaipro:~$ sudo v4l2-ctl --list-devices
Q8 HD Webcam: Q8 HD Webcam (usb-xhci-hcd.3.auto-1):
/dev/video0
/dev/video1 #这个是用来采集metadata的,先忽略
/dev/media0
注意:v4l2中的l是小写字母l,不是数字1。另外video的序号不一定都是video0,请以实际看到的为准。
下面使用内置的USBCamera样例代码测试 USB 摄像头。
首先进入USBCamera样例代码的路径。
(base) HwHiAiUser@orangepiaipro:~$ sudo -i
(base) root@orangepiaipro:~# cd /opt/opi_test/USBCamera
(base) root@orangepiaipro:/opt/opi_test/USBCamera# ls
main main.cpp readme.md
运行下面的命令就可以使用USB摄像头拍一张照片:
(base) root@orangepiaipro:/opt/opi_test/USBCamera# ./main /dev/video0
运行成功后,在USBCamera 样例目录下会生成一个yuyv422格式、1280*720分辨率的out.yuv文件。
(base) root@orangepiaipro:/opt/opi_test/USBCamera# ls
main main.cpp out.yuv readme.md
在Linux桌面中使用下面的命令可以查看out.yuv文件的内容。
(base) root@orangepiaipro:/opt/opi_test/USBCamera# ffplay -pix_fmt yuyv422 -video_size 1280*720 out.yuv

获取样例源码请访问:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Camera/USBCamera
5 通过HDMI接口显示图像
首先连接HDMI0接口到HDMI显示器。

然后切换到root用户,并进入HDMI0测试程序所在路径。
(base) HwHiAiUser@orangepiaipro:~$ sudo -i
(base) root@orangepiaipro:~# cd /opt/opi_test/hdmi0_pic
(base) root@orangepiaipro:/opt/opi_test/hdmi0_pic# ls
sample_hdmi test.sh update_dt.sh ut_1920x1080_nv12.yuv
运行update_dt.sh脚本更新dt.img(关闭drm的配置,打开vdp的配置)
update_dt.sh脚本运行完后会自动重启Linux系统。
(base) root@orangepiaipro:/opt/opi_test/hdmi0_pic# ./update_dt.sh
重启后再次进入HDMI0测试程序所在路径,然后运行sh脚本就会播放一张图片到HDMI 显示器(默认显示 10 秒),并且同时会播放一段音频到HDMI显示器,如果HDMI显示器支持播放音频的话,还能听到声音。
(base) root@orangepiaipro:/opt/opi_test/hdmi0_pic# ./test.sh
HDMI显示的图片如下所示:

测试HDMI1输出一张图片的方法和HDMI0一样,只是测试程序的路径为:
/opt/opi_test/hdmi1_pic
获取样例源码请访问:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Display/HDMIDisplay,本样例调用AscendCL的媒体数据处理接口使能HDMI接口,从而在显示器上显示yuv420 NV12格式、1920*1080分辨率的图片。详细接口介绍请移步文末访问昇腾社区文档中心。
6 通过MIPI接口显示图像
准备树莓派5寸MIPI LCD显示屏、15pin MIPI 排线。


将15pin MIPI排线按照下图所示的方式连接到树莓派5寸屏幕上(注意绝缘面的朝向)。

将LCD屏幕连接到开发板的MIPI LCD接口上。

使用MIPI LCD屏幕显示Linux系统桌面的功能还在开发中。目前MIPI LCD屏幕只能用样例程序显示一张图片。
进入测试程序所在的路径。
(base) HwHiAiUser@orangepiaipro:~$ sudo -i
(base) root@orangepiaipro:~# cd /opt/opi_test/lcd
(base) root@orangepiaipro:/opt/opi_test/lcd# ls
raspberry_demo test.sh update_dt.sh ut_800x480_nv12.yu
运行update_dt.sh脚本更新dt.img(关闭drm的配置,打开vdp的配置)。
update_dt.sh脚本运行完后会自动重启Linux系统。
(base) root@orangepiaipro:/opt/opi_test/lcd# ./update_dt.sh
重启后再次进入LCD测试程序所在的路径,然后运行sh脚本就会播放一张图片到LCD屏幕。
(base) root@orangepiaipro:/opt/opi_test/lcd# ./test.sh
获取样例源码请访问:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Display/MIPIDisplay,本样例调用AscendCL的媒体数据处理接口接收MIPI接口数据,并在显示器上显示yuv420SP格式、800*400分辨率的图片。详细接口介绍请移步文末访问昇腾社区文档中心。
7 更多学习资源
[1]昇腾文档中心:https://www.hiascend.com/zh/document
[2]香橙派AIpro学习资源一站式导航:https://www.hiascend.com/forum/thread-0285140173361311056-1-1.html
速存,详细罗列香橙派AIpro外设接口样例大全(附源码)的更多相关文章
- 超详细的php用户注册页面填写信息完整实例(附源码)
这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要 ...
- 微信小程序之蓝牙开发(详细读数据、写数据、附源码)
本文将详细介绍微信小程序的蓝牙开发流程(附源码)准备:微信只支持低功耗蓝牙也就是蓝牙4.0,普通的蓝牙模块是用不了的,一定要注意. 蓝牙可以连TTL接到电脑上,再用XCOM调试 一开始定义的变量 va ...
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...
- Spring中@Transactional事务回滚(含实例详细讲解,附源码)
一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除 ...
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...
- android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码
Android精选源码 android模仿支付宝app"记账本"模块源码 android一个超轻量级剪贴板历史记录管理软件源码 android模仿QQ拖动红点消失动画效果源码 展示 ...
- Duboo整合SpringBoot超级详细例子(附源码)
dubbo3.0整合SpringBoot例子 dubbo新版本(3.0以上)在相对于 dubbo 旧版本(2.5.2.6.2.7),有很多的不相同的地方. 官方文档也说了新版本的特性: https:/ ...
- python爬虫爬取网易云音乐(超详细教程,附源码)
一. 前言 先说结论,目前无法下载无损音乐,也无法下载vip音乐. 此代码模拟web网页js加密的过程,向api接口发送参数并获取数据,仅供参考学习,如果需要下载网易云音乐,不如直接在客户端下载,客户 ...
- 如何用Python对股票数据进行LSTM神经网络和XGboost机器学习预测分析(附源码和详细步骤),学会的小伙伴们说不定就成为炒股专家一夜暴富了
前言 最近调研了一下我做的项目受欢迎程度,大数据分析方向竟然排第一,尤其是这两年受疫情影响,大家都非常担心自家公司裁员或倒闭,都想着有没有其他副业搞搞或者炒炒股.投资点理财产品,未雨绸缪,所以不少小伙 ...
随机推荐
- TienChin-课程管理-课程更新接口
更改包名 将之前的 entity 更改为 domain: 将之前的 validator 包当中的校验分组接口移动到 common 模块当中,因为其它模块也需要使用就放到公共当中进行存储. 更改完毕之后 ...
- PaddleHub--飞桨预训练模型应用工具{风格迁移模型、词法分析情感分析、Fine-tune API微调}【一】
相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨:E ...
- C/C++ MinHook 库的使用技巧
在上面的各种Hook挂钩方式中,我们都是在手写封装代码,但这样的方式并不高效,真正的生产环境中我们必须使用现成的Hook库,常用的Hook库有免费开源的MinHook和商业的Detours Hook, ...
- Gin 获取请求参数
1.获取URL?后的参数(不区分请求方式) // 获取请求url ? 后的参数(url:8080/add?name=kelvin) func GetUrlParam(ctx *gin.Context) ...
- CSS背景设置与Emmet语法
CSS背景设置 通过CSS背景属性,可以给页面元素添加背景样式,页面元素指任意标签. 背景属性可以设置背景颜色,背景图片,背景平铺,背景图片位置,背景图像固定等. 背景颜色 一般默认值是:tran ...
- 1cm+1kg纤薄身材 带来14小时超长续航!华硕灵耀13 2023评测
一.前言:华硕推出1cm+1kg超轻薄笔记本 还有OLED好屏加持 随着处理器能效的不断进步,轻薄本已经不存在性能羸弱的问题了,也给了各大厂商极大的发挥空间,不过市面上的轻薄本厚度普遍在15~20mm ...
- 洛谷P1102 过河卒
P1102 过河卒 链接在此 过河卒 此题如果直接忽略掉马的影响的话,可以看出很简单的递推规律 即 \[dp[i][j]=dp[i-1][j]+dp[i][]j-1] \] 也就是说,由于卒只能走直线 ...
- Hadoop集群常用组件的命令
1. Hadoop (1).HDFS:启动HDFS:start-dfs.sh关闭HDFS:stop-dfs.sh格式化NameNode:hdfs namenode -format查看文件系统状态:hd ...
- Python-open函数-读写文件
一.open 函数语法 open() 函数的作用是打开一个文件,并返回一个 file对象(即文件对象). open 是一个动作,可以理解为我们打开文档的点击动作. file 对象是一个实物,可以理解为 ...
- 如何更改 C# Record 构造函数的行为
如何更改 C# Record 构造函数的行为 Record 是 C# 9 中的一个新功能.Record是从Structs借用的特殊类, 因为它们具有 基于值的相等性,您可以将它们视为两类类型之间的混合 ...