刘玉梅,綦俊炜,任立群,侯长波,于 蕾
(哈尔滨工程大学 信息与通信工程学院,黑龙江 哈尔滨 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接口的多种传感器数据采集系统实验案例。该实验案例资源既能用于课堂教学,又可以用于学生课下自主学习,能够极大地激发学生的积极性、想象力和创造力。