基于51单片机WiFi控制智能窗帘设计与制作_第1页
基于51单片机WiFi控制智能窗帘设计与制作_第2页
基于51单片机WiFi控制智能窗帘设计与制作_第3页
基于51单片机WiFi控制智能窗帘设计与制作_第4页
基于51单片机WiFi控制智能窗帘设计与制作_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1产品功能分析....................................................1

2设计方案遴选....................................................1

2.1单片机的选择...............................................1

2.2通讯方式的选择.............................................1

2.3系统框图设计...............................................1

3产品硬件设计....................................................2

3.1STC89C52RC单片机核心电路设计..............................2

3.2按键电路设计...............................................2

3.3ESP8266WiFi模块电路设计...................................3

4产品软件设计....................................................4

4.1主程序流程图...............................................4

4.2ESP8266WiFi模块控制程序设计...............................5

4.3上位机APP程序设计.........................................6

4.4产品程序清单...............................................7

5产品使用说明....................................................8

5.1产品装配图.................................................8

5.2产品调试...................................................8

5.3产品使用说明...............................................8

6产品设计技术标准.................................................9

参考资料..........................................................10

附录..............................................................11

附录1元器件清单..............................................11

附录2电路原理图..............................................12

附录3PCB设计图...............................................13

附录4产品实物图..............................................14

附录5主程序代码..............................................16

湖南商务职业技术学院毕业设计

基于51单片机WiFi控制智能窗帘设计与制作

1产品功能分析

该设计具有窗帘控制系统的最基本的功能,可以通过微动开关控制窗帘开

合,在此基本功能的前提下,该智能窗帘还设计了可以通过光照强度控制窗帘

自动开合功能,考虑到使用更加方便,本设计还了采用WiFi模块连接手机APP,

可以用手机APP控制窗帘开合。

2设计方案遴选

2.1单片机的选择

采用STC89C52芯片,STC89C52是一种带8K字节闪烁可编程可擦除只读存

储器的低电压,高性能微处理器。

2.2通讯方式的选择

选择WiFi控制的通讯方式,采用ESP8266串口WiFi模块,该模块可以连

接WiFi热点,并与外部设备进行双向通讯。在此情况下ESP8266可以作为一个

WiFi接口,去连接外部设备,连接后就可以发送和接收数据来控制设备。

2.3系统框图设计

系统组成框图如图1所示。

图1系统组成框图

1

湖南商务职业技术学院毕业设计

3产品硬件设计

3.1STC89C52RC单片机核心电路设计

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片

机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、

晶振电路、复位电路。一个51单片机的最小系统如图2所示。

VCCU3VCCJ?

140

P1.0VCC1

24239

P1.1(AD0)P0.02

KS338

P1.2(AD1)P0.13

437

P1.3(AD2)P0.24

536

P1.4(AD3)P0.35

+C1635

P1.5(AD4)P0.46

10uFRESET734

P1.6(AD5)P0.57

3

1833

P1.7(AD6)P0.68

932

RST(AD7)P0.79

1031

P3.0(RXD)EA/VPP

1130CON9

P3.1(TXD)ALE/PROG

R271229

P3.2(INT0)PSEN

10K1328

P3.3(INT1)(A15)P2.7

1427

P3.4(T0)(A14)P2.6

1526

P3.5(T1)(A13)P2.5

C22301625

P3.6(WR)(A12)P2.4

1724

P3.7(RD)(A11)P2.3

1823

XTAL2(A10)P2.2

z1922

XTAL1(A9)P2.1

H2021

MGND(A8)P2.0

2

C2330189C51/C52

图2最小系统电路图

单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下

重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行

中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开

始执行。

一般的晶振振荡电路都是在一个反相放大器的两端接入晶振,再有两个电

容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量

值就应该等于负载电容,一般的晶振的负载电容为15pF或12.5pF如果再考虑

元件引脚的等效输入电容则两个22pF的电容构成晶振的振荡电路就是比较好

的选择。

3.2按键电路设计

本设计仅采用两个按键:作用是控制窗帘自动开合的启动与暂停,以及

电源开关。电路图如图3,图4所示。

2

湖南商务职业技术学院毕业设计

图3图4

3.3ESP8266WiFi模块电路设计

ESP8266是一个完整且自成体系的WiFi网络解决方案,能够独立运行,

也可以作为slave搭载于其他Host运行。

在搭载应用并作为设备中唯一的应用处理器时,能够直接从外接闪存中启

动。内置的高速缓冲存储器有利于提高系统性能,并减少内存需求。另外一种

情况是,无线上网接入承担WiFi适配器的任务时,可以将其添加到任何基于

微控制器的设计中,连接简单易行,只需通过SPI/SDIO接口或中央处理器AHB

桥接口即可。

强大的片上处理和存储能力,使其可通过GPIO口集成传感器及其他应用的

特定设备,实现了最低前期的开发和运行中最少地占用系统资源。

高度片内集成,包括天线开关balun、电源管理转换器,因此仅需极少的外

部电路,且包括前端模块在内的整个解决方案在设计时将所占PCB空间降到最

低。

装有ESP8266的系统表现出来的领先特征有:节能VoIP在睡眠/唤醒模式

之间的快速切换、配合低功率操作的自适应无线电偏置、前端信号的处理功能、

故障排除和无线电系统共存特性为消除蜂窝/蓝牙/DDR/LVDS/LCD干扰。

ESP8266的三种工作模式

(1)AP模式(模块作为热点,可以发散出wifi信号,实现手机或电脑直接与模

块通讯,实现局域网无线控制)

(2)STA模式(模块通过路由器连接互联网,手机或电脑通过互联网实现对设

备的远程控制)

(3)STA+AP模式(两种模式的共存即可通过互联网控制可实现无缝对接切换)

本设计采用了第一种工作模式,电路原理图如图5所示。

3

湖南商务职业技术学院毕业设计

图5WIFI接口电路

4产品软件设计

4.1主程序流程图

主程序流程图如图6所示。

4

湖南商务职业技术学院毕业设计

图6主程序流程图

4.2ESP8266WiFi模块控制程序设计

使用软件keliuVsion5,C语言编写单片机程序通过esp8266实现单片机与

手机APP的数据通信。通过这个wifi模块进行局域网模拟控制窗帘。

原理:这里没有更改8266的at固件,所以编程让51单片机使用AT指令

一步一步设置wifi模块,让其开启AP模式,也就是热点,设置名字为esp8266

和密码,配置器开启服务器,8080端口,获取当前esp8266的IP地址显示出来,

此时手机打开wifi,连接wifi模块的,打开手机上网络调试助手,输入IP地

址和端口,点击开启客户端,就能够跟8266连接上了,此时可以互相发送数据,

这里就直接通过单片机的串口接收中断来解析对应的命令格式,根据命令来开

5

湖南商务职业技术学院毕业设计

闭窗帘。

4.3上位机APP程序设计

上位机APP开发使用Androidstudio编写代码。

UI界面设计流程:

采用RelativeLayout布局,在下方设计三个TextView和一个EditText,

TextView分别显示“WiFi智能窗帘控制系统”,“自动模式开关“,”手动开

关”,EditText用于使用者输入IP地址与端口号。

接下来设计五个Button,分别用于“关闭自动“,”打开自动“,”打

开”,”关闭”,”停止”。

设计Java代码:

需要Java控制监听五个button事件,对每一次按下次做出数据反馈,将

数据上反馈至单片机控制窗帘开闭。

6

湖南商务职业技术学院毕业设计

4.4产品程序清单

图7产品程序清单

7

湖南商务职业技术学院毕业设计

5产品使用说明

5.1产品装配图

图8产品装配图

5.2产品调试

将元器件电路焊接好,使用万用表检测是否出现短路情况。确保无误后接

通电源,用光源照射光敏电阻,测试自动测光开合功能是否正常。

调试ESP8266WiFi模块,使用AT命令配置WiFi模块,设置模块热点的账

户号密码。

测试APP是否正常运行,连接智能窗帘WiFi信号,控制窗帘开合即可。

5.3产品使用说明

(1)接通电源可使用自动模式:可感知光线强度,光强时控制窗帘关闭,

光弱时控制窗帘打开。

8

湖南商务职业技术学院毕业设计

(2)使用ESP8266串口WIFI模块连接WiFi控制APP,可实现:手动模式:

使用APP连接控制,可手动打开或关闭窗帘。

6产品设计技术标准

[1]J-STD-001E电气与电子组件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E电子组件的可接受性要求

[3]IPC-7711/21电子组件和电路板的返工&返修

[4]GB/T11457-2006信息技术软件工程术语

[5]GB/T8566-2007信息技术软件生存周期过程标准

[6]GB/T8567-2006计算机软件文档编制规范

9

湖南商务职业技术学院毕业设计

参考资料

[1]马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,2003修订版

[2]李广弟等单片机基础北京航空航天出版社,2001.7

10

湖南商务职业技术学院毕业设计

附录

附录1元器件清单

CommentDescriptionDesignatorFootprintLibRefQuantity

Header

Header4X2Header,4-Pin,Dualrow8266HDR2X41

4X2

Header5Header,5-PinbjjkHDR1X5Header51

CapCapacitorC1,C2HDR1X2Cap2

PolarizedCapacitor

CapPol1C3,lb1R.1/.2ACapPol12

(Radial)

Header4Header,4-Pinck1,gmHDR1X4Header42

L324D1LED2.5LED1

Header3Header,3-PindyzPOWER_P3Header31

DIPSwitch,2Position,

SWDIP-2f1SW-PB2.5SWDIP-21

SPST

Res2ResistorR3,xy1AXIAL-0.4Res22

MCUU1DIP40at89c511

DIPSwitch,8Position,ULN2003步

SWDIP-8DIP_SW_8WAY_SMDSWDIP-81

SPST进电机芯片

XTALCrystalOscillatorY1XTAL1_ARCXTAL1

DIPSwitch,2Position,

SWDIP-2使能按键DIP-4SWDIP-21

SPST

Diode1AmpGeneralPurposeDiode

降压二极管DO-411

1N4001Rectifier1N4001

11

湖南商务职业技术学院毕业设计

附录2电路原理图

12

湖南商务职业技术学院毕业设计

附录3PCB设计图

13

湖南商务职业技术学院毕业设计

附录4产品实物图

14

湖南商务职业技术学院毕业设计

15

湖南商务职业技术学院毕业设计

附录5主程序代码

单片机程序

#include"reg51.h"

#defineuintunsignedint

#defineucharunsignedchar

sbitgm=P1^0;

sbitwd1=P1^1;

unsignedcharkongzhi=0;

unsignedcharcodeRUN1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//正转

unsignedcharcodeRUN2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//反转

voidchushihua()

{

IE=0x90;

SCON=0x50;

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

TCON=0x40;

TR1=1;

ES=1;

EA=1;

}

//串行口连续发送char型数组,遇到终止号/0将停止

voidfasongshuju(uchar*str)

{

while(*str!='\0')

{

SBUF=*str;

while(!TI);//等待发送完成信号(TI=1)出现

TI=0;

str++;

}

}

//延时函数

voidyanshi(uintttt)

{

while(ttt--);

}

16

湖南商务职业技术学院毕业设计

//ESP8266上电初始化

voidwifichushihua()

{

fasongshuju("AT+CIPMUX=1\r\n");

yanshi(50000);

fasongshuju("AT+CIPSERVER=1,8080\r\n");

}

/******延时函数****************/

voiddelay(unsignedintt)

{

unsignedintk;

while(t--)

{

for(k=0;k<60;k++)//用for的空循环延长程序的执行时间

{}

}

}

//步进电机驱动正转

voidzz()

{

unsignedchari;

for(i=0;i<8;i++)//一个周期转3.75*8=30度

{

P2=RUN1[i]&0x1f;//取数据

delay(2);//调节转速

}

}

//步进电机驱动反转

voidfz()

{

unsignedchari;

for(i=0;i<8;i++)//一个周期转3.75*8=30度

{

P2=RUN2[i]&0x1f;//取数据

delay(2);//调节转速

}

17

湖南商务职业技术学院毕业设计

}

//传感器自动控制的

voidzidong()

{

if(gm==0)//有光的时候

{

zz();

}

else//无光的时候

{

fz();

}

}

voidmain()

{

yanshi(50000);

yanshi(5000);

chushihua();

wifichushihua();

while(1)

{

if(kongzhi==1)

{

zz();

}

if(kongzhi==2)

{

fz();

}

if(kongzhi==3)

{

P2=0xff;

}

if(kongzhi==4)

18

湖南商务职业技术学院毕业设计

{

zidong();

}

if(wd1==0)

{

kongzhi=3;

}

}

}

/*

串口服务子函数

*/

voidtime()interrupt4

{

if(RI)

{

RI=0;

switch(SBUF)

{

case'a':kongzhi=1;break;//接收到安卓端的'a'字符

case'b':kongzhi=2;break;//接收到安卓端的'b'字符

case'c':kongzhi=3;break;//接收到安卓端的'b'字符

case'd':kongzhi=4;break;//接收到安卓端的'c'字符

/*

case'e':guangbiaozhiwei=1;P2=0xff;

break;//接收到安卓端的'd'字符

*/

}

}

}

19

湖南商务职业技术学院毕业设计

上位机APP程序代码

APP布局程序:

<RelativeLayoutxmlns:android="/apk/res/android"

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".Main">

<Button

android:id="@+id/guanbizidongbtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/dakaizidong"

android:layout_alignBottom="@+id/dakaizidong"

android:layout_alignParentRight="true"

android:text="关闭自动"

android:textSize="20sp"/>

<TextView

android:id="@+id/textView3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:text="WiFi智能窗帘控制系统"

android:textSize="30sp"

/>

<EditText

android:id="@+id/iped"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/textView3"

android:layout_centerHorizontal="true"

android:ems="10"

android:text="12:8080"

android:textSize="25sp"/>

<Button

20

湖南商务职业技术学院毕业设计

android:id="@+id/dakaizidong"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@+id/iped"

android:layout_marginTop="122dp"

android:text="打开自动"

android:textSize="20sp"/>

<TextView

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_above="@+id/guanbizidongbtn"

android:layout_centerHorizontal="true"

android:text="自动模式开关"

android:textSize="30sp"/>

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/dakaizidong"

android:layout_centerHorizontal="true"

android:layout_marginTop="74dp"

android:text="手动开关"

android:textSize="30sp"

/>

<Button

android:id="@+id/dakaibtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_below="@+id/textView1"

android:text="打开"

android:textSize="20sp"/>

<Button

android:id="@+id/guanbibtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/dakaibtn"

21

湖南商务职业技术学院毕业设计

android:layout_alignBottom="@+id/dakaibtn"

android:layout_alignParentRight="true"

android:text="关闭"

android:textSize="20sp"/>

<Button

android:id="@+id/tingzhibtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:text="停止"

android:textSize="20sp"/>

</RelativeLayout>

APPJava程序设计:

packagecom.example.wificontrol;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.PrintWriter;

import.Socket;

importjava.util.ArrayList;

importjava.util.Timer;

importjava.util.TimerTask;

importandroid.app.Activity;

importandroid.app.PendingIntent;

importandroid.content.ContentValues;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.content.SharedPreferences;

importandroid.content.SharedPreferences.Editor;

importandroid.content.pm.ActivityInfo;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.telephony.TelephonyManager;

importandroid.telephony.gsm.SmsManager;

importandroid.util.Log;

22

湖南商务职业技术学院毕业设计

importandroid.view.KeyEvent;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.Window;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.TextView;

importandroid.widget.Toast;

publicclassMainActivityextendsActivity{

EditTextIPText;

Buttondakaizidongbtn,guanbizidongbtn;

Buttondakaibtn,guanbibtn;

Buttontingzhibtn;

privateContextmContext;

privatebooleanisConnecting=false;

privatebooleanonflag=false;

privateThreadmThreadClient=null;

privateSocketmSocketClient=null;

staticBufferedReadermBufferedReaderServer=null;

staticPrintWritermPrintWriterServer=null;

staticInputStreammBufferedReaderClient=null;

staticPrintWritermPrintWriterClient=null;

privateStringrecvMessageClient="";

privateStringrecvMessageServer="";

@Override

protectedvoidonCreate(BundlesavedInstanceState){

//Log.v(tag,"log---------->onCreate!");

super.onCreate(savedInstanceState);

//requestWindowFeature(Window.FEATURE_NO_TITLE);

//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.activity_main);

mContext=this;

IPText=(EditText)findViewById(R.id.iped);

//按键获取

dakaizidongbtn=(Button)findViewById(R.id.dakaizidong);

guanbizidongbtn=(Button)findViewById(R.id.guanbizidongbtn);

dakaibtn=(Button)findViewById(R.id.dakaibtn);

guanbibtn=(Button)findViewById(R.id.guanbibtn);

23

湖南商务职业技术学院毕业设计

tingzhibtn=(Button)findViewById(R.id.tingzhibtn);

dakaibtn.setOnClickListener(newdakai());

guanbibtn.setOnClickListener(newguanbi());

dakaizidongbtn.setOnClickListener(newdakaizidong());

guanbizidongbtn.setOnClickListener(newguanbizidong());

tingzhibtn.setOnClickListener(newtingzhi());

IPText.setText("12:8080");

lianjie();

}

classdakaiimplementsOnClickListener

{

@Override

publicvoidonClick(Viewv){

if(isConnecting&&mSocketClient!=null){

newThread(){

publicvoidrun(){

Stringoutput="a";

try{

mPrintWriterClient.print(output);//?????????????

mPrintWriterClient.flush();

}

catch(Exceptione){

//TODO:handleexception

Toast.makeText(mContext,"通讯尚未",

Toast.LENGTH_SHORT).show();

24

湖南商务职业技术学院毕业设计

}

};

}.start();

}

if(mSocketClient==null){

Toast.makeText(mContext,"未连接,请退出之后先连接wifi再打

开APP",Toast.LENGTH_SHORT).show();

}

}

}

classguanbiimplementsOnClickListener

{

@Override

publicvoidonClick(Viewv){

if(isConnecting&&mSocketClient!=null){

newThread(){

publicvoidrun(){

Stringoutput="b";

try{

mPrintWriterClient.print(output);//?????????????

mPrintWriterClient.flush();

}

catch(Exceptione){

//TODO:handleexception

Toast.makeText(mContext,"手机通信权限未开放"+

e.getMessage(),

Toast.LENGTH_SHORT).show();

}

};

}.start();

25

湖南商务职业技术学院毕业设计

}

if(mSocketClient==null){

Toast.makeText(mContext,"未连接,请退出之后先连接wifi再打

开APP",Toast.LENGTH_SHORT).show();

}

}

}

classtingzhiimplementsOnClickListener

{

@Override

publicvoidonClick(Viewv){

if(isConnecting&&mSocketClient!=null){

newThread(){

publicvoidrun(){

Stringoutput="c";

try{

mPrintWriterClient.print(output);//?????????????

mPrintWriterClient.flush();

}

catch(Exceptione){

//TODO:handleexception

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论