写点什么

速存,详细罗列香橙派 AIpro 外设接口样例大全(附源码)

  • 2024-03-07
    广东
  • 本文字数:3944 字

    阅读完需:约 13 分钟

速存,详细罗列香橙派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


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
速存,详细罗列香橙派AIpro外设接口样例大全(附源码)_开发_华为云开发者联盟_InfoQ写作社区