首页 > 编程知识 正文

智能家居系统设计与实现文献综述,智能家居的系统设计

时间:2023-05-05 09:58:36 阅读:247459 作者:4701

一、设计目的

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=$(echo`sed -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




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



使用 DataAnt 监控 Apache APISIX的原理解析计算机毕业设计ssm散酒营销系统w5at6系统+程序+源码+lw+远程部署linux下的计划任务——周期性执行的定时任务-linux运维

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。