徐朝农,刘志卓
(中国石油大学 信息科学与工程学院,北京 102200)
党中央和国务院高度重视物联网技术的发展,明确指出要加快推动物联网技术研发和应用示范。大部分地区也将物联网作为发展重点,出台了相应的发展规划和行动计划,许多行业部门将物联网应用作为推动本行业发展的重点工作加以支持。
随着物联网技术不断推向应用,全国各类物联网设计竞赛也不断涌现,这些竞赛大大促发大学生们学习物联网技术的热情。然而,物联网技术是典型的软硬件结合技术,对研发平台有一定的稳定性要求,硬件只要稍有变化,都会带来系统的各种故障[1]。而这些故障的解决需要很强的计算机硬件和软件技能以及现场应用经验,学生一般难以自行解决。事实上,调试的结果往往是因为设备移动等造成的连线故障、连线错接等,这些本来很不必要的麻烦会牵扯巨大的精力投入,让带队教师疲于应付。为克服上述困难,方便学生学习和教师指导,设计一个面向物联网应用的通用竞赛平台已成为教学与实践改革的重点。本文介绍了这样一个平台的设计与应用。
出现上述问题,主要是因为参与竞赛的硬件设备种类较多,设备的机械、电气接口不统一造成的。可以说,学生要想凭实力获得比较好的竞赛成绩,相对固定的场所是必要的,具有统一接口的研发平台也是极其重要的,这样,学生可以在这个研发平台上暂时摆脱由于硬件不稳定而带来的困扰,集中精力逐步熟悉软硬协同的操作,并逐步过渡到研发过程。有了自主设计能力,学生的学习兴趣和能力一定大增,参加竞赛获奖的概率就自然提高了[2]。
本文力图建立具有统一接口的物联网竞赛软硬件平台,让学生熟悉物联网开发的流程和过程,并逐步增强设计能力,为学生参加全国竞赛打下先期条件。当然,在全国竞赛上获奖,不仅是对学生巨大的激励,也表明了学校在学生培养方面工作具有实效性,是学校对外最好的宣传名片。建立该平台的必要性自然是不言而喻的。
市面上已拥有多款物联网平台,其中Particle 物联网平台是一款企业级物联网平台,它的优势在于可与其开发套件进行网状连接,适用于原型设计。Adafruit IoT 平台用于可穿戴设备或手持设备,具有灵活、便携和轻便的特点。Arduino IoT 平台优势在于拥有软件工具和第三方库的支持,用户可以方便地从社区获取资源和支持。本文所介绍的物联网竞赛平台面向学生竞赛使用需求来设计,可供指导老师和学生远程开发、在线调试和仿真使用,使得老师和学生可以进行实时远程交互,极大地方便老师指导和学生调试;此外,底层硬件设计完全开放给学生,学生可根据参赛设计需求自行添加模块和进行二次开发。下面将分两部分介绍该平台的设计,包括硬件设备研制及软件平台研发。
在进行硬件平台设计时,需要坚持一些设计原则,包括高可用性、高扩展性和高安全性。并进行统一规划,以保证平台使用的便利性和运行的稳定性。
本文所设计的物联网竞赛平台,作用是将物联网设备以有线、无线的方式集成起来,构建成一个统一的物联网平台。
如图1 展示了一种通用物联网竞赛平台。市面上的传感器和智能设备等可以用海量来形容,为了使得这些设备可以尽可能地融入该平台,将容易布线的传感器设备直接与该平台相连;同时,该平台提供了无线基站模块,以使得距离较远的、不易布线的传感器和控制器等设备可以通过无线方式与该平台建立连接。
图1 平台实物图Fig.1 Physical map of the platform
由于本地传感器安装位置与物联网平台距离较近,具有容易布线的特点,因此针对这些本地传感器,物联网平台提供有线接口来将它们接入。本地传感器具有多种接口类型,物联网平台包括与之匹配的多种接口类型,基本上涵盖市面上现有的通信协议。按照本地传感器对通信速率需求的不同,物联网平台提供高速与低速两种通信接口。如图2 所示,高速通信接口包括PCIe、USB、SATA、HDMI 和RJ-45 接口等;低速接口包括UART、SPI、JTAG 和I2C接口等。
图2 与本地传感器接口Fig.2 Interface with the local sensor
一些传感器布置较为分散,与物联网平台距离远,无法通过有线方式进行通信,称这些传感器为远程传感器。对于这些远程传感器,物联网竞赛平台为其提供无线通信接口。
物联网竞赛平台远程通信接口支持ZigBee、Lo-Ra、WIFI、蓝牙和433M 无线通信等协议,以满足传感器的远程通信需求。物联网竞赛平台有自动识别与保存功能。具体的,在远程传感器设备首次与物联网竞赛平台连接后,平台将自动保存传感器类型并编号,同时提供编辑功能,使得学生可以自主地对传感器进行分组和打标签等操作。平台会定时对已连接传感器发送握手报文,以验证各传感器在线状态,如发现传感器长时间无回应则判断为断连,平台会及时更新传感器状态并通知用户。在学生实验中时常需要发送报文给远程传感器,物联网竞赛平台提供单发与群发功能,在执行完上述操作后一定时间内,平台会自动发送查询报文以验证传感器执行结果,方便了学生对传感器的管理与控制。
针对大学生竞赛而言,稳定性是学生取得好成绩的重要前提,这就对物联网竞赛平台的可靠性提出很高的要求。
在物联网竞赛平台使用时,由于学生误操作等原因,可能会发生数据掉电丢失现象,这就需要在设计中考虑数据保护功能。在设计中,物联网竞赛平台加入了保险丝、防反接模块、限流措施等,保证了用电安全,增加了操作的容错性。提供直流不间断电源与掉电自动检测功能,在发生掉电现象时平台会立即检测到这一现象并通知用户,同时切换到直流不间断电源供电。虽然直流不间断电源电量有限,但为学生保存实验过程中的数据提供了宝贵的时间。提供数据自动保存功能,物联网平台会定时对暂存数据进行保存;特别的,在异常情况发生后,系统会立即执行一次数据保存操作。在系统从异常状态中恢复后,学生可自行恢复数据。
在对物联网竞赛的需求进行全面调研后,平台将多种传感器,如温湿度传感器、气体传感器、热电偶传感器、超声波传感器、压力传感器等联合起来,建立统一的“采集-报送-储存”机制。同样与传感器一样,智能设备在近几年也逐渐兴起,成为物联网的重要组成部分。物联网平台将智能电表、智能门锁和智能水表等设备统一起来,设计一致的接口。为了保证数据的及时性和有效性,为这些设备设定统一的数据帧格式,并针对每个设备的特点设定上报时间、上报间隔等,这些设定是可调的。平台收集到这些数据后就进行计算、处理和打包,以向上提供统一的数据报送接口。
建立一个物联网竞赛硬件平台,在该设备上搭载一个软件平台,使得该平台的功能可以被参赛选手直接使用。
由于Linux 具有系统内核小、开放源代码、效率高和内核网络结构完整等特点[3],因此平台选用Linux 作为操作系统。不仅方便指导教师的教学,同时学生可以从网络上方便地获取文档和技术支持。相对于其它系统,Linux 系统运行稳定,有助于学生日常训练和竞赛使用,满足平台设计之初对稳定性的要求。
搭建交叉开发环境,使得在PC 机开发的程序可以在嵌入式系统上运行。如图3 为软件平台开发流程,分为BootLoader 移植、Linux 内核的配置与设备驱动添加、设备树文件的修改和文件系统的构建四个部分[4]。开发完成后进行系统集成测试,以验证移植是否成功。
图3 软件平台开发流程Fig.3 Software platform development process
BootLoader,即引导加载程序。与PC 端的BIOS 类似,BootLoader 在操作系统内核运行之前运行,它的作用包括初始化硬件设备、建立内存空间映射图等,从而为操作系统内核的正确运行提供合适的环境。由于U-Boot 适配多种嵌入式操作系统内核,具有高可靠性和稳定性。因此在本平台软件平台开发时,使用UBoot 这种BootLoader。
按照如图4 流程进行U-Boot 移植。U-Boot 目的主要有两个,即初始化内存和将内核搬运到内存中运行。其主要分为两个阶段,第一阶段对所有硬件设备进行初始化,为后续启动设置合适的内存空间,以及设置堆栈等。然后跳转到第二阶段,在初始化本阶段所使用的硬件设备后,U-Boot 将内核映像加载到内存中。最后调用内核。
图4 U-Boot 移植流程Fig.4 The migration process of U-Boot
Linux 系统的内核包括了进程调度、内存管理、文件系统、设备驱动等,这些模块拥有直接操控底层硬件的能力,对Linux 内核配置并将其移植到本平台上。
如图5 为Linux 内核移植流程。在配置内核选项时,添加所有平台模块对应的驱动以及对文件系统的支持。完成后便开始编译和安装。至此Linux 内核移植完成。
图5 内核移植流程Fig.5 The kernel migration process
设备树作用在于描述硬件平台所拥有的硬件资源,Linux 内核不直接访问硬件本身而是通过访问设备树来间接获取硬件信息。
在修改设备树的过程中最重要的部分为节点属性的添加,后续的驱动则通过函数来获取这些节点属性信息。将平台所有的硬件资源添加至设备树文件中。后续只需更新设备树文件即可。
在Linux 系统移植的最后部分,平台进行文件系统的构建,即创建根文件系统。在文件系统中添加库函数、配置信息、常用的软件等,至此完成了一个完整的Linux 最小系统。后续可在这个系统上添加一些第三方组件,使得Linux 系统功能更为齐全与完善。
将制作好的U-Boot 文件、内核文件、设备树文件和系统镜像下载到平台上,即可开始测试。观察启动信息表明U-Boot 成功引导内核启动,成功加载了设备树文件和驱动文件,以及文件系统挂载成功。
本校物联网竞赛参赛队伍已开始使用本平台,针对参赛队伍训练过程中的反馈进行了优化。目前,该平台处于稳定运行状态。学生使用该平台可以方便地进行上层软件的开发和对硬件的二次开发,为后续学生参加各种物联网设计竞赛提供了强有力的帮助,为本校物联网竞赛取得好成绩打下了坚实的基础。