基于STM32无线WiFi电磁门锁控制系统设计与实现_第1页
已阅读1页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

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

目录

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

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

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

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

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

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

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

3.2WiFi电路.....................................................3

3.3继电器电路...................................................3

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

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

4.2上位机APP程序设计............................................4

4.3产品程序清单..................................................6

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

5.1产品装配图....................................................6

5.2产品调试......................................................6

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

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

参考资料.............................................................8

附录.................................................................9

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

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

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

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

附录5程序代码..................................................13

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

基于STM32无线WiFi电磁门锁控制系统设计与实现

1产品功能分析

产品基于STM32无线WiFi电磁门锁控制为主体,通过手机APP连接WiFi

模块建立数据通信连接,在通过手机APP输入密码控制继电器开关,通过继电

器的开关性能控制电磁门锁,输入密码正确时,锁打开,输入密码错误时,提

示密码错误,忘记密码时,可以在手机APP上更改密码。

2设计方案遴选

2.1单片机的选择

本设计主控制器采用的STM32F103是一种嵌入式-微控制器。通常应用于各

种电力电子系统,且具有更高的处理速度和内置外设,来实现控制和处理功能。

2.2通讯方式的选择

ESP8266是一款超低功耗的WiFi透传模块,拥有超低能耗技术,专为移

动设备和物联网应用设计,可将用户的家电设备连接到Wi-Fi无线网络上,进

行互联网或局域网通信,并且ESP8266WiFi模块使用简单。

2.3系统框图设计

本产品由STM32F103c8t6单片机电路+WiFi模块电路+继电器电磁锁电路+电

源电路组成。系统框图如图1所示。

1

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

图1系统框图设计

图1系统框图

3产品硬件设计

3.1STM32单片机核心电路设计

STM32是具有良好性能的嵌入式芯片,在STM32单片机的应用当中,其工

作原理和硬件电路设计十分重要。如图2所示,是本设计的单片机核心板原理

图。

图2单片机核心板电路

2

图2STM32单片机电路

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

3.2WiFi电路

通过APP连接WiFi控制继电器打开电磁锁。WIFI电路原理如图3所示。

图3WiFi电路原理图

3.3继电器电路

继电器(relay)是一种电控制器件,控制电磁锁,是当输入量的变化达到

规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。继

电器电路如图4所示。

图4继电器电路原理图

3

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

4产品软件设计

4.1主程序流程图

系统完成初始化,等待接收移动端通过WiFi传输的密码数值,核对密码数

值,如果正确,打开电磁锁,否则重新接收数值。流程图如图5所示。

继电器电磁锁电路

图5主程序流程图

4.2上位机APP程序设计

通过手机连接WiFi,打开控制电磁门锁。其中包括WIFI连接,输入密码,

发送密码,更改密码等操作,本设计使用安卓的开发环境完成。上位机程序流

程图如图6所示,操作界面如图7所示。

4

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

图6上位机程序流程图

图7上位机APP操作界面

5

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

4.3产品程序清单

产品包括的程序文件见表1。

表1:产品程序清单

头文件功能

main.c对各个模块进行初始化工作,运行调度器

chuankou.c连接WiFi串口

Delay.c实现系统的延时功能

Sys.c定义时钟的配置、IO配置、中断的配置

5产品使用说明

5.1产品装配图

产品装配图如图8所示。

图8产品装配图

5.2产品调试

检查焊接在万能板上的单片机系统所有元器件,然后需要对每一个焊点进

行仔细检查,确保没有虚焊漏焊等。使用万能表进行检测产品电路,查看各焊

点连接状况是否合格,再检查各电源线与地线是否有短路的状态。然后对产品

进行上电检验。成功后,将编写的程序烧录到单片机之中。

6

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

5.3产品使用说明

1、连接电源。

2、按下STM32f103c8t6单片机最小系统板上的复位键。

3、通过手机连接WiFi。

4、通过手机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计算机软件文档编制规范

7

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

参考资料

[1]谭淑梅.简析STM32单片机原理及硬件电路设计[J].大庆师范学院学报,2014,34(6):21-

23.

[2]王晓彦.STM32单片机原理及硬件电路设计[J].南方农机,2020,51(14):2.

[3]周江.STM32单片机原理及硬件电路设计研究[J].数字技术与应用,2015(11):1.

8

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

附录

附录1元器件清单

元器件数量

STM32f103c8t6单片机最小系统板1

DC5V电源座1

ESP8266串口WiFi模块1

降压二极管1

12V电磁锁1

12V适配器1

12V电源座1

NPN驱动三极管1

继电器1

电阻1

排针2

9

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

附录2电路原理图

10

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

附录3PCB设计图

11

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

附录4产品实物图

12

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

附录5程序代码

#include"stm32f10x.h"

#include"sys.h"

#include"delay.h"

#include"chuankou.h"

#defineuintunsignedint

voiddelayziji(uinttttt)

{

while(tttt--);

}

voidnvic()

{

//STM32时钟初始化配置的

NVIC_InitTypeDefnvic_init;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

nvic_init.NVIC_IRQChannel=DMA1_Channel5_IRQn;

nvic_init.NVIC_IRQChannelPreemptionPriority=0;

nvic_init.NVIC_IRQChannelSubPriority=0;

nvic_init.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&nvic_init);

}

intmain()

{

//chushihua();

delayziji(50000);

delayziji(50000);//缓冲一下保持程序的稳定

SystemInit();

nvic();

chuankou();

chushihua();//配置好WiFi的端口号是8080

while(1)

{

13

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

chuankou_jieshou();

}

}

14

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

APP程序代码

MainActivity:

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;

importandroid.view.KeyEvent;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.Window;

importandroid.widget.Button;

importandroid.widget.EditText;

15

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

importandroid.widget.TextView;

importandroid.widget.Toast;

publicclassMainActivityextendsActivity{

EditTextIPText;

Buttonfasongbtn;

Buttonmimashezhibtn;

EditTextmimaed;

SharedPreferencessharedPreferences;

SQLiteDatabasedb;

SQLhelper;

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_LANDSCA

PE);

setContentView(R.layout.activity_main);

helper=newSQL(MainActivity.this);

db=helper.getWritableDatabase();

mContext=this;

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

16

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

//按键获取

fasongbtn=(Button)findViewById(R.id.fasongbutton7);

fasongbtn.setOnClickListener(newfasong());

mimaed=(EditText)findViewById(R.id.editText1);

mimashezhibtn=(Button)findViewById(R.id.mimashezhibutton1);

mimashezhibtn.setOnClickListener(newmimashezhi());

IPText.setText("12:8080");

forstrun();

lianjie();

}

privatevoidforstrun(){

sharedPreferences=this.getSharedPreferences("share",

MODE_PRIVATE);

booleanisFirstRun=

sharedPreferences.getBoolean("isFirstRun",true);

Editoreditor=sharedPreferences.edit();

if(isFirstRun)

{

firstdb();

editor.putBoolean("isFirstRun",false);

mit();

}

}

privatevoidfirstdb(){

db=helper.getWritableDatabase();

ContentValuesfirstzhi=newContentValues();

firstzhi.put("mi","123456");

db.insert("mima",null,firstzhi);

db.close();

}

classmimashezhiimplementsOnClickListener

{

17

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

@Override

publicvoidonClick(Viewv){

//TODO自动生成的方法存根

Intentintent=newIntent(MainActivity.this,Xiugaimima.class);

startActivity(intent);

}

}

classfasongimplementsOnClickListener//登录按键

{

@Override

publicvoidonClick(Viewarg0)

{

Stringstr="";

Stringstr1="";

Cursorcursor=db.query("mima",newString[]{"mi"},

"_id=1",null,null,null,null);

while(cursor.moveToNext()){

//查到后的操作,这里将输出显示在文本中

str=cursor.getString(cursor.getColumnIndex("mi"));

}

str1=mimaed.getText().toString().trim();

//Objectstr;

if(str1.equals(str))

{

if(isConnecting&&mSocketClient!=null){

newThread(){

publicvoidrun(){

//放你的代码

Stringoutput="a";

try{

mPrintWriterClient.print(output);//发送数据

mPrintWriterClient.flush();

}

18

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

catch(Exceptione){

//TODO:handleexception

Toast.makeText(mContext,"权限未开放"+

e.getMessage(),

Toast.LENGTH_SHORT).show();

}

};

}.start();

}

if(mSocketClient==null){

Toast.makeText(mContext,"未连接",

Toast.LENGTH_SHORT).show();

}

Toast.makeText(MainActivity.this,"密码正确",

Toast.LENGTH_SHORT).show();

}

else

{

Toast.makeText(MainActivity.this,"密码是错误的",1).show();

}

}

}

privatevoidlianjie(){

if(isConnecting)

{

//beerlianjiexianshi.setText("通信状态:已连接");

isConnecting=false;

try{

if(mSocketClient!=null)

{

mSocketClient.close();

19

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

mSocketClient=null;

mPrintWriterClient.close();

mPrintWriterClient=null;

}

}catch(IOExceptione){

e.printStackTrace();

}

mThreadCerrupt();

IPText.setEnabled(true);

}

else

{

isConnecting=true;

IPText.setEnabled(false);

mThreadClient=newThread(mRunnable);

mThreadClient.start();

//beerlianjiexianshi.setText("通信状态:已连接");

}

}

//线程:监听服务器发来的消息

privateRunnablemRunnable=newRunnable()

{

publicvoidrun()

{

//StringmsgText="54:8080";

StringmsgText=IPText.getText().toString();

if(msgText.length()<=0)

{

//Toast.makeText(mContext,"IP不能为空!",

Toast.LENGTH_SHORT).show();

recvMessageClient="IPcan'tbeempty!\n";//消息换行

Messagemsg=newMessage();

msg.what=1;

20

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

mHandler.sendMessage(msg);

return;

}

intstart=msgText.indexOf(":");

if((start==-1)||(start+1>=msgText.length()))

{

recvMessageClient="IPaddressiserror!\n";//消息换行

Messagemsg=newMessage();

msg.what=1;

mHandler.sendMessage(msg);

return;

}

StringsIP=msgText.substring(0,start);

StringsPort=msgText.substring(start+1);

intport=Integer.parseInt(sPort);

Log.d("gjz","IP:"+sIP+":"+port);

try

{

//连接服务器

mSocketClient=newSocket(sIP,port);//portnum

//取得输入、输出流

mBufferedReaderClient=mSocketClient.getInputStream();

mPrintWriterClient=new

PrintWriter(mSocketClient.getOutputStream(),true);

recvMessageClient="connectedtoserver!\n";//消息换行

Messagemsg=newMessage();

msg.what=1;

mHandler.sendMessage(msg);

//break;

}

catch(Exceptione)

{

recvMessageClient="connectingIPiserror:"+

21

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

e.toString()+e.getMessage()+"\n";//消息换行

Messagemsg=newMessage();

msg.what=1;

mHandler.sendMessage(msg);

return;

}

byte[]buffer=newbyte[1024];

intcount=0;

while(isConnecting)

{

try

{

mBufferedReaderClient.read(buffer);

Messagemessage=newMessage();//通知界面

message.what=2;

message.obj=buffer;

mHandler.sendMessage(message);

//if(mBufferedReaderClient.read()==1)

//{

//Messagemsg=newMessage();//通知界面

//msg.what=3;

//msg.obj=buffer;

//mHandler.sendMessage(msg);

//

//}

}

catch(Exceptione)

{

}

}

}

};

22

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

HandlermHandler=newHandler()

{

publicvoidhandleMessage(Messagemsg)

{

super.handleMessage(msg);

switch(msg.what)

{

}

}

};

publicvoidonDestroy(){

super.onDestroy();

if(isConnecting)

{

isConnecting=false;

try{

if(mSocketClient!=null)

{

mSocketClient.close();

mSocketClient=null;

mPrintWriterClient.close();

mPrintWriterClient=null;

}

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

mThreadCerrupt();

}

}

23

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

@Override

publicbooleanonKeyDown(intkeyCode,KeyEventevent)

{

if(keyCode==KeyEvent.KEYCODE_BACK)

{

MainActivity.this.finish();

}

returnfalse;

}

}

SQL:

packagecom.example.wificontr

温馨提示

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

评论

0/150

提交评论