第 3 章 物联网无线节点 物联网应用广泛,物联网设备之间也存在着较大差异。从无源RFID 标签, 到电池供电的无线传感器节点,再到有线供电的高清视频监控设备等,无不涵 盖在物联网的概念之内。本书以物联网中常用的无线传感器节点为目标设备, 讲述物联网中的无线通信技术,并以此为基础展开实践。这些有源的物联网无 线节点通过无线方式传输数据,通常不具备有线供电的条件,因此常采用自带 电池、能量收集(energyharvesting)等方式供电。 “磨刀不误砍柴工”,无线通信是一个注重工程实践的技术领域。在学习具 体的物联网无线通信技术之前,有必要先了解实现这些技术的常用设备,即物 联网无线节点,为后续的技术理论学习与实验奠定基础。 本章主要讲述物联网无线节点的硬件系统组成,并初步分析影响无线节点 功耗与能耗的主要因素,给出降低功耗与能耗的基本方法;此外,本章也将介绍 可用于物联网无线节点的开发板与操作系统实例,并使用CC1352R1 开发板演 示物联网无线节点。 3.硬件系统组成 1 本书中提及的物联网无线节点是指物联网中具有无线通信等功能的小微 型嵌入式系统设备,支持物联网数据采集、处理、无线收发等功能,通常自带电 池供电,以便于移动与部署。例如,4节中的SnoTg就可以看作一个物联 1.esra 网无线节点。 从硬件系统组成上看,一个物联网无线节点至少由通信子系统、处理子系 统、电源子系统构成, 如图3. 通常还包含传感等子系统,1所示。传感子系统是 指由多种传感器及模数转换器(Analog-to-DigitalConverter,ADC)构成的、具 有感知某些物理量的值并将其转换成数字信号功能的一系列芯片、模组及电子 元器件的集合。其可通过串行接口等途径把采集到的传感器数据传送给处理 子系统。处理子系统可对传感器数据做进一步处理,并通过通信子系统发送数 据。处理子系统通常也通过串行接口与通信子系统交互数据。通信子系统则 负责通过无线方式发送或接收数据。所有硬件子系统都离不开电源子系统的 供电支持。 30物联网无线通信原理与实践 图3.1物联网无线节点硬件系统 设计开发一款物联网无线节点需要综合多方面知识,包括传感技术、数字电子技术、 无线通信、网络、嵌入式系统、数字信号处理、软件工程等。虽然本书不以设计物联网无线 节点为主要目标,但了解物联网无线节点及其系统组成,对于理解后续讲述的技术与理论 知识大有裨益。 物联网无线节点,尤其是无线传感器节点,具有无线数据传输功能,并通常自带电池 供电,因此具有部署方便灵活、便于移动等优点。随着近年来能量收集技术的发展,使用 光、热、风、机械运动、电磁场、磁场、电场等能量来源为无线节点供电逐渐成为可能。但现 阶段仍有众多物联网无线节点以电池供电为主。由于物联网无线节点的尺寸和体积通常 较小,其自带电池的容量受到限制。然而,人们又希望这些电池供电的物联网无线节点的 工作寿命尽可能长,长达5~10 年甚至更长,而很多物联网无线节点由于其部署环境与成 本限制,不便更换电池或无必要更换。因此,短期内,能耗仍是设计开发物联网无线节点 时的首要考虑因素之一。未来,随着电池技术与供电技术不断发展,能耗终归不应再是首 要考虑因素。 1.传感子系统 3.1 虽然传感子系统并不是物联网无线节点的必需组成部分,但是由于感知外界信息仍 是物联网的主要任务之一,很多物联网无线节点都具备感知功能,因此有必要了解支持感 知功能的传感子系统。物联网无线节点之间无线传输的数据中,有相当一部分是由传感 子系统产生的传感器数据。 由于物联网的应用领域千差万别,其中使用的传感器也有较大差别。传感器 (sensor)是能把被测量转换为电信号的器件或装置。被测量包括温度、湿度、压力、烟雾、 气体、光线、振动、水流、加速度、位置、详见5. 声音、气流、速度、距离、海拔高度等(1节)。 同一类型传感器的准确度与精度,可能因不同生产商或不同型号而有所不同。有些传感 器可在水下的发动机中使用,有些可嵌入人或动物身体中,有些甚至可以在太空中使用。 在物联网无线传感器节点中,与传感器相对应的部件是执行器(actuator), 用于驱动 或控制某些物理设备,例如打开阀门。在工业物联网中,电动机、继电器等设备都是常见 的执行器。由于在物联网无线节点中,总体上执行器尚未及传感器常见,本书中未专门把 执行器作为物联网无线节点的一个硬件子系统单独列出讲解。 表3. 1列出了部分物联网中使用的传感器及其用途。 本节以意法半导体公司(STMicroelectronics)生产的两款常用传感器为实例,讲解物 联网无线节点中的传感子系统。一款为LM135 精准温度传感器,用于测量温度;另一款 为H3LIS331DL 低功耗高性能三轴数字加速度传感器,用于测量人或物体的三维加 第3章物联网无线节点31 速度。 表3.部分物联网中使用的传感器及其用途 1 传感器感知的被测量或事件物联网应用领域 加速度计人或物体的三维加速度 活火山监测、结构监测、医疗保 健、交通、供应链管理等 陀螺仪人或物体的角速度医疗保健等 心电图描记器(ECG) 心率 医疗保健 脑电图描记器(EEG) 脑电活动 肌电图描记器(EMG) 肌肉活动 血氧计血氧饱和度 被动式红外传感器物体辐射的红外线医疗保健等 温度传感器温度精准农业、医疗保健等 湿度传感器相对湿度与绝对湿度精准农业等 电容传感器溶质浓度精准农业等 气压计流体压力精准农业等 土壤湿度传感器土壤湿度精准农业 声发射传感器裂纹产生的弹性波结构监测等 声传感器声压振动交通、管线监测等 pH传感器氢离子浓度管线监测等 压电圆柱体气体速度管线监测等 磁性传感器磁场的变化交通等 次声波传感器地震或火山喷发产生的震荡性声波活火山监测等 地震传感器地震波活火山监测等 LM135 温度传感器的工作温度为-55~150℃,线性输出,误差在1℃ 以内。该传感 器有3个引脚,分别为校准引脚ADJ 、正引脚V+、负引脚V,如图3.和图3.所示。 -2(a) 2(b) 图3.c)为LM135 的基本应用电路,其中R1 应选取使LM135 中电流为1mA 的电阻值。 2( 如果温度以开尔文(Kelvin,K)为单位,那么LM135 输出的电压值Vout正比于被测温度 T,001T(V)。例如,15K(25℃)温度下LM135 输出的电压值约为2. Vout=.298.9815V 。 由于LM135 的输出为模拟电压值,因此需要先使用ADC 把模拟信号转换为数字信 号,再输入给处理子系统。 y 8m/sH3LIS331DL 加速度传感器支持测量x、、 z 轴上的±100×9.2、±200× 9.8m/s8m/s5~1000Hz;支持SPI 2 或±400×9.2 范围内的加速度值,测量速率为0. (SerialPeripheralInterface)和I2C(Inter-IntegratedCircuit)串行接口,因此可与处理子 系统通过串行接口直接相连。 32物联网无线通信原理与实践 图3.2LM135温度传感器 (原图来源:LM135 数据手册) H3LIS331DL 共有16 个引脚,如图3.3所示,各引脚的功能描述见表3.2。其参考应 用电路如图3.4所示。综合表3.2和图3.4可以看出,H3LIS331DL 传感器芯片的外围电 图3.3H3LIS331DL加速度传感器 (图片来源:H3LIS331DL 数据手册) 路相对简单,其引脚除了电源和接地引脚之 外,只有SPI 或I2C串行接口以及两个中断 输出引脚INT1 和INT2 。这两个中断引脚 用于在x、y、z轴的加速度测量值满足一定 条件时,输出中断信号。具体条件:当以x、 y、z轴的测量值为坐标的三维空间中的点落 在被x=、、z=z0 三个平面所分割 x0 y=y0 的三维空间的某一区域时,触发中断,其中 x0、y0、z0 分别为x、y、 z 轴上的预设门限 值。通过设置H3LIS331DL 的一些内部寄存器,可灵活设置中断触发条件。除了与中断 相关的寄存器,H3LIS331DL 内部还有控制寄存器、状态寄存器、加速度值寄存器等。这 些寄存器的读取与写入,包括x、y、 z 轴加速度测量值的读取,都是通过I2C或SPI 串行 接口完成的。 表3.331DL 的引脚 2 H3LIS 引脚号名称功能 1 Vdd_IO I/O引脚电源 2、3 NC 无连接 4 SCL/SPC I2C或SPI 的串行时钟 5、12 、13 、16 GND 0V 6 SDA/SDI I2C的串行数据,或SPI 的串行数据输入 7 SDO/SA0 SPI 的串行数据输出,或I2C设备地址的最低位 8 CS SPI 使能,或I2C/SPI 模式选择(接Vdd_IO 选择I2C模式) 9 INT2 中断2 10 、15 Reserved 保留 11 INT1 中断1 14 Vdd 电源 第3章物联网无线节点33 图3.4H3LIS331DL的参考应用电路 (图片来源:H3LIS331DL 数据手册) 3.1.2SPI与I2C串行接口 物联网无线节点的尺寸和体积通常较小,这就限制了其硬件印制电路板(Printed CircuitBoard,PCB)的尺寸,再加上出于制板费用的考虑,通常不会使用较高层数的电路 板,这导致了其PCB 的布线空间较为紧张,限制了芯片之间的走线数量。相比并行接口 动辄需要数十条数据线、地址线、控制线,串行接口只需要几条走线。因此,物联网无线节 点通常使用I2C、SPI 等串行接口,作为各个子系统之间的数据传输通路。虽然串行接口 的数据传输率不及并行接口,但由于物联网无线节点的数据传输率通常不高,使用串行接 口也能满足需求。本节将分别通过SPI 和I2C两种串行接口,读写H3LIS331DL 加速度 传感器的内部寄存器,并读取x、y、 z 轴的加速度测量值。本章后续的处理子系统与通信 子系统之间的数据接口,通常也使用这两种或其他串行接口。 1.SPI 串行接口 SPI 是摩托罗拉公司开发的一种用于短距离数据传输的同步串行接口。如图3. 5所 示,主设备通常使用4条走线与从设备相连:SCLK(SerialClock)串行时钟线,用于主设 备输出时钟信号给从设备;MOSI(MasterOutputSlaveInput)主设备输出从设备输入数 据线,用于传输主设备发送给从设备的数据;MISO(MasterInputSlaveOutput)主设备 输入从设备输出数据线,用于传输从设备发送给主设备的数据;CS(ChipSelect)片选线, 用于主设备选择想要读写的从设备。数据传输由主设备发起,主设备可通过使用多条CS 片选线的方式,读写多个从设备。图3. 5中的箭头代表数据传输的方向。 当H3LIS331DL 的CS 引脚输入低电平时,该传感器使用SPI 串行接口传输数据。 此时H3LIS331DL 作为SPI 从设备工作,其CS 引脚、SPC 引脚、SDI 引脚、SDO 引脚分别 34物联网无线通信原理与实践 图3.5SPI串行接口 与主设备的CS 引脚、SCLK 引脚、MOSI引脚、MISO 引 脚相连。如图3.6所示,在主设备读写H3LIS331DL 的 内部寄存器时,主设备先把片选线CS 拉低,并通过 SPC 时钟线输入时钟信号给H3LIS331DL,再通过 SDI 数据线告知H3LIS331DL 将对其哪个寄存器(通 过6比特的寄存器地址AD5~AD0 给出)进行何种操 作(R..W 位为0时表示写入,为1时表示读取;M..S 位 为0时读写地址不变,为1时自动增加) 。若为写入操作,则主设备在SDI 数据线上后续 发送的DI7~DI0共8比特将被写入地址为AD5~AD0 的内部寄存器中;若为读取操作, 则H3LIS331DL 将在后续的8个时钟周期内通过SDO 数据线发送地址为AD5~AD0 的 内部寄存器的值DO7~DO0 共8比特,给主设备。 图3.331DL 的SPI 读写协议 6 H3LIS (图片来源:H3LIS331DL 数据手册) 【例3. 1】主设备通过SPI 串行接口读取H3LIS331DL 加速度传感器 x 轴加 速度的低8位数值。 【分析】通过查阅H3LIS331DL 数据手册第30 页以及第23 页,可知其 x 轴 加速度低8位数值存放在内部只读寄存器OUT_X_L中,该寄存器的6比特地址为 101000B 。读取内部寄存器时,R..位应置1。由于只读取当前地址起始的1字节 W 数据,M..S 位可置为0。因此,主设备除了拉低H3LIS331DL 的CS 片选线、在SPC 时钟线输入时钟信号之外,还需在SDI 数据线上写入1字节的控制位和地址数据 10101000B,之后,通过SDO 数据线读取1字节的 x 轴加速度低8位数值。 2.I2C串行接口 H3LIS331DL 也支持通过I2C串行接口读写其内部寄存器。I2C是飞利浦半导体公 司开发的一种支持多个主设备和多个从设备的同步串行接口。如图3.I2C的主设 7所示, 备与从设备之间只需用两条双向走线连接:SCL(SerialClock)串行时钟线,用于主设备 发送时钟信号给从设备;SDA(SerialData)串行数据线,用于主从设备之间的串行数据传 输。设备之间使用双向走线相连,设备的主从角色可切换。 第3章物联网无线节点35 图3.7I2C串行接口 图3.8为用I2C传输数据的时序图。每次数据传输都是以主设备拉低SDA 数据线 开始的,接着主设备发送时钟信号到SCL 串行时钟线,然后主设备和从设备按照图3.9 所示的数据消息格式在SDA 数据线上逐比特发送或接收数据,直至完成数据传输。最 后,主设备停止发送时钟信号,再把SDA 数据线由低电平置为高电平,让出SDA 数据线 和SCL 串行时钟线。 图3.8I2C时序图 由于I2C的两条走线上可以连接多个设备,为了区分各个从设备,2C支持一个7比特 9所示, I 主设备首先发送 长的设备地址(可扩展为10 比特)。如图3.在数据传输开始后, 一个其想要读写的从设备的地址,并用随后发送的读写位表明主设备想要写入数据给从 设备(读写位置0)还是想要读取从设备数据(读写位置1)。接着从设备通过在随后的确 认位期间拉低SDA 数据线来应答主设备。然后数据发送端(主设备或从设备)开始发送 1字节数据,接收端(从设备或主设备)通过确认位应答发送端,直至完成数据传输。 图3.2C数据消息格式 9I 当H3LIS331DL 的CS 引脚接高电平(Vdd_IO)时,该传感器使用I2C串行接口传输 数据。此时H3LIS331DL 作为I2C从设备工作,其SCL 引脚、SDA 引脚分别与主设备的 SCL 引脚、SDA 引脚相连。H3LIS331DL 的7比特从设备地址的高6比特为001100B,该7 比特地址的最低位由SA0 引脚的输入电平决定:如果SA0 输入高电平,则H3LIS331DL 的 36物联网无线通信原理与实践 从设备地址为0011001B;如果SA0输入低电平,则H3LIS331DL的从设备地址为 0011000B。这种做法的好处是,可以把两片H3LIS331DL连在同一组I2C走线上,每片 独享一个不同的地址。H3LIS331DL约定每次数据传输的第一个数据字节为子地址字 节,该字节的低7比特为主设备想要读写的H3LIS331DL内部寄存器的地址AD6~ AD0,该字节的最高位为M..S 位。当M..S 位为1时,寄存器地址AD6~AD0在多字节读 写时自动增加。 【例3.2】主设备通过I2C串行接口设置H3LIS331DL加速度传感器每秒输 出1000次x、y、z轴上的加速度值。 【分析】通过查阅H3LIS331DL数据手册第23~25页,可知所需功能对应的 设置位在其内部寄存器CTRL_REG1中,该寄存器的7比特地址为0100000B,设 置所需功能需把该寄存器改写为00111111B。写入内部寄存器时,R..W 位应置0。 由于只写入当前地址起始的1字节数据,M..S 位可置0。因此,主设备通过I2C串行 接口应发送的第一个字节单元是00110000B(假设SA0引脚输入为低电平),第二 个字节单元是00100000B,第三个字节单元是00111111B。 综上,处理子系统可以通过SPI或I2C串行接口读写H3LIS331DL加速度传感器的 内部寄存器。这两种串行接口的不同:I2C串行接口只需要两条走线,通过地址来寻址从 设备;而SPI串行接口一般使用4条走线,由于有CS片选线,无须寻址从设备;当I2C串 行接口连接多个主设备时,可能会产生发送数据冲突,而SPI的4条走线中只有一个主设 备,不会产生冲突;在数据传输率方面,SPI接口的传输率只取决于主从设备,而标准化的 I2C接口的传输率则受标准限制:标准模式下为100kb/s,快速模式下为400kb/s,高速模 式下为3.s, s。 4Mb/超高速模式下为5Mb/ 1.处理子系统 3.3 传感子系统采集数据,处理子系统处理数据。物联网无线节点可以直接对采集的数 据进行处理,也可以将数据发送到其他设备(例如,汇聚节点、网关、基站、服务器等)进行 进一步处理、分析、汇聚,这取决于节点的处理能力、电池剩余电量、通信协议等因素。此 外,部分通信协议的实现也常由处理子系统完成。 处理子系统以处理器为中心。物联网无线节点由于受尺寸、成本、电池容量等因素制 约,常使用微控制器(MicroControlerUnit,MCU)或数字信号处理器(DigitalSignal Procesor,DSP)作为其主要处理器。用户可在这两类处理器上运行自己的程序来实现所 需功能,包括实现算法、协议等。8位MCU的批量售价可低至几角每片,32位MCU的 批量售价可低至几元每片。这两类处理器可以满足众多应用的需求。在一些需要定制化 处理器的应用领域,可使用现场可编程门阵列(Field-ProgrammableGateAray,FPGA) 或专用集成电路(Application-SpecificIntegratedCircuit,ASIC)作为主要处理器,但二者 的成本相对较高。FPGA的并行处理能力强,但芯片的售价相对较高,使得产品的量产成 本相对较高,并且FPGA的功耗相对较高,不大适用于依靠电池供电的物联网无线节点。 第3章物联网无线节点37 ASIC的量产成本相对较低,能效高,但其非重复性工程(Non-RecuringEnginering, NRE)的费用较高,即开发、测试、流片等工程成本较高,甚至可达数千万元。在需求量持 续较大的应用领域,为了进一步降低量产成本与功耗,常使用ASIC 。本节主要介绍设计 物联网无线节点时常用的两类处理器:MCU和DSP 。 (1)MCU是集成在一片芯片上的小计算机,常用于自动控制和嵌入式系统领域,也 被称单片机。MCU在一片芯片上集成了一个或多个处理器核、易失性存储器、非易失性 存储器、时钟发生器,以及串行通信接口、ADC 、输入输出位等外围设备。传统的MCU多 基于冯·诺依曼体系结构,即程序与数据合用一条连接处理器核与存储器的总线。常见 的处理器核包括高级精简指令集计算机(AdvancedRISCMachine,ARM)核、无内部互锁 流水级的微处理器(MicroprocesorwithoutInterlockedPipelinedStages,MIPS)核等;易 失性存储器包括静态随机存储器(StaticRandom-AcesMemory,SRAM )、同步动态随 机存储器(SynchronousDynamicRandom-AcesMemory,SDRAM)等;非易失性存储器包括 闪存()、电擦除可编程只读存储器( flashmemory Electricaly-ErasableProgrammableRead- OnlyMemory,EEPROM)等;串行通信接口包括I2C、SPI等。传统的MCU多为定点型 处理器,浮点运算只能靠程序来完成。MCU(尤其是中、低端MCU)一般适用于数学运算 量不大的应用;对于数学运算量较大的应用,可以考虑使用DSP 。 (2)DSP是专门为数字信号处理而优化了的微处理器。数字信号处理算法,如数字 滤波、快速傅里叶变换等,常需要周期性地完成大量数学运算(例如,乘法与加法)及数据 读写操作,且这些操作常需要在指定的时间内完成。虽然许多MCU也支持运行数字信 号处理算法,但常因处理器硬件在数学运算及数据读写等方面性能有限而难以保证在指 定时间内完成这些数学运算。此外,使用DSP来执行数学运算等任务,能效常高于传统 MCU 。DSP通常基于哈佛体系结构,即数据存储空间与程序存储空间相分离,在处理器 ( 核与存储器之间,除了有一条程序总线,还有一条或多条数据总线。DSP通常是超标量 superscalar)处理器或超长指令字(VeryLongInstructionWord,VLIW)处理器,前者通 过向处理器内不同执行单元同时分派多条指令以达到在一个时钟周期内执行多条指令的 效果,后者在程序编译时就确定了在一个时钟周期内哪些指令可以同时执行。DSP既有 定点型也有浮点型,后者从硬件上支持浮点运算。由于DSP的指令集为数学运算做了专 门优化,处理器内又有专门的硬件支持,在传统MCU上需要经过若干个时钟周期执行若 干条指令才能完成的任务,在DSP上甚至只需一个时钟周期一条指令即可完成,如乘累 加操作。许多传统MCU上没有硬件乘法器,但所有的DSP上都有硬件乘法器,且通常 有多个。此外,DSP通常还具备硬件模寻址循环缓冲区、硬件控制循环等专门的硬件 支持。 作为MCU的一个实例,ARMCortex-M4F处理器面世于2010年前后,是一款具有 DSP特点的、基于哈佛体系结构的、具有三级流水线的32位MCU 。ARMCortex-M4F 基于ARMv7-M架构,在Cortex-M3的基础上,增加了DSP指令和单精度浮点单元,并带 有32位的硬件乘法器和32位的硬件除法器,支持睡眠模式。 38 物联网无线通信原理与实践 3.4 通信子系统 1. 通信子系统负责数据的无线接收与发送,与处理子系统常通过串行接口相连接。在 物联网无线节点中,通常使用现成的无线收发器芯片来实现通信子系统、完成数据的无线 接收与发送。较早面世的用户可配置的无线收发器芯片有美国TI公司的CC系列芯片、 挪威Nordic半导体公司的nRF系列芯片等。本节以TI公司的CC1352R无线微控制器 为例,介绍通信子系统。 CC1352R是TI公司2018年推出的一款支持多协议(包括ZigBe 、Thread、BLE 、 IEEE802.15.4g6LoWPAN 、it多频段(4GHz频段) 、moy等)、1GHz以下和2.的无线微控 制器芯片,适用于低功耗传感与无线数据传输。CC1352R内置一个时钟频率为48MHz 具有352kB闪存和80kBSRAM的ARMCortex-M4F微控制器,一个具有4kBSRAM 的超低功耗传感器控制器,一个兼容蓝牙和IEEE802.4等标准的支持1GHz以下和 15. 4GHz频段的无线收发器,以及丰富的串行接口等外围设备。CC1352R芯片有48个引 脚,其部分引脚的功能说明如表3. 2. 3所示。 表3.电源、调试引脚除外) 3 CC1352R 的部分引脚( 接地、 引脚号名称功能 1 RF_P_2_4GHZ 正2.4GHz射频输入输出 2 RF_N_2_4GHZ 负2.4GHz射频输入输出 3 RF_P_SUB_1GHZ 正1GHz以下射频输入输出 4 RF_N_SUB_1GHZ 负1GHz以下射频输入输出 5 RX_TX 可选的射频低噪声放大器偏置引脚 6 X32K_Q1 32kHz晶体振荡器引脚1 7 X32K_Q2 32kHz晶体振荡器引脚2 46 X48M_N 48MHz晶体振荡器引脚1 47 X48M_P 48MHz晶体振荡器引脚2 35 RESET_N 复位引脚,低电平有效 8~12、14~21、26~32、36~43 DIO 通用输入输出引脚 CC1352R可用来实现物联网无线节点的通信子系统(因其集成了RF核,RF即 RadioFrequency,译为射频)以及处理子系统(因其集成了48MHz的ARMCortex-M4F 微控制器)。CC1352R的RF核包含一个ARMCortex-M0微控制器和一个调制解调器、 频率合成器及射频接口模块,前者负责接收ARMCortex-M4F微控制器发送来的高级命 令并在RF核内调度执行,后者是射频的核心部分。 高级命令可分为三类:射频操作命令、立即命令、直接命令。射频操作命令可操作射 频硬件完成发送或接收一帧数据、设置射频硬件寄存器或更复杂的依赖于协议的操作。 立即命令用于改变或返回射频状态,如接收信号强度,或操作发送或接收的数据队列。直 第3章物联网无线节点39 接命令则是无参数或短参数的立即命令。借助这些高级命令,可实现介质接入控制子层 的基本操作,屏蔽了物理层的实现细节,只需通过命令设置物理层的基本参数即可,方便 了使用,简化了开发。 【例3.3】在CC1352R 使用专有射频接收数据时,跳过正在接收的数据。 【分析】通过查阅CC1352R 技术参考手册第1905 页、第2031 页,可知向RF 核发送命令通过向CMDR 寄存器中写入命令的方式实现。要跳过当前正在接收的 数据,可向CMDR 写入一条ID 为3402H 的直接命令CMD_PROP_RESTART_ RX 。直接命令的格式:命令的第16~31 位为命令ID,第0~1位为1H,因此可通 过向CMDR 寄存器写入32 比特值34020001H 完成所需操作。 CC1352R 并无固定的串行接口引脚,可通过其内部的输入输出(Input/Output,I/O) 控制器把串行接口映射到物理引脚DIO 上,其支持一个I2C接口和两个SPI 接口。 【例3.4】分别将CC1352R 的10 号引脚配置为I2C串行接口的时钟线、11 号 引脚配置为I2C串行接口的数据线。 【分析】通过查阅CC1352R 数据手册第7页,可知其10 号引脚的名称为 DIO_5、11 号引脚的名称为DIO_6,均为可配置的数据输入输出引脚。再通过查阅 CC1352R 技术参考手册第1133~1142 页,可知DIO_5对应的配置寄存器为 IOCFG5,寄存器地址偏移量为14H;DIO_6对应的配置寄存器为IOCFG6,寄存器 地址偏移量为18H 。通过将IOCFG5 配置寄存器的第0~5位PORT_ID 字段置为 EH 、将IOCFG6 配置寄存器的第0~5位PORT_ID 字段置为DH,可完成所需配 置。如果需要在该引脚上输入数据,还要将对应配置寄存器中的第29 位IE 字段的 值置为1。 3.功耗与能耗 2 功耗是指每单位时间内消耗的电能;能耗是指所消耗的电能。能耗目前仍是开发设 计由电池供电的物联网无线节点时的首要考虑因素之一。 Raghunathan等人在2002 年发表的论文中给出了MEDUSA-Ⅱ节点的功耗, MEDUSA-Ⅱ是由加州大学洛杉矶分校开发的无线传感器节点。该节点的传感子系统与 处理子系统在工作时的总功耗为9.此时若开启通信子系统并工作在接收模式下, 72mW, 则总功耗将上升至22.即接收模式下通信子系统的功耗大约为12.约是传 2mW, 48mW, 感子系统和处理子系统功耗之和的1.其功耗 28 倍。如果通信子系统工作在发送模式下, 通常还会再高一些。由此可见,就该节点而言,通信子系统的功耗相对较大。若功耗较大 的通信子系统长时间处于工作状态,则其能耗也较大。那么,影响通信子系统能耗的因素 有哪些? 通过简单能耗模型对通信子系统的能耗做初步分析,如图3. 10 所示。通信子系统的 40物联网无线通信原理与实践 接收机常由混频器、频率合成器、压控振荡器、锁相环、解调器、功率放大器等部件组成,它 们在工作时都需要耗电。把接收机的接收电路平均接收每比特数据所消耗的电能记作 erx_elec。在只考虑接收电路能耗时,接收机接收k比特数据所消耗的电能为 Erx(k)=Erx_elec(k)=k·erx_elec (3-1) 图3.10简单能耗模型 发射机和接收机之间的一个主要区别是发射机通常使用输出功率相对较大的功率放 大器。同样,把发射机的发射电路平均发送每比特数据所消耗的电能记作etx_elec,则发射 机发送k比特数据所消耗的电能为Etx_elec(k)=k· etx_elec。由于发射机的输出功率较大, 该模型把发送k比特数据到d米远处时功率放大器所消耗的电能建模为Etx_amp(k,d)= k· e_amp·dn ,其中e_amp为系数,它的值取决于功率放大器的效率、发射天线的增益、载波的波(t) 长、(x) 热噪声的功(t) 率(x) 谱密度、所需的信噪比等因素; n 为路径损耗指数 1节), 6。由此可得, d 为传输距离; (详见4.通常 n 为2~发射机的总能耗为 Etx(k,d)=Etxelec(x_ampk,=k·tx_eletx_amp·dn ( _k)+Et(d)ec+k·32) 可见,通信子系统工作在接收模式下时,其接收的数据越多,能耗(e) 越大;工作在发送模 式下时,发送的数据越多,传输距离越远,能耗越大。 电池供电的物联网无线节点在电池容量有限的情况下,若要延长节点的工作寿命,所 能采取的措施离不开开源与节流。开源是指用额外的电源或能源为节点供电或充电,如 使用额外的电池或利用太阳能、热能、风力、机械运动、电磁波、磁力等能量来源为电池充 电等。节流指减少节点自身的能耗,尤其在受成本、尺寸、工作条件等因素制约而不便或 无法开源的情况下,节流成了唯一选择。 在物联网无线节点软硬件及无线通信技术的不同功能层面上,都有各自的有助于节 省能耗的措施与技术方法。例如,对于通信子系统而言,可选用低功耗、高效的无线收发 器芯片,在减小传输距离的同时尽量降低发射机输出功率;对于无线通信物理层而言,可 选用适合的调制方式与编码技术,选取较低的载波频率,尽量降低数据传输率;对于介质 接入控制子层而言,可选用高效的介质接入控制协议,减少空闲监听、旁听、冲突、盲发、控 制帧开销及重传次数;对于网络层而言,可选用适合的网络协议、选择节能的传输路径等。 如何在满足工作需要的情况下尽量降低物联网无线节点与网络的整体能耗,需要综合考 虑与权衡,是一项较为复杂的系统工程。 在物联网无线节点中,数据的采集、处理、传输,都离不开处理子系统。降低处理子系 第3章物联网无线节点41 统的能耗也有助于降低节点的能耗。那么,处理子系统的功耗和能耗与哪些因素有关? 如何降低处理子系统的能耗? 处理子系统以处理器为中心。处理器集成电路多使用互补金属氧化物半导体 (ComplementaryMetalOxideSemiconductor,CMOS)生产工艺制造。CMOS 电路的功 耗P为 P=Pt ·CL ·V·Vdd ·fclk+Isc ·Vdd+Ileakage ·Vdd (3-3) 式中Pt ———耗电跃迁发生的概率; CL ———负载电容; V———电压摆幅,大多数情况下,与供电电压Vdd 相同; Vdd ———供电电压; fclk ———时钟频率; Isc ———直流短路电流; Ileakage ———漏电流。 式(3-3)为三项乘积之和。其中,第一项为开关电流产生的动态功耗;第二项为直流 短路电流产生的功耗;第三项为漏电流产生的静态功耗。由此可见,通过降低CMOS 电 路的供电电压Vdd 或时钟频率fclk可以降低功耗。 人们常采用功率管理等技术来降低微处理器的功耗,包括动态电压与频率调节、电源 门控、时钟门控等技术。 动态电压调节(dynamicvoltagescaling)是指根据情况提高或降低微处理器芯片中 使用的电压。动态频率调节(dynamicfrequencyscaling)是指根据实际需要自动调整微 处理器的时钟频率。这两种方法的目的是在微处理器处于工作状态时调整其性能。降低 电压与时钟频率都可以降低功耗并减少芯片产生的热量。既然如此,是否可以持续降低 微处理器的电压? 实际上,微处理器的时钟频率fclk与供电电压Vdd 之间存在如下关系: a k≤KVdd-Vt·(c) (4) fcl·(h)≈KVdd-3 Vdd 式中,不同的微处理器的a、 K 、c、Vth值不同。由式(3-4)可知,对于每个微处理器的每个 时钟频率值,都有一个最小的供电电压值。将供电电压降低到这个值是降低功耗而不影 响性能的有效方法。 电源门控(powergating)是指通过切断未使用的电路模块的电流来降低其功耗。时 钟门控(clockgating)在同步电路中较为常见,其通过在未使用电路模块时移除其时钟信 号来降低动态功耗。借助于时钟门控等技术,可以通过配置微处理器运行在不同功耗模 式下,来降低其总体功耗及能耗。例如,若让MEDUSA-Ⅱ节点运行在睡眠模式下,其功 耗将降低至0.不到运行在接收模式下功耗的1/1000 。 02mW, 不同微处理器支持的功耗模式不尽相同。这里以TI 公司的MSP430x4xx系列超低 功耗微处理器为例,说明微处理器的功耗模式。该系列处理器支持6种功耗模式,分别为 活跃模式(ActiveMode,AM)与低功耗模式(Low-PowerMode,LPM), 低功耗模式包括: LPM0 、LPM1 、LPM2 、LPM3 、LPM4 。在不同功耗模式下,处理器及时钟信号的状态不 42 物联网无线通信原理与实践 同,如表3. 4所示。 表3.x的功耗模式 4 MSP430x4x 功耗模式处理器主时钟数控振荡器子系统主时钟辅助时钟 AM 开启开启开启开启开启 LPM0 关闭关闭开启开启开启 LPM1 关闭关闭仅发生器开启开启开启 LPM2 关闭关闭仅发生器开启关闭开启 LPM3 关闭关闭关闭关闭开启 LPM4 关闭关闭关闭关闭关闭 如图3.x4xx在低功耗模式LPM4下的电流消耗可低至AM模式下 11所示,MSP430 的1/3000 。因此,让微处理器尽可能长时间地工作在尽可能低的功耗模式下,将会节省 大量能耗。 图3.x不同功耗模式下的电流消耗 11 MSP430x4x (图片来源:MSP430x4xx用户指南) 3.开发板与操作系统 3 物联网无线节点常由于内部存储空间、计算能力、电池容量等资源有限而功能受限。 从现阶段存储与处理能力的角度,可以把物联网设备大致分为低端、中端、高端三类。 ● 低端设备是资源严重受限的设备,无法运行传统的操作系统(例如,Linux、 WindowsIoT版)。其随机存储器(Random-AcesMemory,RAM)约几千字节、 闪存约几十千字节,处理器的时钟频率为几兆赫兹到几十兆赫兹。低端设备通常 需要借助网关等设备方能接入互联网。低端设备主要用来执行基本的感知与控制 任务,可用于实现无线传感器网络中的终端节点。 ● 中端设备是资源较少的设备,具备一些处理能力,但不足以满足非常复杂的需求。 其RAM约几十千字节、闪存约几百千字节,处理器的时钟频率为几十兆赫兹到几 百兆赫兹。中端设备可使用专门为资源受限节点设计的协议栈接入互联网,它们 可用来实现物联网系统中的网关等设备。网关是连接两个不同通信网络的设备。 第3章物联网无线节点43 ● 高端设备是具有足够资源的设备,包括功能强大的处理器、大量的RAM与闪存, 可运行传统的操作系统以及机器学习等算法,支持几乎所有的通信协议。它们可 用来实现物联网系统中的复杂网关等设备。 物联网无线节点的处理子系统可由上述三类设备实现,根据具体的应用与功能需求, 并结合传感子系统与通信子系统的需求,选择适合的设备。在设计与实现物联网无线节 点时,可以上述设备的开发板和适用于这些设备的操作系统为起点进行开发,以减少工作 量、缩短开发周期。当然,对于需求量较大或者对成本、尺寸、功耗等方面要求较高的应 用,也可以从设计物联网无线节点的PCB开始。 作为实例,本节介绍两款常见的可用于开发物联网无线节点的开发板以及适用于物 联网设备的5款常见操作系统。开发板(developmentboard)是指可用于某些应用系统 软硬件开发与测试的PCB,板上包含以某些芯片或元器件(例如,微控制器芯片)为中心 的一系列硬件组件。 市面上可用于开发物联网无线节点的开发板很多,它们在性能、售价、尺寸、功耗、供 电方式、使用的无线通信技术等方面的差别也较大。目前常见的高、中端开发板包括树莓 派(RaspberryPi)系列和Arduino系列开发板等。 ● 树莓派是英国树莓派基金会开发的一系列小型单板计算机,它们的售价较低、尺寸 较小,在相关领域的研究与开发项目中被广泛使用。2019年发布的树莓派4开发 板如图3.a) 售价低至35美元, 5GHz的64位四核ARM Cortex- 12(所示, 配有主频为 及丰富的接口 1. ,支持2. A72处理器、2GB/4GB/8GB的RAM 4GHz和 0、 5GHz频段的WiFi 、蓝牙5.BLE无线通信,但功耗相对较高,至少需要15W的 电源供电。SenseHAT是一块树莓派4的附加板,可插在树莓派4开发板上,如 12(ens 图3.b)所示。SeHAT具有一个8×8的彩色LED矩阵、一个有5个按钮 的操纵杆,并包括陀螺仪、加速度计、磁力计、温度传感器、气压传感器、湿度传感器 等。可以用树莓派4和SenseHAT实现处理能力较强的高端物联网无线节点。 图3.树莓派4与S 12 enseHAT (原图来源:RaspberyPiFoundation) 44 物联网无线通信原理与实践 ●Arduino是一系列易于使用的硬件模块与开发板。其中一款名为ArduinoNano 33IoT的开发板如图3.售价约21美元, 13所示, 配有主频为48MHz的32位 ARMCortex-M0处理器、32kB的SRAM 、256kB闪 存、一个SPI接口和一个I2C接口,并支持24GHz 频段的WiFi 、蓝牙及BLE无线连接。此外,(.) 该开发 板还配有加速度计和陀螺仪,使得该开发板适用于 振动报警系统、相对定位、计步器等应用场景。可以 用ArduinoNano33IoT实现相对简单的中、低端物 联网无线节点。 尽管使用上述开发板支持的WiFi 、蓝牙和BLE无线图3.runao33IT 13 AdioNno 连接可以满足一些应用的需求,但尚有一些需求无法满足,(图片来源:Arduino) 如超低功耗、远距离无线传输、节点众多的自组网、1GHz 以下频段等。若使用其他现有的无线通信标准可以满足这些需求,可优先考虑使用支持 该现有无线通信标准的开发板实现物联网无线节点。若尚无现有的无线通信标准可满足 特定的应用需求,也可以基于本书后续讲解的无线通信技术及现有的无线收发器(例如 CC1352R),自行设计并实现可满足这些特定应用需求的无线通信系统与物联网无线 节点。 在物联网无线节点的软件开发方面,使用操作系统可能有助于简化应用软件的开发。 但并非每个物联网无线节点都需要操作系统才能工作。如果应用软件比较复杂并且运行 在高端设备上,则通常使用操作系统。如果应用软件比较简单并且运行在低端设备上,则通 常不需要操作系统。在对程序效率和微处理器功耗有较高要求时,也可以不使用操作系统。 在物联网无线节点中,常见的操作系统除了Linux和WindowsIoT版外,还包括 FreRTOS 、MbedOS 、Contiki、TinyOS 、RIOT等。在开发物联网无线节点时,可根据实 际需要选用适合的操作系统。 ●FreRTOS是一个轻量级的实时操作系统,包括一个内核和一组库。其内核本身 仅包含3个C文件。FreRTOS提供了用于多线程多任务、互斥锁、信号量、软件 定时器的方法,并支持线程优先级。 ●MbedOS是一个基于ARMCortex-M微控制器的专门为物联网设计的嵌入式操 作系统。它由核心库组成,这些库提供了开发基于ARMCortex-M微控制器的物 联网节点所需的功能,包括安全、连接、实时操作系统,以及用于传感器和输入输出 设备的驱动程序。 ●Contiki是一个用于内存受限的网络设备的操作系统,尤其适用于低功耗物联网无 线设备。Contiki支持多任务处理,并内置TCP(TransmisionControlProtocol, 传输控制协议)/IP协议栈,只需要约10kB的RAM和30kB的ROM(Read-OnlyMemory,只读存储器)。包括图形用户界面的完整系统需要大约30kB的RAM 。 Contiki的一个新分支为Contiki-NG,是用于物联网中资源受限设备的操作系统。 Cotk-NG包含低功耗IP6(nentPoooeso互联网协议第6版)协 niivItrertclvrin6, 议栈,可在ARMCortex-M3/M4和TIMSP430等低功耗微控制器上运行,约需 第3章物联网无线节点45 要100kB的ROM,至少10kB的RAM 。 ●TinyOS是一个专为低功耗无线设备而设计的操作系统。它用nesC编程语言编 写,nesC是针对内存受限传感器网络而优化的C语言扩展。TinyOS程序由软件 组件构建,组件使用接口相互连接。TinyOS提供了用于分组通信、路由、传感、驱 动及存储的接口和组件。但其从2012年以来没有更新过。 ●RIOT是一种用于内存受限的网络设备的小型操作系统,支持大多数低功耗物联 网设备和微控制器架构。RIOT基于微内核架构,允许应用程序使用C和C++语 言进行编程,并提供完整的多线程和实时功能。RIOT提供多个网络协议栈,包括 IPv6、6LoWPAN(IPv6overLow-powerWirelesPersonalAreaNetworks,低功 耗无线个域网上的IPv6)、RPL(RoutingProtocolforLow-powerandlosynetworks,低功耗有损网络的路由协议)、UDP(UserDatagramProtocol,用户数据 报协议)、TCP 、CoAP(ConstrainedApplicationProtocol,受限应用协议)等。 3.本章实验 4 本书选用基于CC1352R芯片的开发板LAUNCHXL-CC1352R1(在本书中简称 CC1352R1),作为物联网无线节点的实验平台。 CC1352R1开发板如图3.还带有XDS110 14所示。该开发板上除了CC1352R芯片, 仿真器,只需用一根USB(UniversalSerialBus,通用串行总线)线缆连接该开发板与计算 机,即可通过计算机对该开发板进行编程与调试。此外,该开发板带有一个40针的 BoosterPack扩展接口,可外接TI公司的430BOOST-SHARP96(简称SHARP96 )、 BOOSTXL-SHARP128(简称SHARP128)等液晶显示模块以及其他功能模块,便于开发 与功能扩展。在本书后续的一些实验中,需要同时使用至少两块CC1352R1开发板,每块 开发板可以选配一个SHARP128或SHARP96液晶显示模块。 图3.CC1352R1开发板 14 LAUNCHXL 1】 【实验3.使用蓝牙无线连接的物联网无线节点。 作为使用CC1352R1开发板的第一个实验,将在该开发板上编译运行一个使用蓝牙 无线连接的物联网无线节点演示程序,以便熟悉该开发板的集成开发环境、掌握编译运行 程序的步骤、进一步理解物联网无线通信的概念。 46物联网无线通信原理与实践 (1)在支持蓝牙与WiFi连接的智能手机(或平板计算机)上安装名为SimpleLink Starter的App,可通过iOS应用商店或安卓应用市场安装。 (2)在计算机上安装CCS(CodeComposerStudio)集成开发环境和SimpleLink CC13x2软件开发工具包。 (3)使用CC1352R1开发板附带的USB线缆,通过USB接口将开发板连接到计算 机上。 (4)在计算机上运行CCS集成开发环境。CCS启动后的界面如图3.15所示。单击 打开ResourceExplorer。 图3. 15 CCS启动后的界面 (5)导入演示项目。在TIResourceExplorer左侧的导航栏中,依次选择Software→ SimpleLinkCC13x226x2SDK→Examples→DevelopmentTols→CC1352RLaunchPad→ BLE5-Stack→project_zero→TI-RTOS→CCSCompiler选项,在单击project_zero后,单 击右侧的Import按钮导入项目, 16所示。 如图3. (6)构建项目。单击Project菜单下的BuildAl 命令, 17所示。 (7)下载程序到开发板准备运行。单击如图3. 如图3. 18所示的下三角按钮打开调试菜单, 再单击CoompsrDbgSeo18中下三角按钮左侧 deCoeeusin命令。也可以直接单击图3. 的图标。 (8)打开串口终端窗口,用于查看即将在开发板上运行的程序的串口输出。单击如 图3.19所示的OpenaTerminal图标,在弹出的窗口中选择SerialTerminal,并选择串口。 第3章物联网无线节点47 图3.16导入项目 图3.构建项目 17 48物联网无线通信原理与实践 图3.下载程序到开发板 18 图3.打开串口终端窗口 19