色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于繼電器、ESP8266模塊的單片機軟件設計方案

電子設計 ? 來源:CSDN博主 ? 作者:daxiniot ? 2021-01-16 11:04 ? 次閱讀

一、系統方案

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

pIYBAGACVyOARW5tAAAzDtZ38mQ876.png

二、硬件設計

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

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

pIYBAGACVzqAdnDEAAJe2yGEvGE155.png

三、單片機軟件設計

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

1.串口和ESP8266初始化:

/**
*發送單個字符
*/
void sendChar(uchar a)
{
	SBUF = a;
	while(TI==0);
	TI=0;
}
 
/**
*發送字符串
*/
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") ----- 單片機發送AT指令到ESP8266模塊,AT+CWMODE=2是將ESP8266設置為AP模式,\r\n是換行,因為AT指令加換行才能生效。
sendString("AT+CIPMUX=1\r\n") ---- 允許多連接
sendString("AT+CIPSERVER=1\r\n") ---- 建立TCP Server

2. 串口中斷函數,負責處理App發送給單片機的指令:

/**
* 串口中斷函數,負責處理App發送給單片機的指令
*/
void uart() interrupt 4
{
	if(RI == 1)   
  {
    RI = 0;     //清除串口接收標志位
		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':			//關閉繼電器
					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在收到數據并轉發給單片機時的數據格式:+IPD,,<收到的字符長度>:收到的字符,比如+IPD,0,5:hello,其中+PID是固定的;0代表的是TCP客戶端編號,esp8266最多支持5個客戶端同時連接,也就是說客戶端編號是0到4,在本設計中由于只有一個客戶端與esp8266相連,所以客戶端編號是0;5代表收到的字符長度;hello是收到的字符。在本例中esp8266發送給單片機的數據是+IPD,0,1:1,我們把接收到的字符串緩存到字符數組中,所以在處理收到的數據邏輯中,首先判斷是否是以'+'開始的,否則視作無效數據,然后判斷數組中的第十個數據,因為第十個數據才是上位機發送過來的數據。

四、Android APP軟件設計

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

o4YBAGACV1WAEVQVAAGG4eud72o616.png

負責連接ESP8266的按鈕點擊回調方法:

/**
 * 連接按鈕點擊事件回調方法
 * @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;
            }
        }
    }
}

滑動開關點擊回調方法,發送指令到單片機控制繼電器的開關:

/**
 * 滑動按鈕監聽事件,發送指令到單片機控制繼電器開關
 * @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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 繼電器
    +關注

    關注

    132

    文章

    5352

    瀏覽量

    149042
  • 單片機
    +關注

    關注

    6037

    文章

    44563

    瀏覽量

    635869
  • 開關控制
    +關注

    關注

    1

    文章

    113

    瀏覽量

    23171
收藏 人收藏

    評論

    相關推薦

    esp8266加入到c51單片機單通道程序怎么寫

    要將ESP8266模塊加入到C51單片機的單通道程序中,您需要了解如何通過串行通信(UART)與ESP8266進行通信。以下是如何實現這一點的步驟和示例代碼。 步驟 1:硬件連接 首先
    的頭像 發表于 10-18 11:32 ?636次閱讀

    ESP8266 太空人動畫的 OLED 顯示

    ESP8266 太空人動畫的 OLED 顯示
    的頭像 發表于 10-08 15:06 ?290次閱讀
    <b class='flag-5'>ESP8266</b> 太空人動畫的 OLED 顯示

    單片機WiFi模塊怎樣連接手機APP

    單片機WiFi模塊連接到手機APP通常涉及以下幾個步驟: 選擇單片機和WiFi模塊 :選擇合適的單片機(如Arduino,
    的頭像 發表于 09-10 15:31 ?1059次閱讀

    STM32 ESP8266阿里云鏈接源碼

    stm32F103C8T6 ESP8266 物聯網電表 登錄阿里云
    發表于 08-29 14:21 ?6次下載

    esp32和esp8266代碼共用嗎

    本文將介紹ESP32和ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯網技術的飛速發展,越來越多的智能設備開始進入我們的生活。其中,ESP32和ESP82
    的頭像 發表于 08-19 18:23 ?1180次閱讀

    esp8266esp32區別是什么

    以下是關于ESP8266ESP32的主要區別: 處理器和架構 : ESP8266 :使用一個Tensilica L106 80MHz的處理器,屬于Xtensa架構。 ESP32 :使
    的頭像 發表于 08-19 18:16 ?5494次閱讀

    esp8266不燒錄可以使用嗎

    ESP8266是一款非常流行的Wi-Fi模塊,廣泛應用于物聯網項目中。然而,如果不進行燒錄,ESP8266將無法正常工作。 1. ESP8266簡介
    的頭像 發表于 08-19 17:28 ?847次閱讀

    esp8266wifi模塊怎么連接手機

    ESP8266 WiFi模塊連接手機主要可以通過兩種方式實現: 通過路由器連接(STA模式)和直接作為熱點連接(AP模式) 。以下是兩種連接方式的步驟: 一、通過路由器連接(STA模式) 配置
    的頭像 發表于 08-19 17:27 ?3047次閱讀

    ESP8266控制繼電器,芯片會頻繁復位的原因?

    事情是這樣的,我們通過8266控制繼電器8266的電源是220V轉3.3V,繼電器的電源和8266用的220V是在一起的。整個系統單單
    發表于 07-19 10:51

    使用esp8266的Hspi與單片機通信,打印的W0-W7寄存器數據和發送的數據不符合,為什么?

    在使用esp8266的Hspi與單片機通信,發現單片機可以進行數據讀取,但是單片機寫數據就會出現esp8266這邊的主機寫完成中斷被觸發,但
    發表于 07-10 07:04

    使用esp8266的HSPI與STM32進行通信時遇到的疑問求解

    在使用esp8266的HSPI與STM32進行通信時,發現單片機可以對其進行讀操作,但是單片機esp8266里面寫數據的話就會出現esp8266
    發表于 07-10 06:45

    請問esp8266如何擴展pwm到8路?

    里面描述,demo 中提供 4 路 PWM(用戶可自?擴展至 8 路),可用 來控制彩燈,蜂鳴器器,繼電器器及電機等。 請問,esp8266如何擴展pwm到8路?
    發表于 07-09 06:13

    ESP8266網絡天氣時鐘OLED顯示

    基于ESP8266實現網絡獲取天氣和時鐘并OLED顯示
    的頭像 發表于 06-28 04:46 ?1211次閱讀
    <b class='flag-5'>ESP8266</b>網絡天氣時鐘OLED顯示

    國產低成本Wi-Fi SoC解決方案芯片ESP8266ESP8285對比差異

    ESP8266ESP8285對比差異 ESP8285相當于在ESP8266基礎上多加了1/2MB Flash, ESP8285與
    的頭像 發表于 05-17 11:44 ?1366次閱讀
    國產低成本Wi-Fi SoC解決<b class='flag-5'>方案</b>芯片<b class='flag-5'>ESP8266</b>與<b class='flag-5'>ESP</b>8285對比差異

    使用Wi-Fi ESP8266方案模組接入云平臺

    ESP8266模塊芯片是基于無線通信協議的UARTWi-Fi透傳模塊芯片,支持802.11b/g/n的無線標準,并帶有三種可選擇的工作模式。ESP8266
    的頭像 發表于 05-10 08:20 ?1867次閱讀
    使用Wi-Fi <b class='flag-5'>ESP8266</b><b class='flag-5'>方案</b>模組接入云平臺
    主站蜘蛛池模板: 午夜向日葵高清在线观看| 色欲AV久久综合人妻蜜桃| 日本内射精品一区二区视频| 伊人精品视频直播| 国产真实乱对白精彩| 无码137片内射在线影院| 成在线人免费| 秋霞在线看片无码免费| www免费看.男人的天堂| 欧美成人无码A区在线观看免费| 又黄又爽又无遮挡在线观看免费| 和I儿媳妇激情| 亚洲人成伊人成综合网久久久| 国产在线精彩亚洲| 亚洲国产精品嫩草影院久久| 国产精品一库二库三库| 午夜dj免费中文字幕| 国产精品无码无卡毛片不卡视| 天上人间影院久久国产| 国产AV天堂亚洲AV麻豆| 天海翼精品久久中文字幕| 国产成人一区二区三中文| 性888xxxx入欧美| 黑人寄宿羽月希产后奶水| 夜色帮首页| 两个人的视频免费| chinesedaddy80老年人| 日本无码免费久久久精品| 国产成人综合高清在线观看| 亚洲第一页在线播放| 久久91精品国产91久| 5566av资源| 日本少妇内射视频播放舔| 国产精选视频在线观看| 亚洲女初尝黑人巨磁链接| 久色视频网| 阿片在线播放| 小向美奈子厨房magnet| 久久人人玩人妻潮喷内射人人| 99久久精品免费看国产一区二区三区 | 亚洲欧美综合乱码精品成人网|