0 项目说明
开源物联网系统设计
提示:适合用于课程设计或毕业设计,工作量达标,源码开放
1 摘要
介绍了以REST服务为核心、单片机、ARM开发板而辅助的物联网系统的结构组成及工作原理,提供了相应的软件代码及硬件结构。首先研究了不同服务框架的区别,包括不同语言间开发的优势及劣势,之后重点以REST服务为核心构建系统。本设计中,单片机与ARM开发板通过串口通信的方式实现通信,相互传输所需要的数据,ARM开发板将资源传于互联网上对应的接口,接口可以在互联网上被访问。将ARM开发板获取过来的数据存储于MySQL数据,再以REST服务的方式共享数据,互联网上的其他设备便可以通过网络来访问这些设备。系统分离了软件、硬件的耦合,不仅可以方便系统开发,也可以方便由不同的硬件替换相应的组成,使之更容易理解,同时可以实现更多设备的连接,以实现真正的物联。
2 设计内容
物联网的核心也就是网络服务,而网络服务在某种意义上来说,就是需要打造一 个多平台的通信协议,在使机器、家电、设备等连上计算机网络。基本的物联 网系统,不仅能控制设备,还可以在远程查看状态。而复杂的物联网系统可以让 互联网上的设备之间实现互联与通信,也就是物联网的最终目标所在——使物体与 物体之间的交互成为可能,不需要人为去干预。
系统采用的结构是: Arduino+Raspberry Pi+Laravel+JSON+RESTful+Ajax+Python+HighCharts
Arduino与Raspberry Pi通过串口通信的方式实现通信,相互传输所需要的数据, Raspberry Pi将资源传于互联网上对应的接口,接口可以在互联网上被访问。 Laravel框架构架于服务器之上,将Raspbery Pi获取过来的数据存储于MySQL数 据,再以REST服务的方式共享数据,互联网上的其他设备便可以通过网络来访问 这些设备。Ajax用于将后台的数据以不需要刷新的方式传递到网站前台,通过 HighCharts框架显示给终端用户。
Arduino UNO用的处微控制器是Atmega328,它与Arduino芯片的对应关系如下所示
2.1 3.1.硬件设计
Raspberry Pi
Raspberry Pi开发板在这里主要工作有:
与Arduino开发板,通过USB线连接。
可以直接运行Debian GNU/Linux系统,通过网线上网,并从服务器中读取数据,
通过Python语言接收、发送串口数据。
2.2 软件设计
在本地我们需要解决的问题可以如下描述,Arduino开发板从串口一直读取数据, Raspberry Pi从URL中验证数据、解析数据,再将数据发送到串口,我们可以用下面的伪代码来描述:
arduino:
begin
repeat
wait(serial.open)
data:=receive_data()
led_status:=parse(data)
if led_status
oped(led.id)
util false
end
raspberrypi:
begin
repeat
json:=get_data(url)
if validate(json).success()
data:=parse(json)
serial.write(data)
util false
end