APP下载

基于项目驱动的物联网工程综合实训教学方法探索

2019-11-20王永梅陶浩兵辜丽川

皖西学院学报 2019年5期
关键词:环境参数串口摄像头

焦 俊,张 锋,邵 睿,王永梅,李 斌,陶浩兵,辜丽川

(安徽农业大学 信息与计算机学院,安徽 合肥 230036)

物联网专业是以“应用型人才”培养为目标的新工科专业,是为了适应我国信息产业发展的需要,满足智慧中国战略提出来的,具有强烈的时代感[1-4]。随着我国信息智能技术发展,物联网专业技术人才缺口很大。据统计,未来五年,我国该专业的人才需求缺口约1000万,那么物联网专业人才培养目标的定位、课程体系的建设、实践教学和综合设计创新能力的培养都需要大量的研究和探讨。

物联网工程专业是一个交叉融合的专业,包括网络工程、电子信息工程和计算机应用技术等多学科。因此,在物联网专业课程设置时,加强课程内容的整合显得尤为重要,同时需要加强在新工科教育的思想下的实践教学的研究和探讨,专业建设核心是培养学生综合利用理论知识分析和解决问题的工程实践能力、工程创新能力和综合素质。具备“基础厚、口径宽、能力强、综合性、素质高”等特点[5-6]。重点掌握物联网系统分析与设计等专门知识和技能,重视基础理论的积累,更注重应用型、创新型能力的培养。

教育部在2018年1月颁发的《普通高等学校本科专业类教学质量国家标准》对物联网专业的知识体系和核心课程体系建议中指出,物联网专业要“培养学生将基本原理与技术运用于物联网及其应用系统的规划、设计、开发、部署、运行、维护等工作能力。教学内容包含物联网通信、物联网控制、电路与电子技术、物联网数据处理、标识与感知、物联网工程设计、物联网信息安全与实施等知识领域的基本内容”[7-9]。基于我校“人才培养”的目标,针对物联网工程专业的综合实训教学,本文提出项目驱动方法,运用工程项目的形式进行教学,以实际案例贯彻项目的始终,加强学生实际动手能力,加深学生对理论知识的理解,提高学生分析问题和解决问题的能力。通过让学生参与实际项目,提高了学生学习物联网工程专业课程的兴趣,促进物联网专业的建设和发展。

1 现状及存在的问题

物联网工程专业综合实训对于提高学生掌握物联网工程专业综合知识能力起到非常重要的作用,但是现在实训课程存在以下问题:

1.1 实践的内容多与课时少

“综合实训”课程包含理论内容庞杂,涉及传感器、嵌入式系统和电子信息等课程内容。在课堂只进行课本讲授的情况下,学生较难理解、消化相关理论知识。只有增加实践动手的时间与机会,学生才能够综合地把握相关的理论知识。但在实际教学过程中,由于课时限制,使得实践教学时间很少。

1.2 应用机会少

传统模式的教学中,实验教学难以激发学生的创新能力和提高应用水平。用人单位需要具有宽而深的“T”字型人才,为了适应市场的人才需求和技术发展,应加大综合实训教学。

1.3 技术更新快

物联网企业的需求是日新月异,物联网工程专业是一个理论快速发展、技术快速革新的新型工科专业,若不能追踪技术前沿,闭目塞听,培养的人才就会落后于社会的需求,被市场淘汰。

2 构建综合实训平台

2.1 平台宗旨

综合实训平台的构建是以增强学生对物联网工程专业相关课程知识的理解与掌握为出发点,通过在平台上开展各项实践活动和教师指导,学生可以发挥各自的专业能力。挖掘学生实践创新的潜力,同时激发学生对本专业的学习兴趣,特别是对WSN、传感器技术、RFID、嵌入式系统等课程知识建立起直观概念,奠定深入研究的基础。

2.2 平台搭建

构建基于Linux系统的嵌入式信息采集节点,实现图像和环境参数,比如:二氧化碳、温度、光照、湿度、氨气五个环境参数的采集与传输。选取配有4GB内存和16GB闪存,搭载操作系统,具有GPU和VPU加速处理的NanoPC-T4开发板,其内置有图像处理功能的新一代高端图像处理器。再配备一款普通的数字摄像头,一个采用数字环境光传感器芯片检测光照强度、温湿度芯片SHT10检测环境温度、CO2传感器的四合一集成变送器,以485方式输出数据;还有一款氨气传感器,用来检测周围环境中的氨气浓度,同样采用485方式进行传输。节点功能如图1所示,NanoPC-T4开发板如图2,传感器如图3所示。

图1 节点软件功能图

图2 NanoPC-T4开发板

图3 传感器

2.3 环境搭建

采用可以运行Android系统的嵌入式开发板NanoPC-T4,在该板可以通过SD卡进行程序脱机烧写,步骤如下:

1)用一张8G或以上内存的SD卡,用读卡器插入到电脑上;

2)官网上下载Android8.1 系统固件rk3399-eflasher-OSNAME-YYYYMMDD.img.zip和工具win32diskimager;

3)运行烧写工具win32diskimager,再选中SD卡,以及解压后的系统固体文件,点击write将其烧写到SD卡中;

4)将SD卡插入NanoPC-T4板的卡槽中,启动开发板。

运用QT来进行软件设计,涉及视频处理,需要添加OpenCV库,以简化对视频的操作。OpenCV的安装是在Linux系统下,通过命令行进行操作,在FriendlyDesktop点击菜单 System Tools -> Terminator 打开终端,输入图4中的命令安装 OpenCV 3.4:

2.4 嵌入式系统功能及软件流程

嵌入式系统节点先对与开发板相连的摄像头与传感器进行初始化操作,接着从缓区中读取环境参数:氨气、温度、湿度、光照、CO2进行解析处理,然后,将处理后的环境参数与图像合并成数据帧,再基于UDP协议传输到网络上。软件流程如图5所示。

图4 OpenCV配置命令

图5 软件总体流程图

根据嵌入式节点的功能需求,设计软件的流程:软件先对与开发板相连的摄像头与传感器进行初始化操作,接着从缓区中读取环境参数进行相应的解析处理,处理后的环境参数与图片合并成数据帧,若用户将系统设置为连续传送,则数据帧是一帧连一帧连续传,否则,数据帧按照系统设置的采集周期定时传,数据传输方式是基于UDP协议的网络传输。从流程图5可知,软件系统包含图像和环境参数的采集、处理和传送,因此,包括以下系统功能:

1)引入了OpenCV图形处理库,利用其库函数简化对摄像头的操作:开启摄像头,定时存取图片。

2)环境参数采集:串口初始化,实现传感器与主板之间的正常数据通信。

3)使用的UDP通信是一对一的单播通信。

3 节点软件系统实现

3.1 图像采集

通过调用OpenCV的capture函数打开摄像头,运用VideoCaptrue类操作摄像头读取图像,再运用cvQueryFrame函数抓取帧图像放到RAM板上的缓区中,通过检测缓区中是否有数据来判断能否从摄像头正常读取图片。为了防止图像存取速度过快,设置30ms的图像读取周期。摄像头的主要处理代码:

cv::VideoCapture cap; //实例化一个VideoCapture类

cap.open(1); //采用NanoPC-T4板操作外接摄像头,所以使用capture.open(1)

cv::cvtColor(frame,Frame,CV_BGR2RGB);

其中,cvtColor:将原始图像从BGR颜色空间转换到RGB颜色空间,

frame:表示输入图像即要进行颜色空间变换的原图像,

Frame:表示输出图像即进行颜色空间变换后存储图像,

CV_BGR2RGB:将图片从BGR颜色空间转到RGB颜色空间的转换代码或标识。

3.2 环境参数采集

首先,设置9600串口波特率,8位数据位,无校验位,1个停止位。在Linux系统中串口设备是通过访问/dev/ttyS0、/dev/ttyS1,对串口的读写为以下几个步骤:

3.2.1 打开串口

fd=open(DEV_NAME,O_RDWR|O_NOCTTY);

其中,DEV_NAME:打开串口DEV_NAME

O_RDWR:读、写打开

O_NOCTTY:不将此终端设备作为此进程的控制终端

3.2.2 通过termio结构体对通信参数设置

其中,cfgetispeed和cfgetospeed函数:是分别设置端口输入/输出波特率;结构体中c_cflag:设置数据位;由于串口通信是无校验,所以清除termios结构体中c_cflag的PARENB位;使用软件流控制来标志数据传输的开始和结束

图6 信息显示页面

3.2.3 使用read函数和write函数对串口进行读写操作

部分代码如下:

cfsetispeed(&opt,B9600); //输入波特率9600bps

cfsetospeed(&opt,B9600); //输出波特率9600bps

opt.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG); //行方式输入,不经处理直接发送

opt.c_oflag&=~OPOST; //使用原始模式通信

opt.c_iflag&=~(IXON|IXOFF|IXANY); //软件流控制屏蔽

opt.c_cflag&=~CSTOPB; //1停止位

opt.c_cflag&=~PARENB; //无校验

opt.c_cflag&=~CSIZE; //屏蔽其他设置

opt.c_cflag |=CS8; //数据位8位

ret=write(fd,buf,sizeof(buf)); //写串口

len=read(fd,buff,13); //读串口

3.3 基于UDP传输

UDP通信在QT中的是通过QUdpSocket类提供的UDP套接字API来实现接收和发送UDP数据报。发送数据时,调用writeDatagram(),指定网络地址和端口号,它会将数据发送到指定的网络地址,初始时设定地址为广播地址,发送端口为8080。QUdpSocket中含有一个Bind()函数,设定其对10012端口进行监听,接收端可以向本节点的10012端口发送自己的网络地址,节点在接收到该地址后就会通过Bind()函数对该网络地址进行绑定,进行单播通信。

主要代码:

m_udpSocket->writeDatagram(m_sendBuf,mes.uTransFrameSize+mes.uTransFrameHdrSize,distIP,8080); //UDP传输代码

m_udpSocketjiaozhunIP->bind(QHost Address::Any,10012); //端口绑定代码

QT中的定时是通过QTime类实现的,首先,创建一个定时器类的实例化对象,给其指定定时时间,其参数是毫秒级别的,定时开启是通过start函数实现的,关闭时使用stop函数。

定时代码:

timerN=new QTimer(this); //定时器实例化

timerN->start(1500); //定时1.5秒

4 测试

在所设计的平台上,学生编写节点软件程序,采集二氧化碳、氨气、湿度、温度、光照五个环境参数以及图像数据,以UDP协议发送到服务器上,接收方用Java语言编写一个网页程序如图6所示,可以从服务器上读取这些数据,并将这些环境参数以及图像在页面上进行显示,并存入数据库。实验结果表明,数据收发双方实现了正常通信,该软件能够准确采集环境参数与图像信息,并成功地将这些数据发送到服务器上,达到了预期的目的。

5 总结

针对物联网工程专业综合实训教学过程中存在的问题,以及新工科背景下物联网工程专业人才培养目标,本文从综合实训内容、手段等方面探讨了物联网工程专业综合实训课程教学的具体改革措施。经过物联网工程专业课程教学团队几年来的实践教学,发现教学效果良好,改善了本专业学生的综合素质,为他们在今后的工作与学习奠定了良好的理论与实践动手基础。

猜你喜欢

环境参数串口摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
浅谈AB PLC串口跟RFID传感器的通讯应用
基于云平台的智能家居环境参数协同监控系统设计
列车动力学模型时变环境参数自适应辨识
一种食用菌大棚环境参数测控系统设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
猪场环境参数评价体系研究
串口技术的实物调试和虚拟仿真联合教学模式