python做物联网控制_一步步搭建物联网系统——简单物联网

简单物联网

到这时,我们算搭建了一个简单的REST服务了。接着我们可以简单的做一个最小的物联网系统,将我们的单片机、MCU等等连上网。

arch.jpeg

考虑到如果我们只是单一连接各个节点,那么系统的结构图,同下所示

fullconnected.png

下面的星形结构图类似于我们在接下来所要构建的系统

star.png

一个用于控制真实电器的硬件实物图

hardware.jpg

硬件通信

串口通信

Arduino与Raspberry Pi通过串口通信的方式实现通信,相互传输所需要的数据,Raspberry Pi将资源传于互联网上对应的接口,接口可以在互联网上被访问。Laravel框架构架于服务器之上,将Raspbery Pi获取过来的数据存储于MySQL数据,再以REST服务的方式共享数据,互联网上的其他设备便可以通过网络来访问这些设备。Ajax用于将后台的数据以不需要刷新的方式传递到网站前台,通过HighCharts框架显示给终端用户。

Python

1.在Windows中的串口通常是COM1,COM0等等

pythonser=serial.Serial("COM0",9600)

2.Mac OS系统中位于/dev目录下,名字类似于tty.usbmodem1451。

pythonserial.Serial("/dev/tty.usbmodem1451",9600)

3.在Linux内核的系统中虚拟串口用的节点是ttyACM,位于/dev目录下。

pythonserial.Serial("/dev/ttyACM0",9600)

串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能

的电路,我们称为串行接口电路。

便是打开这个设备,以9600的速率传输数据。

程序框架如下所示:

raspberrypi_flow.png

代码如下:

pythonimport 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"

getjson.png

系统还需要对上面的数据进行处理,只拿其中的结果

origin.png

当改变led的状态后,便可以得到下面的结果

change.png

Ruby

如果你用的是Ruby的话,可以尝试使用serialport

安装

bashsudo gem install serialport

代码大致如下

Rubyrequire 'serialport'

sp = SerialPort.new "/dev/ACM0", 9600

sp.write "1"

注意: 根据相关的系统修改相关的代码。

硬件

Arduino

这样我们在我们的Arduino上所要做的便是,读取串口的结果并控制IO口。

cint ledPort=13;

void setup() {

Serial.begin(9600);

pinMode(ledPort,OUTPUT);

}

int serialData;

void loop() {

String inString = "";

while (Serial.available()> 0)

{

int inChar = Serial.read();

if (isDigit(inChar)) {

inString += (char)inChar;

}

serialData=inString.toInt();

Serial.print(serialData);

}

if(serialData==1){

digitalWrite(ledPort,HIGH);

}else{

digitalWrite(ledPort,LOW);

}

}

如果结果是1的话,就让13口为高电平,也就是让灯亮起来。

继电器

继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

在这里我们可以默认为我们想要为单片机的5V电压控制220V的电器。

最后我们便可以通过些来控制灯的开和关。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值