本文分享自華為雲社群《香橙派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
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ./main plughw:0
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ./main plughw:0 Start record! over #輸入 over 結束錄製音訊 (base) root@orangepiaipro:/opt/opi_test/USBAudio#
(base) root@orangepiaipro:/opt/opi_test/USBAudio# ls *.pcm audio.pcm
(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
(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
(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
(base) root@orangepiaipro:/opt/opi_test/hdmi0_pic# ./test.sh
測試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
(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
點選關注,第一時間瞭解華為雲新鮮技術~