🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 简单物联网 到这时,我们算搭建了一个简单的REST服务了。接着我们可以简单的做一个最小的物联网系统,将我们的单片机、MCU等等连上网。 ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbd94b949.jpg) 考虑到如果我们只是单一连接各个节点,那么系统的结构图,同下所示 ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbdc7b2d6.jpg) 下面的星形结构图类似于我们在接下来所要构建的系统 ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbe4e7a9b.jpg) 一个用于控制真实电器的硬件实物图 ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbe884390.jpg) ## 硬件通信 ### 串口通信 Arduino与Raspberry Pi通过串口通信的方式实现通信,相互传输所需要的数据,Raspberry Pi将资源传于互联网上对应的接口,接口可以在互联网上被访问。Laravel框架构架于服务器之上,将Raspbery Pi获取过来的数据存储于MySQL数据,再以REST服务的方式共享数据,互联网上的其他设备便可以通过网络来访问这些设备。Ajax用于将后台的数据以不需要刷新的方式传递到网站前台,通过HighCharts框架显示给终端用户。 #### Python 1.在Windows中的串口通常是`COM1`,`COM0`等等 ~~~ ser=serial.Serial("COM0",9600) ~~~ 2.Mac OS系统中位于/dev目录下,名字类似于`tty.usbmodem1451`。 ~~~ serial.Serial("/dev/tty.usbmodem1451",9600) ~~~ 3.在Linux内核的系统中虚拟串口用的节点是ttyACM,位于/dev目录下。 ~~~ serial.Serial("/dev/ttyACM0",9600) ~~~ > 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能 的电路,我们称为串行接口电路。 便是打开这个设备,以9600的速率传输数据。 ~~~ import json import urllib2 import serial import time url="http://www.xianuniversity.com/athome/1" while 1: try: date=urllib2.urlopen(url) result=json.load(date) status=result[0]["led1"] ser=serial.Serial("/dev/ttyACM0",9600) if status==1 : ser.write("1") elif status==0: ser.write("0") time.sleep(1) except urllib2.URLError: print "Bad URL or timeout" ~~~ ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbe926faa.jpg) 系统还需要对上面的数据进行处理,只拿其中的结果 ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbe9a01bf.jpg) 当改变led的状态后,便可以得到下面的结果 ![图像说明文字](https://box.kancloud.cn/2015-08-25_55dbfbea2c7b8.jpg) #### Ruby 如果你用的是Ruby的话,可以尝试使用`serialport` 安装 ~~~ sudo gem install serialport ~~~ 代码大致如下 ~~~ require 'serialport' sp = SerialPort.new "/dev/ACM0", 9600 sp.write "1" ~~~ 注意: 根据相关的系统修改相关的代码。 ### 18.1.2 I2C通信 ## 18.2 硬件 ### 18.2.1 51单片机 > 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。 这里以51单片机为例的原因是,多数大学课程都是以51单片机为主。 ### 18.2.2 Arduino ### 18.2.3 Raspberry Pi 对于搭载GNU/Linux系统的RPi来说,这活就比较轻松了。 ### 18.2.4 ARM > LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。 ~~~ git clone git@gitorious.org:coap-lwip/coap-lwip.git ~~~ [TinyOS CoAP](http://tinyos.stanford.edu/tinyos-wiki/index.php/CoAP) ### 18.2.5 继电器 > 继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 ## 18.3 协议间通讯 当我们有使用CoAP协议的A设备,以及HTTP协议的B设备。这时,就变成一个有意思的话题了。