基于STM32無線WiFi電磁門鎖控制系統(tǒng)設(shè)計與實現(xiàn)_第1頁
基于STM32無線WiFi電磁門鎖控制系統(tǒng)設(shè)計與實現(xiàn)_第2頁
基于STM32無線WiFi電磁門鎖控制系統(tǒng)設(shè)計與實現(xiàn)_第3頁
基于STM32無線WiFi電磁門鎖控制系統(tǒng)設(shè)計與實現(xiàn)_第4頁
基于STM32無線WiFi電磁門鎖控制系統(tǒng)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

目錄

1產(chǎn)品功能分析......................................................1

2設(shè)計方案遴選......................................................1

2.1單片機(jī)的選擇.................................................1

2.2通訊方式的選擇...............................................1

2.3系統(tǒng)框圖設(shè)計.................................................1

3產(chǎn)品硬件設(shè)計......................................................2

3.1STM32單片機(jī)核心電路設(shè)計......................................2

3.2WiFi電路.....................................................3

3.3繼電器電路...................................................3

4產(chǎn)品軟件設(shè)計......................................................4

4.1主程序流程圖..................................................4

4.2上位機(jī)APP程序設(shè)計............................................4

4.3產(chǎn)品程序清單..................................................6

5產(chǎn)品使用說明......................................................6

5.1產(chǎn)品裝配圖....................................................6

5.2產(chǎn)品調(diào)試......................................................6

5.3產(chǎn)品使用說明..................................................7

6產(chǎn)品設(shè)計技術(shù)標(biāo)準(zhǔn)...................................................7

參考資料.............................................................8

附錄.................................................................9

附錄1元器件清單.................................................9

附錄2電路原理圖................................................10

附錄3PCB設(shè)計圖.................................................11

附錄4產(chǎn)品實物圖................................................12

附錄5程序代碼..................................................13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

基于STM32無線WiFi電磁門鎖控制系統(tǒng)設(shè)計與實現(xiàn)

1產(chǎn)品功能分析

產(chǎn)品基于STM32無線WiFi電磁門鎖控制為主體,通過手機(jī)APP連接WiFi

模塊建立數(shù)據(jù)通信連接,在通過手機(jī)APP輸入密碼控制繼電器開關(guān),通過繼電

器的開關(guān)性能控制電磁門鎖,輸入密碼正確時,鎖打開,輸入密碼錯誤時,提

示密碼錯誤,忘記密碼時,可以在手機(jī)APP上更改密碼。

2設(shè)計方案遴選

2.1單片機(jī)的選擇

本設(shè)計主控制器采用的STM32F103是一種嵌入式-微控制器。通常應(yīng)用于各

種電力電子系統(tǒng),且具有更高的處理速度和內(nèi)置外設(shè),來實現(xiàn)控制和處理功能。

2.2通訊方式的選擇

ESP8266是一款超低功耗的WiFi透傳模塊,擁有超低能耗技術(shù),專為移

動設(shè)備和物聯(lián)網(wǎng)應(yīng)用設(shè)計,可將用戶的家電設(shè)備連接到Wi-Fi無線網(wǎng)絡(luò)上,進(jìn)

行互聯(lián)網(wǎng)或局域網(wǎng)通信,并且ESP8266WiFi模塊使用簡單。

2.3系統(tǒng)框圖設(shè)計

本產(chǎn)品由STM32F103c8t6單片機(jī)電路+WiFi模塊電路+繼電器電磁鎖電路+電

源電路組成。系統(tǒng)框圖如圖1所示。

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖1系統(tǒng)框圖設(shè)計

圖1系統(tǒng)框圖

3產(chǎn)品硬件設(shè)計

3.1STM32單片機(jī)核心電路設(shè)計

STM32是具有良好性能的嵌入式芯片,在STM32單片機(jī)的應(yīng)用當(dāng)中,其工

作原理和硬件電路設(shè)計十分重要。如圖2所示,是本設(shè)計的單片機(jī)核心板原理

圖。

圖2單片機(jī)核心板電路

2

圖2STM32單片機(jī)電路

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

3.2WiFi電路

通過APP連接WiFi控制繼電器打開電磁鎖。WIFI電路原理如圖3所示。

圖3WiFi電路原理圖

3.3繼電器電路

繼電器(relay)是一種電控制器件,控制電磁鎖,是當(dāng)輸入量的變化達(dá)到

規(guī)定要求時,在電氣輸出電路中使被控量發(fā)生預(yù)定的階躍變化的一種電器。繼

電器電路如圖4所示。

圖4繼電器電路原理圖

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

4產(chǎn)品軟件設(shè)計

4.1主程序流程圖

系統(tǒng)完成初始化,等待接收移動端通過WiFi傳輸?shù)拿艽a數(shù)值,核對密碼數(shù)

值,如果正確,打開電磁鎖,否則重新接收數(shù)值。流程圖如圖5所示。

繼電器電磁鎖電路

圖5主程序流程圖

4.2上位機(jī)APP程序設(shè)計

通過手機(jī)連接WiFi,打開控制電磁門鎖。其中包括WIFI連接,輸入密碼,

發(fā)送密碼,更改密碼等操作,本設(shè)計使用安卓的開發(fā)環(huán)境完成。上位機(jī)程序流

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

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

圖6上位機(jī)程序流程圖

圖7上位機(jī)APP操作界面

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

4.3產(chǎn)品程序清單

產(chǎn)品包括的程序文件見表1。

表1:產(chǎn)品程序清單

頭文件功能

main.c對各個模塊進(jìn)行初始化工作,運行調(diào)度器

chuankou.c連接WiFi串口

Delay.c實現(xiàn)系統(tǒng)的延時功能

Sys.c定義時鐘的配置、IO配置、中斷的配置

5產(chǎn)品使用說明

5.1產(chǎn)品裝配圖

產(chǎn)品裝配圖如圖8所示。

圖8產(chǎn)品裝配圖

5.2產(chǎn)品調(diào)試

檢查焊接在萬能板上的單片機(jī)系統(tǒng)所有元器件,然后需要對每一個焊點進(jìn)

行仔細(xì)檢查,確保沒有虛焊漏焊等。使用萬能表進(jìn)行檢測產(chǎn)品電路,查看各焊

點連接狀況是否合格,再檢查各電源線與地線是否有短路的狀態(tài)。然后對產(chǎn)品

進(jìn)行上電檢驗。成功后,將編寫的程序燒錄到單片機(jī)之中。

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

5.3產(chǎn)品使用說明

1、連接電源。

2、按下STM32f103c8t6單片機(jī)最小系統(tǒng)板上的復(fù)位鍵。

3、通過手機(jī)連接WiFi。

4、通過手機(jī)APP輸入密碼,控制電磁鎖。

6產(chǎn)品設(shè)計技術(shù)標(biāo)準(zhǔn)

[1]J-STD-001E電氣與電子組件的焊接要求

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

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

[4]GB/T11457-2006信息技術(shù)軟件工程術(shù)語

[5]GB/T8566-2007信息技術(shù)軟件生存周期過程標(biāo)準(zhǔn)

[6]GB/T8567-2006計算機(jī)軟件文檔編制規(guī)范

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

參考資料

[1]譚淑梅.簡析STM32單片機(jī)原理及硬件電路設(shè)計[J].大慶師范學(xué)院學(xué)報,2014,34(6):21-

23.

[2]王曉彥.STM32單片機(jī)原理及硬件電路設(shè)計[J].南方農(nóng)機(jī),2020,51(14):2.

[3]周江.STM32單片機(jī)原理及硬件電路設(shè)計研究[J].數(shù)字技術(shù)與應(yīng)用,2015(11):1.

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

附錄

附錄1元器件清單

元器件數(shù)量

STM32f103c8t6單片機(jī)最小系統(tǒng)板1

DC5V電源座1

ESP8266串口WiFi模塊1

降壓二極管1

12V電磁鎖1

12V適配器1

12V電源座1

NPN驅(qū)動三極管1

繼電器1

電阻1

排針2

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

附錄2電路原理圖

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

附錄3PCB設(shè)計圖

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

附錄4產(chǎn)品實物圖

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

附錄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);//緩沖一下保持程序的穩(wěn)定

SystemInit();

nvic();

chuankou();

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

while(1)

{

13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

chuankou_jieshou();

}

}

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

//按鍵獲取

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

@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);//發(fā)送數(shù)據(jù)

mPrintWriterClient.flush();

}

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

catch(Exceptione){

//TODO:handleexception

Toast.makeText(mContext,"權(quán)限未開放"+

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("通信狀態(tài):已連接");

isConnecting=false;

try{

if(mSocketClient!=null)

{

mSocketClient.close();

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

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("通信狀態(tài):已連接");

}

}

//線程:監(jiān)聽服務(wù)器發(fā)來的消息

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

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

{

//連接服務(wù)器

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計

@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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論