速存,詳細羅列香橙派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屏等,預留電池接口。

 

圖片1.png

 

 

小編整理了外設接口使用示例,並提供了樣例源碼,供大家體驗和學習。

  • 通過MIPI接口播放音頻
  • USB接口錄製和播放音頻
  • 通過MIPI接口獲取Camera圖像
  • 通過USB接口獲取Camera圖像
  • 通過HDMI接口顯示圖像
  • 通過MIPI接口顯示圖像

1 通過MIPI接口播放音頻

首先將耳機插入開發板的5mm耳機接口中。

圖片2.png

然後進入音頻測試程序所在的目錄中。

(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音頻文件的內容,主要接口調用流程如下:

圖片3.png

 

詳細接口介紹請移步文末訪問昇騰社區文檔中心。

2 通過USB接口錄製和播放音頻

首先需要準備一個帶錄音功能的USB接口的耳機。

圖片4.png

然後將USB接口的耳機插入開發的USB接口中。

圖片5.png

使用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

圖片6.png

獲取樣例源碼請訪問:

https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Audio/USBAudio

 

3 通過MIPI接口獲取Camera圖像

目前MIPI攝像頭測試只能用樣例程序拍一張圖片,步驟如下所示:

首先需要準備一個樹莓派IMX219攝像頭。

圖片7.png

然後將攝像頭連接到開發板的MIPI攝像頭接口中。測試一個攝像頭拍照時,請使用CAMERA0接口。

圖片8.png

登錄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

 

圖片9.png

獲取樣例源碼請訪問:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Camera/MIPICamera

本樣例調用AscendCL的媒體數據處理接口獲取和處理Camera圖像,最終在程序運行時處理爲YUV或RAW格式的圖像,詳細接口介紹請移步文末訪問昇騰社區文檔中心。

4 通過USB接口獲取Camera圖像

首先將USB攝像頭插入到開發板的USB3.0 HOST接口中。

圖片10.png

圖片11.png

然後通過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

 

圖片12.png

獲取樣例源碼請訪問:https://gitee.com/ascend/EdgeAndRobotics/tree/master/Peripherals/Camera/USBCamera

 

5 通過HDMI接口顯示圖像

首先連接HDMI0接口到HDMI顯示器。

圖片13.png

然後切換到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顯示的圖片如下所示:

圖片14.png

測試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 排線。

圖片15.png

圖片16.png

將15pin MIPI排線按照下圖所示的方式連接到樹莓派5寸屏幕上(注意絕緣面的朝向)。

圖片17.png

將LCD屏幕連接到開發板的MIPI LCD接口上。

圖片18.png

使用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

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章