資料介紹
描述
Ultra96v2 是用于無線應(yīng)用和物聯(lián)網(wǎng)項(xiàng)目的最佳 FPGA 開發(fā)板之一。當(dāng)我一直在研究新的項(xiàng)目想法時(shí),某種相機(jī)應(yīng)用程序不斷浮現(xiàn)在腦海中。所以我決定從一個(gè)帶有實(shí)時(shí)攝像頭的簡單網(wǎng)頁應(yīng)用程序開始。
適用于 Ultra96V2 的 Vivado/PetaLinux 2019.2 BSP
我在過去的一個(gè)項(xiàng)目中介紹了如何為 Avnet 板創(chuàng)建 BSP,該項(xiàng)目是在 MiniZed 上創(chuàng)建自定義 Web 服務(wù)器,因此您可以按照該項(xiàng)目操作并運(yùn)行其中一個(gè) make Ultra96v2 腳本,或者我還介紹了如何構(gòu)建新的 PetaLinux Ultra96v2 oob BSP的項(xiàng)目也是如此。我試圖讓這個(gè)項(xiàng)目成為我的第一個(gè)版本 2020.1 項(xiàng)目,但 PetaLinux 2020.1 根本不適合我,所以我必須再保存一天。該項(xiàng)目將是 Vivado、Vitis、XRT 和 PetaLinux 的所有版本 2019.2。
使用剛剛為 Ultra96v2 創(chuàng)建的 BSP 創(chuàng)建一個(gè)新的 PetaLinux 項(xiàng)目。
petalinux-create -t project -s //ultra96v2_oob_2019_2.bsp
將目錄更改為項(xiàng)目并構(gòu)建它。
cd ./ultra96v2_oob_2019_2
petalinux-build
如果由于 arduino-toolchain 包導(dǎo)致構(gòu)建失敗,請?jiān)?/font>此處查看我在過去項(xiàng)目中的修復(fù)。
為 Ultra96v2 打包引導(dǎo)二進(jìn)制映像 (BOOT.BIN)。
petalinux-package --boot --fsbl ./images/linux/zynqmp_fsbl.elf --fpga ./images/linux/system.bit --pmufw ./images/linux/pmufw.elf --u-boot
您也可以使用 PetaLinux 項(xiàng)目的“預(yù)構(gòu)建”目錄中的引導(dǎo)二進(jìn)制文件、內(nèi)核和根文件系統(tǒng)。但是,如果您想將任何內(nèi)核驅(qū)動(dòng)程序或根文件系統(tǒng)包添加到嵌入式 Linux 映像,則需要此方法。
準(zhǔn)備 SD 卡
使用至少 4GB 大小的 SD 卡,將 500MB 分區(qū),在其前面有 4MB 可用空間作為 FAT32。將 SD 卡上的剩余空間格式化為 EXT4。我個(gè)人更喜歡在 Ubuntu 中使用 Gparted GUI 來執(zhí)行此操作,但也可以從命令行輕松完成。
如果您以前沒有,請為 SD 卡的兩個(gè)分區(qū)創(chuàng)建掛載點(diǎn)文件夾。一個(gè)用于引導(dǎo)分區(qū) (FAT32),另一個(gè)用于根文件系統(tǒng)分區(qū) (EXT4):
sudo mkdir /media/BOOT/
sudo mkdir /media/rootfs/
將 SD 卡分區(qū)掛載到相應(yīng)的掛載點(diǎn)文件夾:
sudo mount /dev/sdc1 /media/BOOT/
sudo mount /dev/sdc2 /media/rootfs/
將打包的根文件系統(tǒng)解壓到 SD 卡的 EXT4 分區(qū),然后立即運(yùn)行“同步”命令,以確保所有數(shù)據(jù)都已寫入 SD 卡。
sudo tar -xf //ultra96v2_oob_2019_2/images/linux/rootfs.tar.gz -C /media/rootfs/
sync
將內(nèi)核映像、設(shè)備樹和啟動(dòng)映像復(fù)制到 FAT32 分區(qū),然后立即再次運(yùn)行“同步”命令。
sudo cp //ultra96v2_oob_2019_2/images/linux/BOOT.BIN /media/BOOT/
sudo cp //ultra96v2_oob_2019_2/images/linux/image.ub /media/BOOT/
sudo cp //ultra96v2_oob_2019_2/images/linux/system.dtb /media/BOOT/
sync
最后,在從 PC 上拔下 SD 卡之前先卸載它的分區(qū):
sudo umount /media/BOOT/
sudo umount /media/rootfs/
啟動(dòng) Ultra96v2
將 SD 卡安裝到 Ultra96v2 中并確認(rèn)啟動(dòng)開關(guān) (SW3) 設(shè)置為 SD 啟動(dòng)(開關(guān) 1 = OFF,開關(guān) 2 = ON),然后按下電源按鈕 (SW4) 為開發(fā)板加電。
對于 Ultra96v2 的 UART 串??行控制臺,我使用 USB 到 JTAG/UART Pod 適配器板連接到 UART 和 JTAG 接頭(J1 和 J3)。
要將 Ultra96v2 連接到無線網(wǎng)絡(luò),2019.2 BSP 要求您使用 Wi-Fi 設(shè)置網(wǎng)頁選擇網(wǎng)絡(luò)并輸入憑據(jù)以登錄(按照入門指南第 24 頁第 13 節(jié)中的說明進(jìn)行操作) Ultra96V2如果你不熟悉這個(gè)過程)。在收到添加網(wǎng)絡(luò)的成功消息后重新啟動(dòng) Ultra96v2,不要使用“檢查連接”按鈕。這只是我在 2019.2 BSP 中發(fā)現(xiàn)的一個(gè)小故障。
root@ultra96v2-oob-2019-2:~# reboot
我注意到在 Ultra96 的 2019.2 版本中,板子在啟動(dòng)后實(shí)際連接到網(wǎng)絡(luò)有一點(diǎn)延遲,當(dāng)它最初連接時(shí),網(wǎng)絡(luò)配置也顯示本地分配的 IPV4 地址。這是我對 Ultra96 的唯一抱怨,我發(fā)現(xiàn)自己一直在努力建立穩(wěn)定的 Wi-Fi 連接。根據(jù)我的發(fā)現(xiàn),如果該網(wǎng)絡(luò)可用,該板將連接到 Wi-Fi 設(shè)置網(wǎng)頁所連接的最后一個(gè)網(wǎng)絡(luò)。
重新啟動(dòng) Ultra96v2 后,等待幾分鐘,然后通過 ping 您的 PC 或其他網(wǎng)站來測試網(wǎng)絡(luò)連接。我通常會嘗試 ping google.com以驗(yàn)證外部互聯(lián)網(wǎng)連接。
root@ultra96v2-oob-2019-2:~# ping google.com
插入網(wǎng)絡(luò)攝像頭和初始化驅(qū)動(dòng)程序
將網(wǎng)絡(luò)攝像頭插入 USB A 型端口(J8 和 J9)之一,讓 Ultra96v2 嵌入式 Linux 映像檢測到它。發(fā)生這種情況時(shí),您將看到來自 UART 的一些控制臺輸出。打印完成后,我們使用 usb-devices 命令顯示系統(tǒng)上的所有 USB 設(shè)備。
root@ultra96v2-oob-2019-2:~# usb-devices
將顯示所有 USB 總線的列表,包括實(shí)際的 USB 控制器和連接到它們的設(shè)備。通過查看列出的產(chǎn)品、供應(yīng)商和驅(qū)動(dòng)程序,您可以了解系統(tǒng)是否已成功檢測到網(wǎng)絡(luò)攝像頭。
現(xiàn)在系統(tǒng)已成功啟動(dòng)并檢測到網(wǎng)絡(luò)攝像頭,我們可以繼續(xù)編寫 Python 腳本來使用它,并編寫自定義網(wǎng)頁來顯示來自它的圖像。
網(wǎng)絡(luò)應(yīng)用程序
OpenCV-Python 庫 (cv2) 僅在 Python3 中可用,并且 Ultra96v2 網(wǎng)頁中的自定義項(xiàng)目模板使用 Python 2.7 運(yùn)行腳本,因此我使用自定義內(nèi)容頁面上的“創(chuàng)建項(xiàng)目”選項(xiàng)創(chuàng)建了腳本并測試了來自 Ultra96v2 的 UART 串??行控制臺的基本網(wǎng)絡(luò)攝像頭 Python 腳本,以便能夠使用 Python3 執(zhí)行它。
root@ultra96v2-oob-2019-2:/usr/share/ultra96-startup-pages/webapp/templates/CustomContent/custom# python3 ./webcamcapture.py
Web 應(yīng)用程序?yàn)榭刂?Web 攝像頭而執(zhí)行的此腳本只是為對網(wǎng)頁發(fā)出的每個(gè) POST 或 GET 請求捕獲一張圖像。等待十分之一秒后,read() 函數(shù)觸發(fā)攝像頭捕獲圖像并將其讀入。這將返回一個(gè)元組(返回值,圖像),返回值指示捕獲是否成功以及捕獲的image 是返回的第二個(gè)參數(shù)。
使用 cv2.imwrite() 函數(shù)將圖像寫入/usr/share/ultra96-startup-pages/webapp/static/images/目錄中的指定文件名single_frame.jpg 。
然后當(dāng)處理完成后,釋放捕獲并使用 cv2.destoryAllWindows() 關(guān)閉為捕獲的圖像創(chuàng)建的窗口。
當(dāng)腳本運(yùn)行時(shí),我的網(wǎng)絡(luò)攝像頭上的綠色狀態(tài)燈亮起,表明 Ultra96v2 已成功與其通信以捕獲圖像。
對于 Web 應(yīng)用程序前端,我只是讓它顯示從網(wǎng)絡(luò)攝像頭捕獲的圖像,頁面每 10 秒刷新一次以顯示更新的圖像。
導(dǎo)航到 Ultra96 Web 服務(wù)器的 Custom Content 選項(xiàng)卡,然后選擇“Edit Webapp”選項(xiàng)。要為自定義網(wǎng)頁創(chuàng)建前端,請單擊“創(chuàng)建前端”按鈕,HTML 文本編輯器將出現(xiàn)。
前端代碼:
{% extends "Default/default.html" %}
{% block content %}
<div class="page-header">
<h1 class="display-4"><b>{% block title %}USB Web Cam Feed{% endblock %}b>h1>
div>
<meta http-equiv="refresh" content="10">
<img src="{{ url_for('static', filename='images/single_frame.jpg') }}"/>
{% endblock %}
添加前端 HTML 后,單擊“保存文件”按鈕并為文件指定名稱。保存文件后,單擊“返回”按鈕返回上一屏幕。
要為自定義網(wǎng)頁創(chuàng)建后端,單擊“創(chuàng)建后端”按鈕,文本編輯器將出現(xiàn)。后端是用 Python 編寫的,并且已經(jīng)填寫了基本代碼。唯一需要添加的是調(diào)用運(yùn)行項(xiàng)目腳本以在每個(gè)請求上捕獲新圖像。
后端代碼:
@app.route("/webcam.html", methods=["GET", "POST"])
def webcam():
if request.method == "POST":
proc = subprocess.Popen('python3 /usr/share/ultra96-startup-pages/webapp/templates/CustomContent/custom/webcamcapture.py',stderr=subprocess.STDOUT,shell=True)
err = proc.communicate()
return render_template("CustomContent/custom_front_end/webcam.html")
else:
proc = subprocess.Popen('python3 /usr/share/ultra96-startup-pages/webapp/templates/CustomContent/custom/webcamcapture.py',stderr=subprocess.STDOUT,shell=True)
err = proc.communicate()
return render_template("CustomContent/custom_front_end/webcam.html")
再次單擊“保存文件”按鈕并為后端文件指定與為前端文件指定的名稱相同的名稱。保存文件后,單擊“返回”按鈕返回上一屏幕。
選中“Include”框,然后單擊“Reload Webapp”將新網(wǎng)頁添加到 Ultra96v2 上的 wevserver。
在重新加載網(wǎng)頁以包含新的自定義網(wǎng)頁后,我發(fā)現(xiàn) 2019.2 BSP 也包含與主 webserver.py 腳本在新網(wǎng)頁的 app.route 定義之前調(diào)用 main 函數(shù)相同的故障。因此,每次重新加載網(wǎng)絡(luò)應(yīng)用程序后,我仍然必須使用文本編輯器注釋掉 webserver.py 中對 main 的第一次調(diào)用。
root@ultra96v2-oob-2019-2:~# vi /usr/share/ultra96-startup-pages/webapp/webserver.py
如您所見,第 919 和 920 行對 main 的第一次調(diào)用需要注釋掉。
保存并退出文本編輯器后,手動(dòng)重啟 Ultra96v2:
root@ultra96v2-oob-2019-2:~# shutdown -h now
然后使用電源按鈕 (SW4) 重新打開電路板電源。
導(dǎo)航回 Ultra96 Web 服務(wù)器的自定義內(nèi)容頁面,您會在新添加的網(wǎng)頁旁邊看到一個(gè)“查看”按鈕。
單擊查看按鈕后,您將看到提要出現(xiàn),并且頁面每 10 秒自動(dòng)刷新一次,并帶有更新的圖像。
- Ultra96硬件用戶指南
- Ultra96 CSI-2視頻輸出到Raspberry Pi攝像頭輸入
- 使用PYNQ的Ultra96面部識別鎖栓
- 使用Tensil、TF-Lite和PYNQ在Ultra96板上運(yùn)行YOLO v4 Tiny
- 在Ultra96 V2平臺上用Python實(shí)現(xiàn)人臉檢測和人臉跟蹤
- 用于Ultra96的夾層板96AnalogXperience
- Ultra96 FPGA上的Live NYC Subway Monitor應(yīng)用程序
- 關(guān)于Ultra96的Xilinx DDS編譯器IP教程
- 與Ultra96聯(lián)網(wǎng)端口轉(zhuǎn)發(fā)
- Ultra96 V2上基于標(biāo)記的增強(qiáng)現(xiàn)實(shí)
- 使用Ultra96 PYNQ測定織物GSM
- Ultra96皮膚癌AI構(gòu)建
- 2018.2 Ultra96:從 Matchbox 桌面關(guān)斷 PetaLinux BSP,無法關(guān)斷電路板
- 一起玩Ultra96之GPIO操作
- 如何實(shí)現(xiàn)家庭安防系統(tǒng)中的多攝像頭和視頻采集與網(wǎng)絡(luò)傳送 21次下載
- 攝像頭凸透鏡成像原理 攝像的原理是小孔成像嗎 1267次閱讀
- 用usb攝像頭替換手機(jī)前置攝像頭可以嗎 1514次閱讀
- AHD攝像頭與CVBS的區(qū)別 1.1w次閱讀
- 技術(shù)前沿:攝像頭模組 4431次閱讀
- 攝像頭應(yīng)用領(lǐng)域及應(yīng)用產(chǎn)品型號 1358次閱讀
- 如何通過OV5640攝像頭顯示在VGA顯示屏上 3000次閱讀
- 如何正確的安裝監(jiān)控攝像頭 1.2w次閱讀
- fireflyAIO-3288C主板攝像頭模組簡介 2062次閱讀
- 為什么智能攝像頭這么受歡迎 4635次閱讀
- FireflyRK3288的攝像頭模組介紹 2256次閱讀
- 關(guān)于Firefly攝像頭模組的簡介 3147次閱讀
- 基于Arm技術(shù)的16nm MPSoC開發(fā)套件Ultra96 6099次閱讀
- 攝像頭芯片型號有哪些_攝像頭芯片型號匯總 5.9w次閱讀
- Openwrt路由器掛載攝像頭詳細(xì)教程 1.3w次閱讀
- 雙攝像頭系列原理 6435次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多