传感器层主要负责挂载传感器,提供四种主要接口:IO型总线,SPI总线,I2C总线及串口。可以直接或通过串口转换模块支持大部分市面上的传感器。IO型总线主要作为状态量的输入,还可以通过端口进行1-WIRE总线的通信,代表的传感器为实验系统中的温度传感芯片DS18B20,1-WIRE总线驱动已经完成移植,可通过简单配置即可完成部署。SPI总线与I2C总线为1对多总线,通过程序将总线上的数据以DMA方式传送至缓冲区。串口是一个重要的数据入口,通过RS232或RS485总线收取传感器的数据,也通过DMA的方式将数据传送至缓冲区内。串行异步设备配合DMA形成了传感器层。
第二层为数据接口层。在这一层,我们为不同的设备进行数据封装与传输。数据的传输分为片内缓存区,有线数据传输与无线数据传输的方式。所有数据根据传感器特性使用XML标签进行封装,使用RS485作为有线数据传输的物理层标准,而使用ZigBee作为无线数据传输的物理层标准。对于有线传输方式时,可通过线缆进行电源供电。对于传感网络,选择5V1A的电源参数,可满足10m内的送电需求。无线ZigBee技术是新兴的,面向传感器的低速无线数据传输协议,可完成低成本的智能自组网,在10m距离内非常适合作为传感器数据的无线传输。数据最终被封装在传感器标签内,以XML形式存在缓存区内。这一层由ST公司的具有ARM Cortex-M3内核的STM32F103芯片作为主控芯片及数据接口,其72M-32bit的处理速度对我们的平台十分合适。ZigBee接口使用TI公司的CC2530芯片作为射频接口,使用SPI总线与主控芯片连接。
第三层为网络传送层。使用Davicom公司的DM9000A网卡芯片,以16位外部数据总线形式连接至STM32F103芯片,使用开源的TCP/IP协议栈LWIP作为网络传送的实现形式。我们为传感器提供了主动发送及被动发送两种发送方式。主动发送可以自定ip及端口进行定时传输;也可被动的,当端口被访问时送出传感器信息。