版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 平臺運營培訓(xùn)
- 科技文化活動方案設(shè)計
- 律師事務(wù)所法律服務(wù)合同
- 實地參觀并交流發(fā)言材料
- 文物保護(hù)基金章程范本
- 2025借款合同新版正規(guī)范本
- 2025集資房買賣合同范本(修訂版)
- 2025聘用合同填寫說明及樣
- 2025辦理解除勞動合同范本
- 【七年級下冊地理粵教版】7.5 日本 同步練習(xí)
- 建設(shè)工程質(zhì)量檢測檢測計劃
- 安全生產(chǎn)法律法規(guī)匯編(2025版)
- 2025年抗肺纖維化藥物市場分析報告
- 銀行會計主管年度工作總結(jié)2024(30篇)
- 教師招聘(教育理論基礎(chǔ))考試題庫(含答案)
- 上海市12校2025屆高三第一次模擬考試英語試卷含解析
- 三年級數(shù)學(xué)(上)計算題專項練習(xí)附答案集錦
- 長亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲系統(tǒng)解決方案
評論
0/150
提交評論