智能家居系统的设计与实现(10大方式)


智能家居系统的设计与实现

一、设计目的

1、根据酷痞Coolpy数据库,相当于一个云平台和Web服务,理解网页控制电源开关的方法和过程,掌握HTML5页面访问与控制的具体协议和通信命令。学会在Coolpy中建立数值型传感器和开关型传感器,并熟悉使用。

2、通过Arduino接收RT5350F开发板得到的Coolpy数据库中的开关传感器的开关状态来控制Arduino上的LED灯的亮灭。

3、通过Arduino获取光强的强度数值,将数值通过RT5350F开发板传给Coolpy数据库中的数值型传感器。

4、通过酷痞数据库的开关传感器的开关控制灯亮灭,并且灯亮时,采集光强并上传数据给酷痞数据库,当灯灭时,不采集光强数据。

5、掌握网络通信和无线通信原理,理解系统实现的具体方案,以及系统控制数据的流向,从而实现智能家居系统实现的目的。

二、设计内容

1、设置IPv4的地址为192.168.1.88,子网掩码为255.255.255.0,点击确定。这样可以确保与嵌入式开发板在同一网段,从而实现网络共享、文件共享。

2、打开浏览器,在地址栏中敲入192.168.1.1,这是嵌入式开发板的ip地址,可自己设置。在里面找到WIFI选项,连入WIFI信号,这里的WIFI信号所使用的是自己的热点。

3、接下来打开我们的串口终端软件,SecureCRT,打开串口终端之后可以对嵌入式开发板进行操作了。主要是操作/mnt目录下的脚本文件。

三、开关控制LED灯

首先给Arduino中烧写入通过上位机给串口发送“1”则小灯亮;通过上位机给串口发送“0”则灯灭的程序。

接下来就要实现能实时获取到酷痞中的开关传感器的状态“0”或者“1”,之后就将酷痞、嵌入式开发板、Arduino开发板三者联系在一起。

上图展示了嵌入式开发板与Arduino开发板通信的三脚,从左往右看,分别是GND、TX、RX。分别与Arduino的GND、0脚、1脚相连。

//Arduino程序:

int led=13; //设置13管脚为led

byte ch;

voidsetup() {
Serial.begin(9600);//设置波特率为9600

pinMode(led,OUTPUT);//设置13号管脚为输出

}

voidloop()

{
if(Serial.available()>0)//判断串口接收到了数据

{
ch=Serial.read();//读取串口的数据

Serial.flush();//清除串口缓存

if(ch=='1')//如果收到‘1’

{

Serial.println("1");//输出1并回车

digitalWrite(led, HIGH);}//灯亮

else if(ch=='0')//如果收到‘0’

{
Serial.println("0");//输出0并回车

digitalWrite(13, LOW);}//灯灭

}

}

脚本程序

while :;

大循环

do

curl -G--data "{}" -H "User-Agent: Fiddler" -H "Content-Type:application/json" -H "U-ApiKey:8aaefde1-9e67-4a2d-a99e-44f644e937a2" -H "Host:172.20.10.11:1337" --http1.1 172.20.10.11:1337/v1.0/hub/5/node/5/datapoint|cut -b 10 >/mnt/1.txt

采集酷痞开关传感器的开关值并存入1.txt中

stty -F/dev/ttyS0 raw speed 9600 min 0 time 5

二者波特率相等,可以进行通信

echo"$(cat /mnt/1.txt)" > /dev/ttyS0

将收到的开关数据值传给串口,使得灯亮或者灯灭

sleep 1

done

四、采集光强数据
先在Arduino中烧入采集光强的信息并打印给串口。特别注意的是,在程序中应该要刷新串口数据,即清空原本缓存在串口中的数据。否则在第一条curl打印的数据中会出现错误。

在脚本程序中,主要是要读取到串口发送过来的数据。这里会有一个常见的错误。不能直接读取串口的数据,而需要将串口的数据值存入一个文本中(有SD卡会方便很多),然后在从文本中读取数据传入酷痞中。

光敏电阻的一脚接入A0模拟接口,另一脚接入5V,再加入一个330欧的电阻,一脚接A0,一脚接GND,从而可以达到采集光强的效果。

//arduino采集光强程序

intsensorPin = A0;//设置A0口为sernsorPin

intsensorValue = 0; //设置光强初始值为0

voidsetup()

{

Serial.begin(9600);//设置波特率为9600

}

void loop()

{

Serial.flush();//清理串口缓存数据

sensorValue = analogRead(sensorPin);//将A0口数据传给变量

Serial.println(sensorValue); //输出光强值

delay(100);

}

脚本文件

while :;

do

stty -F/dev/ttyS0 raw speed 9600 min 0 time 2

设置波特率为9600

cat/dev/ttyS0 > /mnt/3.txt

抓取串口数据存入3.txt中

c=$(echosed -n '1p' /mnt/3.txt)

将3.txt文件中的第一行数据抓取出来

echo $a

curl -d"{\"value\":$c}" -H "User-Agent: Fiddler" -H"Content-Type: application/json" -H "U-ApiKey:8aaefde1-9e67-4a2d-a99e-44f644e937a2" -H "Host:172.20.10.11:1337" --http1.1172.20.10.11:1337/v1.0/hub/8/node/9/datapoints

上传光强数据值

sleep 1

done

对此感兴趣的可以将两个功能合在一起,学习愉快!

智能家居系统的设计与实现

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ892482387,本站将立刻清除。

分享到