本文分享自華爲雲社區《香橙派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