chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于繼電器、ESP8266模塊的單片機(jī)軟件設(shè)計方案

電子設(shè)計 ? 來源:CSDN博主 ? 作者:daxiniot ? 2021-01-16 11:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、系統(tǒng)方案

手機(jī)APP通過ESP8266 WIFI模塊與51單片機(jī)通信控制四路繼電器。下位機(jī)由單片機(jī)、ESP8266模塊和繼電器模塊組成,上位機(jī)Android手機(jī)APP承擔(dān)。我們在APP上發(fā)送繼電器的開關(guān)控制指令,ESP8266將收到的數(shù)據(jù)發(fā)送給單片機(jī),從而實現(xiàn)對繼電器進(jìn)行開關(guān)控制。

pIYBAGACVyOARW5tAAAzDtZ38mQ876.png

二、硬件設(shè)計

ESP8266模塊作為一個透傳模塊使用,RXD、TXD分別連接51單片機(jī)的TXD和RXD,VCC和EN管腳接3.3V電壓,GND接地,只需要連接這些管腳,ESP8266模塊就可以正常工作了。

單片機(jī)的P2^0,P2^1,P2^2,P2^3輸出高低電瓶控制四路繼電器,繼電器模塊是從網(wǎng)上購買的已經(jīng)焊接好的模塊,其他地方為手工萬用板焊接。

pIYBAGACVzqAdnDEAAJe2yGEvGE155.png

三、單片機(jī)軟件設(shè)計

單片機(jī)代碼主要是串口初始化、ESP8266的初始化和串口中斷。

1.串口和ESP8266初始化:

/**
*發(fā)送單個字符
*/
void sendChar(uchar a)
{
	SBUF = a;
	while(TI==0);
	TI=0;
}
 
/**
*發(fā)送字符串
*/
void sendString(uchar *s)
{
	while(*s!='\0')
	{
		sendChar(*s);
		s++;
	}	
}
 
/**
*初始化ESP8266模塊
*/
void initEsp()
{
	TMOD=0x20;		//定時器1工作在方式2
	TH1 = 0xfd;		//波特率9600
	TL1 = 0xfd;
	SM0=0;				//串口工作在方式1
	SM1=1;
	EA = 1;				//開總中斷
	REN = 1;			//使能串口
	TR1 = 1;			//定時器1開始計時
	delayms(200);
	sendString("AT+CWMODE=2\r\n");		//AP模式
	delayms(200);	
	sendString("AT+CIPMUX=1\r\n");		//允許多連接
	delayms(200);	
	sendString("AT+CIPSERVER=1\r\n");	//建立TCP Server
	delayms(200);	
	ES = 1;				//開串口中斷
}

sendString("AT+CWMODE=2\r\n") ----- 單片機(jī)發(fā)送AT指令到ESP8266模塊,AT+CWMODE=2是將ESP8266設(shè)置為AP模式,\r\n是換行,因為AT指令加換行才能生效。
sendString("AT+CIPMUX=1\r\n") ---- 允許多連接
sendString("AT+CIPSERVER=1\r\n") ---- 建立TCP Server

2. 串口中斷函數(shù),負(fù)責(zé)處理App發(fā)送給單片機(jī)的指令:

/**
* 串口中斷函數(shù),負(fù)責(zé)處理App發(fā)送給單片機(jī)的指令
*/
void uart() interrupt 4
{
	if(RI == 1)   
  {
    RI = 0;     //清除串口接收標(biāo)志位
		receiveTable[i]=SBUF;
		if(receiveTable[0]=='+')
		{
			i++;
		}
		else
		{
			i=0;
		}
		if(i==10)
		{
			i=0;
			switch(receiveTable[9])
			{			
				case '1':			//打開繼電器
					JDQ4=0;
					break;
				case '2':			//關(guān)閉繼電器
					JDQ4=1;
					break;
				case '3':
					JDQ3=0;
					break;
				case '4':
					JDQ3=1;
					break;
				case '5':
					JDQ2=0;
					break;
				case '6':
					JDQ2=1;
					break;
				case '7':
					JDQ1=0;
					break;
				case '8':
					JDQ1=1;
					break;
				
			}
		}
  }
}

esp8266在收到數(shù)據(jù)并轉(zhuǎn)發(fā)給單片機(jī)時的數(shù)據(jù)格式:+IPD,,<收到的字符長度>:收到的字符,比如+IPD,0,5:hello,其中+PID是固定的;0代表的是TCP客戶端編號,esp8266最多支持5個客戶端同時連接,也就是說客戶端編號是0到4,在本設(shè)計中由于只有一個客戶端與esp8266相連,所以客戶端編號是0;5代表收到的字符長度;hello是收到的字符。在本例中esp8266發(fā)送給單片機(jī)的數(shù)據(jù)是+IPD,0,1:1,我們把接收到的字符串緩存到字符數(shù)組中,所以在處理收到的數(shù)據(jù)邏輯中,首先判斷是否是以'+'開始的,否則視作無效數(shù)據(jù),然后判斷數(shù)組中的第十個數(shù)據(jù),因為第十個數(shù)據(jù)才是上位機(jī)發(fā)送過來的數(shù)據(jù)。

四、Android APP軟件設(shè)計

Android APP是借助Android Studio來開發(fā)的,界面比較清新。esp8266默認(rèn)的IP地址是192.168.4.1,端口號是333。四個開關(guān)控制四路繼電器,其中長按開關(guān)的名字可以編輯開關(guān)名稱,APP界面截圖如下所示:

o4YBAGACV1WAEVQVAAGG4eud72o616.png

負(fù)責(zé)連接ESP8266的按鈕點擊回調(diào)方法:

/**
 * 連接按鈕點擊事件回調(diào)方法
 * @param v
 */
@Override
public void onClick(View v) {
    if(v.getId()==R.id.btn_connect){
        if (mSocket == null || !mSocket.isConnected()) {
            new Thread(){
                @Override
                public void run() {
                    try {
                        mSocket = new Socket("192.168.4.1", 333);
                        out = new PrintStream(mSocket.getOutputStream());
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                mBtnConnect.setText("斷開");
                            }
                        });
                        new HeartBeatThread().start();
                    } catch (IOException e) {
                        e.printStackTrace();
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, "連接失敗", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                }
            }.start();
        }
        if (mSocket != null && mSocket.isConnected()) {
            try {
                mSocket.close();
                mBtnConnect.setText("連接");
                mSocket = null;
            } catch (IOException e) {
                e.printStackTrace();
                mSocket = null;
            }
        }
    }
}

滑動開關(guān)點擊回調(diào)方法,發(fā)送指令到單片機(jī)控制繼電器的開關(guān):

/**
 * 滑動按鈕監(jiān)聽事件,發(fā)送指令到單片機(jī)控制繼電器開關(guān)
 * @param buttonView
 * @param isChecked
 */
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    switch (buttonView.getId()) {
        case R.id.switch1:
            if (isChecked) {
                //turn on
                Log.d(TAG, "onCheckedChanged: send1");
                sendData("1");
            } else {
                //turn off
                Log.d(TAG, "onCheckedChanged: send2");
                sendData("2");
            }
            break;
        case R.id.switch2:
            if (isChecked) {
                //turn on
                Log.d(TAG, "onCheckedChanged: send3");
                sendData("3");
            } else {
                //turn off
                Log.d(TAG, "onCheckedChanged: send4");
                sendData("4");
            }
            break;
        ....
		....
		....
           
    }
}
編輯:hfy
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 繼電器
    +關(guān)注

    關(guān)注

    133

    文章

    5566

    瀏覽量

    154826
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6076

    文章

    45498

    瀏覽量

    670615
  • 開關(guān)控制
    +關(guān)注

    關(guān)注

    1

    文章

    119

    瀏覽量

    23896
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ESP8266系列】WT8266-S3模組規(guī)格書

    概述ESP-07S(WT8266-S3)Wi-Fi模塊是由啟明云端科技開發(fā)的、低功耗高性價比的嵌入式無線網(wǎng)絡(luò)控制模塊。可滿足智能電網(wǎng)、樓宇自動化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的
    的頭像 發(fā)表于 02-05 18:04 ?124次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S3模組規(guī)格書

    ESP8266系列】WT8266-S5模組規(guī)格書

    概述ESP-12F(WT8266-S5)WiFi模塊是由啟明云端科技開發(fā)的、低功耗高性價比的嵌入式無線網(wǎng)絡(luò)控制模塊。可滿足智能電網(wǎng)、樓宇自動化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需
    的頭像 發(fā)表于 02-05 18:03 ?138次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S5模組規(guī)格書

    ESP8266系列】WT8266-S6模組規(guī)格書

    ESP-12S(WT8266-S6)Wi-Fi模塊是由啟明云端科技開發(fā)的、低功耗高性價比的嵌入式無線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求
    的頭像 發(fā)表于 02-05 18:03 ?142次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模組規(guī)格書

    ESP8266系列】WT8266-S1模組產(chǎn)品介紹

    WT8266-S1WiFi模塊是由啟明云端科技開發(fā)的、低功耗高性價比的嵌入式無線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求。該模塊核心處理器
    的頭像 發(fā)表于 01-29 18:22 ?387次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S1模組產(chǎn)品介紹

    ESP8266系列】WT8266-S6模組產(chǎn)品介紹

    ESP-12S(WT8266-S6)Wi-Fi模塊是由啟明云端科技開發(fā)的、低功耗高性價比的嵌入式無線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動化、安防、智能家居、遠(yuǎn)程醫(yī)療等物聯(lián)網(wǎng)應(yīng)用的需求
    的頭像 發(fā)表于 01-29 18:22 ?268次閱讀
    【<b class='flag-5'>ESP8266</b>系列】WT<b class='flag-5'>8266</b>-S6模組產(chǎn)品介紹

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!【往期精選】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生態(tài)設(shè)備接入(含
    的頭像 發(fā)表于 01-10 10:01 ?879次閱讀
    無需安裝!在瀏覽器里就能玩轉(zhuǎn)<b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>,這個神器絕了!

    【瑞薩RA6E2地奇星開發(fā)板試用】使用`RA6E2`驅(qū)動 `ESP8266 WiFi模塊`,調(diào)試AT指令。

    WiFi模塊和串口輸出等,為社區(qū)其他產(chǎn)品的快速開發(fā)、驗證和應(yīng)用設(shè)計提供了示例。 期望瑞薩官方論壇、立創(chuàng)社區(qū)精選此代碼,為社區(qū)提供esp8266 WiFi模塊調(diào)試方案。 7. 相
    發(fā)表于 12-25 10:08

    【瑞薩RA6E2地奇星開發(fā)板試用】使用瑞薩RA6E2開發(fā)板調(diào)試ESP8266-01S WiFi模塊,串口調(diào)試AT指令、固件升級

    GND) 注意是3.3V電源。 我使用RA6E2單片機(jī)的2個3V3引腳和1個GND引腳為ESP8266-01sWiFi模塊連接和供電。 2. 使用串口調(diào)試助手驗證AT指令 2.1 硬件連接圖
    發(fā)表于 12-16 20:10

    晶科鑫 | 國產(chǎn)26MHz晶振匹配Espressif(樂鑫) ESP8285/ESP8266芯片案例

    【應(yīng)用】國產(chǎn)26MHz頻率晶振應(yīng)用于物聯(lián)網(wǎng)WIFI物聯(lián)網(wǎng)模塊(串口轉(zhuǎn)WiFi模塊),Espressif(樂鑫)ESP8285/ESP8266芯片匹配測試OKESP8285其實是
    的頭像 發(fā)表于 11-21 15:37 ?4650次閱讀
    晶科鑫 | 國產(chǎn)26MHz晶振匹配Espressif(樂鑫) <b class='flag-5'>ESP</b>8285/<b class='flag-5'>ESP8266</b>芯片案例

    ESP8266ESP32開發(fā)板常見的2種下載方式

    ESP32和ESP8266是性價比很高而且使用較為廣泛的的Wi-Fi模塊,在物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項目中可以首先考慮這2款產(chǎn)品。 兩款芯片都屬于32位處理器。ESP32是低功耗
    的頭像 發(fā)表于 11-10 20:30 ?994次閱讀
    <b class='flag-5'>ESP8266</b>和<b class='flag-5'>ESP</b>32開發(fā)板常見的2種下載方式

    ESP8266ESP32開發(fā)板常見的2種下載方式

    的的Wi-Fi模塊,在物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項目中可以首先考慮這2款產(chǎn)品。 兩款芯片都屬于32位處理器。ESP32是低功耗雙核80MHz至240MHz CPU,而ESP8266是單核處理器,主頻支持
    發(fā)表于 10-24 18:04

    ESP8266】進(jìn)入透傳模式后,數(shù)據(jù)間隔怎么調(diào)整,

    模式,后面出現(xiàn)接收反饋不及時的現(xiàn)象,驗證ESP8266模塊不能及時TCP反饋 不要SPI高速ESP8266的新方案,現(xiàn)有的方案下怎么實現(xiàn)快速
    發(fā)表于 09-15 10:16

    STM32+esp8266連接機(jī)智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(guān)(平臺配置、代碼生成、代碼移植)

    本教程將詳細(xì)介紹如何將STM32微控制器與ESP8266Wi-Fi模塊連接到機(jī)智云平臺,實現(xiàn)溫濕度數(shù)據(jù)的上傳與繼電器的遠(yuǎn)程控制。通過此過程,您將學(xué)會如何配置機(jī)智云平臺,燒錄ESP8266
    的頭像 發(fā)表于 07-15 18:54 ?1089次閱讀
    STM32+<b class='flag-5'>esp8266</b>連接機(jī)智云,上傳溫濕度數(shù)據(jù)并控制<b class='flag-5'>繼電器</b>開關(guān)(平臺配置、代碼生成、代碼移植)

    單片機(jī)實例項目:ESP8266串口WIFI

    單片機(jī)實例項目:ESP8266串口WIFI,推薦下載!
    發(fā)表于 06-03 21:01

    ESP8266燒錄與機(jī)智云一鍵配網(wǎng)教程

    ESP8266模塊因其低成本和高性能,廣泛應(yīng)用于智能家居和工業(yè)自動化等領(lǐng)域。機(jī)智云平臺提供了一鍵配網(wǎng)功能,簡化了設(shè)備的聯(lián)網(wǎng)過程。本教程將詳細(xì)介紹如何使用ESP8266進(jìn)行燒錄,并通過機(jī)智云實現(xiàn)一鍵配
    的頭像 發(fā)表于 05-24 11:04 ?2014次閱讀
    <b class='flag-5'>ESP8266</b>燒錄與機(jī)智云一鍵配網(wǎng)教程