APP下载

基于NFC 无线通信的电子设备非实时维护系统*

2021-02-22段学松刘童瑶缪程澳曲中水

科技创新与应用 2021年8期
关键词:电子设备字节数据包

段学松,刘童瑶,缪程澳,曲中水

(哈尔滨理工大学 计算机科学与技术学院,黑龙江 哈尔滨150080)

1 概述

近场通信(Near Field Communication,NFC)作为一种由RFID 技术演变而来新兴的技术,可以在彼此靠近的情况下低功耗进行数据交换。利用NFC 配合蓝牙无线传输技术实现对电子设备的非实时非在线维护是一种新的数据维护方式,具有较高的工程应用价值。

2 传统的电子设备数据维护方法概述

2.1 空中下载技术

空中下载技术(Over The Air Technology,OTA)是一种无线升级技术,常用于Android 手机等嵌入式设备的系统升级上。首先通过运营商提供的数据流量或者Wifi等方式把系统升级包下载至本地手机,然后通过解压缩系统升级包到特定目录来修复设备或者更新系统。

2.2 ISP 在系统编程技术

随着科技的发展,越来越多的嵌入式设备都支持ISP(In System Programing)在系统编程技术。ISP 技术能够做到无需取下电路板上的器件的情况下对器件编程。ISP 技术一般由上位机以有线的方式对下位机的器件进行编程,因此需要在设计电路的时候预留相关的接口。ISP 技术无论是在各种单片机还是在FPGA 上都有比较广泛地应用。

3 NFC P2P 传输协议分析

NFC 用于P2P 数据交换时,采用的是简单NDEF 交换协议(simple NDEF exchange protocol,SNEP)[1]。两个NFC 设备进行通信前,要把数据封装为NDEF 格式[1],才能通过SNEP 协议进行通信。

4 基于NFC 的电子设备非实时维护系统设计以及实现

整个系统由硬件系统与软件系统两部分组成。

4.1 硬件系统设计

硬件系统的主控板采用ARM 公司的STM32 开发板,但是考虑到不同的电子设备的功耗要求以及数据修改量,硬件系统分为两种方案来实现。

4.1.1 针对功耗要求苛刻、少量数据修改的电子设备的硬件系统实现方案(方案一)

电子设备对功耗要求比较苛刻,而对数据仅有少量的修改的情况比较常见,对于这种情况,数据传输应当选择传输功耗较低,数据传输速度也很低的NFC 模块PN532 作为数据传输控制的硬件设备。硬件系统通过数据维护接口实现对电子设备内存储设备进行修改,实现无线数据维护的功能。由于对传输的速率要求较低,因此用单片机的片内RAM 即可实现数据的临时存储,无需采用多余的存储模块,降低了成本。

4.1.2 针对功耗要求不高、大量数据修改的电子设备的硬件系统实现方案(方案二)

当电子设备对功耗要求不是十分严格时,为了提高传输效率,达到功耗与数据传输速率的平衡,采用蓝牙实现无线数据传输,通过把蓝牙的配置信息以及配对PIN写入NFC 标签的方式加速蓝牙连接,实现NFC 技术与蓝牙技术融合[2]。蓝牙模块采用HC05[5]蓝牙模块。硬件系统同样通过数据维护接口实现对电子设备内存储设备进行修改。当需要大量的数据修改时,需要用存储设备作为缓冲区来临时存储接收到的数据。考虑到价格以及可拓展性等因素,采用SD 卡作为数据缓冲区,上位机通过扫描带有蓝牙配对信息的NFC 标签并获得蓝牙HC05 模块的配置信息以及配对的PIN 后,直接连接到HC05 模块,与上位机通信收到的数据都会先被临时存储到SD卡内,通过数据维护接口写入要维护的电子设备中。

图1 MMHF 的协议规范

图2 Android 读取NFC 标签和NFCP2P 通信的样例代码

4.2 硬件系统与上位机的通信协议

4.2.1 NFC 传输协议定义

上位机主要通过NFC 实现与下位机的数据交互。考虑到NFC 传输速度较慢,同时为了方便发送和接受数据包,可以把NDEF 协议再一次封装为MMHF(Memory Maintenance Hex File)协议。该协议是适用于本系统手机到下位机数据传输的专用协议。下位机可根据本协议的修改记录对EEPROM 修改指定地址的数据。MMHF 的协议规范如图1 所示。

MMHF 的协议字段具体含义如下:

Header (4Byte):大小为4 字节的固定字符串“MMHF”,是识别传输协议的头部。

Type(6Byte):大小为6Byte 用来记录的是下位机存储芯片的型号的字符串。

Check(16Byte):大小为16Byte 的字符串,是一个校验码,用于确保和验证该数据是维护人员发出的,增加了一定安全性,该值由开发人员自主设定,如果下位机校验Check 字段不是设定的值,会把发来的数据丢弃。

BodyCnt(1Byte):BodyCnt 是一个大小为1Byte 数,记录了需要传输的次数。

Body(大小不固定):多条修改记录的集合,其大小不固定。

AllRecordSize(1Byte):大小为1Byte 的数,记录所在的Body 中修改记录的总字节大小。由于下位机数据存储大小有限,因此单次传输一个Body 中的所有修改记录的总大小不能超过115B。Android 解析本文件的时候会检查记录的总大小,如果超过115B 会报错。

RecordCnt(1Byte):大小为8bit 的数,记录的是本文件中修改记录的数量。

Record(大小不固定):一条EEPROM 的修改记录,包含地址和数据。

4.2.2 蓝牙传输协议定义

上位机主要通过蓝牙来实现与下位机的数据交互,为了方便接收和发送数据包,可以在蓝牙SSP 协议的基础上,继续封装协议,命名为SSP+协议。协议分为6 段。其中,START1 段为一个字节大小的固定16 进制数:0x0A,START2 段为一个字节大小的固定16 进制数0xFA,这两个字节作为数据包的包头,用来识别数据包是基于SSP+协议的。

图3 通过MAC 地址直接连接已经配对的蓝牙设备样例程序代码

Count 段大小是一个两个字节,表示要接收的字节流的长度。Data[]段大小为Count 字节,表示数据传输的真实数据。END1 段是一个字节大小的固定16 进制数0x00,END2 段是一个字节大小的固定16 进制数0x0B,这两个字节作为数据包的包尾,用来作为识别数据包结束。

4.3 上位机软件系统设计

Android[6]是一套真正意义上的开发性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。安卓系统具有开放性、丰富的硬件、大量的开发商等特点。安卓系统是开放免费的,并且Android 手机本身普遍具有NFC 和蓝牙两种功能,因此上位机采用Android系统的智能手机来实现比较合适。

4.3.1 Android 下NFC 通信[3]的实现

Android 中用NdefMessage 和NdefRecord 两个类来表示NFC 标签中的信息。NFC 标签的识别实时过程是由硬件实现的,当硬件发现有NFC 标签的时候,会对已经注册NFC 权限[3]的Activity 产生一个onNewIntent()的调用。在Android 系统中用SNEP 协议实现两个NFC 设备的通信,要用到两个API 接口,分别是当与支持NFCP2P的设备接触时,发送含有多个NFC 标签的消息到设备的setNdefPushMessage()和产生一个消息发送成功回调的setNdefPushMessageCallback()。Android 利用NFC 通信的代码如图2 所示。

4.3.2 Android 下蓝牙通信[4]的实现

Android 同样也采用适配器管理类来操作蓝牙设备。获取蓝牙适配器,同样仅需一行语句:BluetoothAdaptermBluet oothAdapter=BluetoothAdapter.getDefaultAdapter(this)。得到适配器之后通过BluetoothDevice 类来获得蓝牙设备。蓝牙通信与NFC 不同的是,蓝牙通信需要建立连接,因此蓝牙有专用的BluetoothSocket 类。代码如图3 所示。

5 结束语

本文设计基于NFC 无线通信的电子设备非实时维护系统,该系统是一种具有实用价值的创新性的系统维护方式,利用现代移动设备的便利性、普及性,对于非联网设备的维护给出了一种新的解决方案,不仅节省了设备异地维护过程的人力物力,也提高了解决问题的效率。

猜你喜欢

电子设备字节数据包
江苏泰斯特电子设备制造有限公司
某型机载敏感电子设备电磁干扰抑制技术研究
二维隐蔽时间信道构建的研究*
No.8 字节跳动将推出独立出口电商APP
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
电子设备电路的调试方法研究
No.10 “字节跳动手机”要来了?
C#串口高效可靠的接收方案设计
轻量级分组密码Midori64的积分攻击
保护车辆电子设备免受污物和密封失效的影响