劉玉梅,綦俊煒,任立群,侯長波,于 蕾
(哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001)
隨著互聯網時代的到來,基于物聯網(IoT)技術革命的新經濟世界正在形成,智能物聯的泛在連接與泛在服務需求促使嵌入式微系統的設計及應用技術進入全新的發展階段[1-2]。同時以集成電路和基礎軟件為代表的嵌入式系統(SoC)設計技術已被公認為業內的標志性技術。對于高校本科生而言,“嵌入式微系統原理及應用”課程也早已不再是簡單的單片機或微機應用技術教育,而是信息化社會中必備的思想和技能的教育[3-5]。在此背景下,我校電子信息類工程專業對相關課程中最核心的2門課程“微機原理與接口技術”“嵌入式系統設計”整合后設立了“微處理器結構與嵌入式系統設計”課程。在強調專業基礎性與技術前沿性相結合的基礎上,對相關系列課程理論教學和實驗教學內容進行了有機整合,實現了微處理器系統結構與嵌入式系統設計技術的有機融合。
該課程作為工科非計算機類電子信息專業的核心課程,理論知識點多,覆蓋學科面廣,教師講授難度大,學生感覺內容枯燥乏味[6-8]。為了加強學生的學習興趣,提高專業課程的教學效果,使學生盡早接觸行業最新技術,也為學生后續從事科研工作奠定良好基礎,本文設計了基于PYNQ的多種傳感器數據采集系統實驗案例。該實驗教學硬件平臺采用了 Xilinx的ZYNQ-7000系列為核心的PYNQ-Z2開發板,實驗內容結合了相應工程實際案例采用自頂向下的方法進行設計[9-10],強化理論與實踐應用相結合,引導學生獨立思考,培養學生解決復雜工程問題的能力。
本實驗系統是基于 Xilinx的 ZYNQ XC7Z020-1 CLG400C系列的PYNQ-Z2開發板,主要由主控模塊(ZYNQ-7000,雙核 CortexA9)、PL(Arduino 接口)、信息采集與處理模塊(傳感器)、無線Wi-Fi通信網模塊組成。傳感器通過PYNQ-Z2開發板Arduino接口的模擬、數字、I2C、UART總線通信接口接入系統,實現數據采集、管理和傳送功能。系統整體結構設計如圖1所示。系統總體主要完成對具有不同功能和接口的傳感器的控制管理和數據采集,并以無線連接方式通過TCP/IP協議把數據傳送到上位機。根據自頂向下設計方法,把實際工程系統按照功能分解為如下6個模塊。

圖1 系統總體結構圖
(1)數字接口設計與管理模塊。對由Arduino數字接口接入系統的傳感器按鍵、蜂鳴器、LED BAR、溫濕度傳感器等數字接口進行管理,實現選擇、顯示、報警等功能。
(2)數據采集預警管理模塊。對通過數字接口采集后的溫濕度傳感器數據進行管理和顯示,設置溫度、濕度預警值,超過預警值時通過蜂鳴器報警輸出。
(3)模擬接口設計與管理模塊。對由Arduino的模擬接口接入系統的光敏和聲音傳感器等模擬接口進行管理,實現聲、光數據采集,通過LED BAR分段顯示輸出。
(4)I2C接口設計與管理模塊。對由 Arduino的 I2C接口接入系統的傳感器進行控制管理,實現3軸數字加速傳感器的數據采集。
(5)UART Wi-Fi接口設計與管理模塊。對由Arduino的UART接口接入系統的UART Wi-Fi進行控制管理,通過UART Wi-Fi模塊建立無線通信程序和上位機通信,可進行數據傳輸和接收控制上位機的控制命令功能。
(6)上位機通信管理與數據處理模塊。
PYNQ[11]是Xilinx公司的一個開源項目,是Xilinx研究院推出的一套面向教育和科研的開源軟硬件協同設計框架,它將軟件、硬件、電子信息、計算機和自動化等學科融合在一起,在教學與科研領域已獲得廣泛應用。可作為本科4學年多門基礎與專業課程的統一平臺,易于實現貫穿式教學。
PYNQ-Z2開發板是 Xilinx大學計劃支持 PYNQ開源框架的第二代最新開發平臺。它的核心芯片采用Xilinx ZYNQ XC7Z020,其內部異構雙核ARM Cortex-A9 CPU和FPGA,可編程系統PS(ARM)和可編程邏輯PL(FPGA)之間通過片上高速AXI總線進行數據交互,具有豐富的外圍接口,支持針對不同應用場景擴展,支持傳統FPGA與ARM嵌入式開發方式。實驗開發板如圖2所示。

圖2 PYNQ-Z2開發板
為了能將多個傳感器安全、可靠地接入開發板,選用Seeed的Base Shield V2擴展板[12](如圖3所示),通過板卡的Arduino接口與PYNQ-Z2的Arduino接口連接。Base Shield V2擴展板提供了4個模擬接口(A0—A3)、7個數字接口(D2—D8)、1個UART接口和4個I2C接口。

圖3 Base Shield V2擴展板
DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器,包括一個電阻式感濕元件和一個NTC測溫元件,具有超小體積、極低功耗的特點。單線制串行接口使系統集成變得簡易快捷,信號傳輸距離可達20 m以上,電路如圖4所示。具體參數如表1所示。

圖4 DHT11電路圖

表1 DHT11電氣參數
實驗系統的所有硬件均使用Xilinx的Vivado軟件進行設計與實現。通過Arduino數字接口接入系統的傳感器,使用Xilinx AXI GPIO IP核進行統一設計,通過AXI總線接入PS系統。在Vivado中,添加GPIO IP核,在Board選項卡中選擇Custom,在IP Configuration選項卡中配置,GPIO Width為12位,制作外部端口,添加管腳約束,配制完成的AXI GPIO IP核如圖5所示。本實驗系統的溫濕度傳感器、蜂鳴器、按鍵、LED BAR 10段 LED顯示均通過數字接口接入系統。

圖5 配置完成后的AXI GPIO IP核
聲音傳感器(圖6(a))基于LM386放大器和一個駐極體麥克風,可用于檢測周圍是否有聲音(如拍擊聲、噪聲等),并輸出環境的聲強。該模塊可以方便地與其他電路輸入端的邏輯模塊集成,其輸出是模擬的。它的體積小,性能高,容易采樣和測試,是音頻檢測項目和互動項目的最佳選擇。
光敏傳感器(圖6(b))用于測量光的電平,其用LS06-S光敏電阻(一種高靈敏度和可靠的光電二極管)代替傳統的LDR GL5528光敏電阻來檢測環境中的光強度。光敏電阻的電阻值隨光強的增加而減小,可以輸出各種模擬電信號,這些電信號可以被轉換成不同的量程(取決于控制器板上的模數轉換器,具有較高的可靠性和靈敏度,可用于光測量、光檢測和光控開關。

圖6 聲音傳感器和光敏傳感器實物圖
Xilinx所有7系列[13-14]內部集成了XADC模塊,XADC提供了模數轉換器(ADC)的全部功能,分辨率為12位,最高采樣速率為1MSPS,且采樣保持電路支持多種不同的電壓輸入形式,如單極性、雙極性與差分形式,多路復用器最多支持 17個采樣通路。XADC在ZYNQ系統的組成如圖7所示。XADC內部結構如圖8所示。
聲音和光敏傳感器通過Arduino模擬接口接入系統,通過 XADC IP核進行設計,在 Vivado中添加XADC IP核,在BASIC設置中,Startup Channel Select選擇Channel Sequence,在Channel Sequence中配置,外部接入模擬通道,PYNQ-Z2有6個模擬通道,分別是1、9、6、15、5、13。配置完成后如圖9所示。

圖7 ZYNQ內部XADC組成圖

圖8 XADC內部結構圖

圖9 配置完成后的AXI XADC IP核
ADXL345是ADI公司推出的基于iMEMS技術一款小型、超薄、超低功耗的3軸、數字輸出加速度傳感器,具有最高13位分辨率,可測量+/–2g,+/–4g,+/–8g,+/–16g測量范圍,g為重力加速度。ADXL345非常適合移動設備應用,可以測量重力在傾斜儀上的靜態加速度,也可以測量由運動或震動引起的動態加速度。其最高分辨率高達3.9 mg/LSB,能測量小于1.0°的傾斜角度變化。ADXL345支持標準的I2C或SPI數字接口,自帶32級FIFO存儲,并且內部有多種運動狀態檢測和靈活的中斷方式。ADXL345 3軸加速傳感器的邏輯功能如圖10所示。

圖10 ADXL345 3軸加速傳感器邏輯功能
ADXL345 3軸加速傳感器,通過Arduino的I2C接口接入系統,使用Xilinx的AXI IIC IP核進行設計,I2C總線接口如圖11所示。
在Vivado中添加AXI IIC IP核,配置SCL時鐘高頻率為100 kHZ,地址模式為7bit等參數,配置完成后如圖12所示。

圖11 I2C總線接口圖

圖12 配置完成后的AXI IIC IP核
Grove-UART Wi-Fi如圖13所示,是串行收發器模塊,集成了ESP8285物聯網SoC芯片。每個ESP8285模塊都預編程了AT命令集,并集成了TCP/IP協議棧,該UART Wi-Fi串行收發器模塊,可以通過發送簡單的文本命令來控制微控制器與Wi-Fi網絡進行交互。它集成了 WEP,WPA/WPA2,TKIP,AES和 WAPI引擎,可以作為動態主機配置協議(DHCP)的接入點,加入現有的 Wi-Fi網絡,并具有可配置的 MAC和IP地接口接入系統。UART Wi-Fi通過Arduino的UART接口接入系統。本文使用Xilinx的AXI Uartlite IP核進行設計,UART總線接口如圖14所示。

圖13 UART Wi-Fi實物圖
UART接口通過AXI Uartlite IP核調用實現,在Vivado中添加 AXI Uartlite IP核,配置波特率為115 200,無校驗位,8位數據位。配置完成后如圖15所示。

圖14 UART總線接口圖

圖15 配置完成后的AXI Uartlite IP核圖
添加IIC和UART的中斷。即IIC的iic2intc_irpt引腳和Uartlite的interrupt引腳,接入xlconcat IP輸入端,連接到ZYNQ的irqf2p[1:0]管腳,通過PL引腳把中斷傳送到PS系統。最終建立完成的系統硬件結構如圖 16所示。添加 Arduino管腳約束,選擇Create HDL Wrapper生成頂級的VHDL模型,然后生成比特流,最后導出硬件文件到軟件開發工具包(SDK),包括比特流。然后在SDK下進行軟件開發與設計。

圖16 系統硬件結構圖
在SDK下由硬件文件生成板級支持包BSP。主控程序的流程如圖17所示,控制整個系統的管理和運行。

圖17 主控程序流程圖
蜂鳴器連接到Arduino的D3口,按鍵接到D4,DTH11溫濕度傳感器接到D5口,LED BAR連接到D6口。編程實現了對Arduino數字接口的讀、寫及模式設置等通用函數功能,移植DTH11溫濕度傳感器和LED BAR的函數庫。通過GPIO編程實現對這些傳感器的管理和調用。具體程序流程如圖18所示。

圖18 數字接口程序流程圖
光敏、聲音傳感器檢測環境信息,采集相應的模擬數據。PYNQ有6個模擬輸入通道,光傳感器連接到Arduino的A0口,對應XADC的Channel 1,聲音傳感器連接到Arduino的A1口,對應XADC的Channel 9。通過對XADC編程實現對環境的光、聲音數據進行采集、轉換、打包處理,并把數據按要求在 LED BAR進行分級顯示。程序控制流程如圖19所示。

圖19 模擬接口程序流程圖
ADXL345 3軸加速傳感器通過Arduino的I2C接口接入系統,移植ADXL345的函數庫,通過AXI IIC IP核,和中斷管理程序實現對ADXL345 3軸加速傳感器進行設置和數據采集功能的設計。程序流程如圖20所示。

圖20 I2C程序流程圖
UART Wi-Fi集成了ESP8266物聯網SoC芯片,具有預編程AT命令集,通過串口AT命令建立與上位機的TCP/IP通信程序,把傳感器獲取的數據按照預定義格式生成傳輸數據包,發送給上位機。UART Wi-Fi通過Arduino的UART接口連接到系統。程序控制流程如圖21所示。

圖21 UART通信程序流程圖
最終系統的實物如圖22所示。

圖22 系統實物圖
課程建設是保障人才培養質量的根本,而專業課程的實驗教學是培養學生解決復雜工程問題能力的重要抓手。為了加強嵌入式系統設計實踐教學的效果,增強學生工程實踐能力,培養學生創新意識和創新能力,本文采用自頂向下的設計方法研發了基于PYNQ的 Arduino接口的多種傳感器數據采集系統實驗案例。該實驗案例資源既能用于課堂教學,又可以用于學生課下自主學習,能夠極大地激發學生的積極性、想象力和創造力。