作者:山东理工大学 王守谦 侯金星 孙建东
指导教师:王建军
作品简介
一、研究目的
基于单片机的数据采集和控制技术目前已经得到了很好的发展,但对于在恶劣环境下的监测技术、多地域分布式数据采集技术等方面还存在很多难题,没有得到很好地解决。本研究中,我们将IAP15F2K61S2通过网络控制芯片接入互联网,通过编制单片机和服务器之间的网络通信协议,实现了通过数据中心网站来控制被控设备,并将由单片机采集到的测量数据实时存储到远端服务器数据中心。采用我们提出的解决方案,可以实现更加方便、快捷和高效的采集远程测量数据及控制被控对象,从而很好地解决了多地点测量及恶劣环境下的测量等难题。
二、系统说明
图1中,IAP15F2K61S2单片机开发板通过SPI总线与网络控制芯片ENC28J60相连,C语言编程通过模拟SPI时序的方式完成单片机与网络模块的通信,网络模块可通过固定IP或者DHCP的方式配置本地网络,然后再通过RJ-45双绞线接入路由器或其他上级网关设备,这样,只需要将其上级网关设备接入网络,单片机即可同时接入到以太网。
图2中,单片机接入到以太网以后,即可通过单片机编程操作温度传感器DS18B20采集到温度数据,然后将传感器数据通过HTTP请求的方式提交到远端托管的数据服务器,数据服务器会根据服务器端设定存储数据到MYSQL数据库,此时,用户可以通过任意可以上网的设备(手机、笔记本电脑、台式机电脑)查看数据报表;与此同时,用户也可以通过控制中心网站,打开远程控制操作页面,对单片机上的客户端设备进行操作,通过模拟开关操作,我们可以方便的操作本地浏览器控制机远程开关的开断。
三、实现功能及操作方法
1、功能:单片机设备接入以太网,将测量数据保存到远端数据服务器,用户可以通过本地浏览器间接控制接入网络的单片机设备。
2、操作:
(1)、注册数据中心账号,申请HTTP请求接口。
(2)、根据HTTP请求接口改写单片机程序,编译烧录。
(3)、将单片机在任意地点通过网络芯片接入以太网。
(4)、任意地点、上网设备打开数据中心网站管理你的单片机设备。
四、开发的作品图片
图3是由51单片机开发板开发的客户端,可实现本地被测对象的数据采集和控制技术。
这里我们通过一个5V转接3V的电源模块满足两个设备的供电需求,单片机P03~P07口通过杜邦线与网络模块相应SPI总线相连,网络模块通过RJ-45接口的双绞线连接路由器,路由器通过无线网络接入以太网,这样即可实现单片机客户端接入以太网。
平台选型说明
主要包括一些部件:
(1)单片机开发板(以STC15F2K61S2芯片为控制核心)
(2)网络模块(ENC28J60网络控制芯片)
(3)温度传感器(DS18B20温度传感器芯片)
(4)RJ-45接口双绞线(普通有线网络双绞线)
(5)LINUX VPS服务器(提供WEB服务和HTTP接口的远端数据中心服务器)
设计说明
一、设计方案:
硬件设计:片上资源至少2K RAM+16K ROM的51单片机,连接10M带宽的网卡模块,即可在任意地点,通过任意方式接入互联网。
使用方法:一旦单片机设备通过网卡模块接入网络,对于用户来讲,只需要到指定数据中心网站注册登录,并添加设备和传感器,即可获取API地址,查看API使用方法即可在单片机上编写对应设备的操作方法,这样,数据中心就成为了一个多用户的使用平台。
二、具体的设计内容
(一)单片机客户端系统接口图:
网络控制芯片的SPI总线接口与单片机P0口的高5位线相连,使用IAP15F2K60S2单片机模拟SPI总线时序,与ENC28J60通信,ENC28J60则通过与一个RJ-45接口通过普通双绞线接入到以太网网络中。
(二)、单片机和网络服务器的通信协议编程技术实现:
1.高性能的IAP15F系列单片机
IAP15F2K61S2单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速、低功耗的新一代8051单片机,指令代码完全兼容传统8051,而速度快8~12倍,内部集成硬件高速SPI(Serial Peripheral Interface)接口、2 KB EEPROM、A/D转换模块和MAX810专用复位电路。工作电压2.4~3.8 V,因此可用电池工作,并可长时间工作。器件在少于6 μs的时间内可以从低功耗模式迅速唤醒。IAP15F2K61S2的超小封装、高度集成、精简外部电路可设计出更小的节点,超低的价格可以大规模铺设传感器节点。IAP15F2K61S2单片机的这些特征,非常适合应用在对单片机性能有一定要求的网络应用中。 下图为单片机选型参考表
2.嵌入式TCP/IP 协议栈
UIP将TCP/IP协议栈的实现仅仅使用几百字节代码大小和RAM即可实现了TCP/IP协议栈的大部分常用功能,而传统的TCP/IP协议栈无论是代码容量还是内存占用上都需要大量硬件资源,因而无法使用在小型 8 或16位系统,UIP通过少量的代码实现了TCP/IP协议栈的一些基本功能,其中比如UDP、ARP,还有IP、ICMP和TCP协议,全部有几百字节的C语言代码编写实现。
本文经过对UIP协议栈的进一步优化,代码容量缩减到1.2KB之小,RAM占用更甚是缩减到了500B以内,这样就更加有利于充分利用IAP15F2K61S2单片机片上资源了。
3.UIP 设备驱动接口和网络应用接口
UIP 是一个仅包含三层网络层核心协议的协议栈,uIP 自身不包含任何类型的底层网络驱动和上层应用程序,它只提供接口函数供用户开发使用。因此为了完成与网络设备的交互,用户必须根据网络设备的类型,在uIP 中自行实现对底层网络设备的驱动。
具体的编程设计如下:
① 设备驱动接口编程
本次使用的硬件设备是IAP15F系列单片机和ENC28J60网络模块,获取UIP源码后需要将设备将ENC28J60的驱动程序与UIP的接口进行整合,具体操作如下: