
設定ESP8266為服務站。支持電腦、手機等多種客戶端通過互聯網遠程連接路由WIFI下的ESP8266服務站,進行雙向通信。
下面幾步照做下來,就能雙向通信了,有了這個例程再用51單片機控制8266就好理解了。
我沒有專用的USB轉接板,所以借用了普中科技的單片機開關板上的CH340芯片和資料線,接線如圖,這塊網上教程很多,也有現成的轉接板,我就不啰嗦了。


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
AT
回應OK,表示電腦串口除錯軟體通過USB轉串口與8266的硬體通信已連接好
AT+CWMODE=1 模式這里選擇1或3都可以
AT+CWJAP="wifi名稱","WIFI密碼"
回應OK,表示8266與WIFI的無線通信已連接好
以上設定只需設定一次,模塊ESP8266即使斷電,設定也不會丟失。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
AT+CIFSR 查詢IP命令,記錄8266被分配的內網IP。上面三個命令貼圖如下:

在路由器設定中將IP與MAX地址進行系結,使路由即使重啟,8266所分配到的內網IP也不會改變。

在路由器的防火墻中設定外網到內網IP的埠轉發,埠號11853

在路由器中查看通信公司給路由器分配的外部互聯網IP,重啟路由器會改變外網IP。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
AT+CIPMUX=1 必須設定為多路鏈接
AT+CIPSERVER=1,11853 設定8266埠號為11853,1表示遠程連接
以上兩個設定,斷電后8266不能保存。重新上電需要重新設定8266后,客戶端才能連接上。
\\\\\\\\\\\\\\\\\客戶端通過外網連接到ESP8266服務站\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
將手機關閉WLAN,開啟移動資料4G模式進入外部互聯網。
打開手機APP,我用的APP名叫 TCP連接,點連接,輸入 路由器外網IP和埠號11853,開始連接



\\\\\\\\\\\\\\\\\客戶端通過外網發送資料到ESP8266服務站\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
連接成功后,用手機APP發資料給8266。

8266收到后,會顯示:
+IPD,0,36:這是手機通過外網發送給8266的資料!!
0,表示是0路客戶端(手機)發來的資料。
36:表示共有36個位元組的資料
這是手機通過外網發送給8266的資料!!--- 是收到的資料

\\\\\\\\\\\\\\\\\\\\ESP8266服務站發送資料到外部客戶端(手機)\\\\\\\\\\\\\\\\\\\\
AT+CIPSEND=0,20 發送給客戶端(手機)0號,發送的位元組數20
A123456789B123456789 發送20個資料

\\\\\\\\\\\\\\\\\\\\\\\\內網PC通過局域網發送資料給ESP8266\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
需要將PC設成客戶端模式。
服務器地址為8266的IP地址。
服務埠號為:11853

局域網PC發送資料給8266.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ESP8266通過局域網發送資料給內網PC\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
AT+CIPSEND=1,32
1代表客戶端(PC)
32所發的資料數量

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
AT+CIFSR 查詢IP命令
AT+RST 重啟模塊
AT+RESTORE 恢復出廠設定
最后啰嗦一下,每個命令都要加回車換行,再發送。否則有時候命令會執行不成功。
uj5u.com熱心網友回復:
上面只是搞明白了用51單片機應該怎么控制ESP8266的雙向通信。具體的應用,我還沒有想到需要這個模塊通信的應用場景。關于遙控幾路燈,是不是太簡單了點

我是希望能夠承擔一些資料傳送的需求場景。。。。
打算用Labview做PC端的軟體。
不知道,手機APP撰寫軟體用什么入門比較好?我搞過安卓。求指教。。。
uj5u.com熱心網友回復:
我沒沒沒搞過安卓。求指教。。。uj5u.com熱心網友回復:
網上參考了一個51的初始化esp的程式,上電后,就可以通過WIFI連接ESP了。STC燒程式時需要5V電壓,作業時需要切換回3.3V。除錯程式時我忘了切換回來,燒了一片ESP8266,太可惜了。
#include<reg52.h>
unsigned char *str;//發送char型字串
/*串口初始化子函式*/
void Serial_Inti()//串口初始化,一定注意不要啟動T1的串口中斷
{
SCON = 0x50; // REN=1允許串行接受狀態,串口作業模式1
TMOD|= 0x20; // TMOD=0X20:使用定時器1,8位自動加載計時器
PCON|= 0x80;
TH1 = 0xFd; // baud*2 /* 波特率19200、資料位8、停止位1。效驗位無 (11.0592);設定8位自動加載計時器定時時間,
//TH1 = 0xF3; // baud*2 /* 波特率4800、 資料位8、停止位1。效驗位無 (12M)
TL1 = 0xF3; // 公式TL1 = 256- fosc(SMOD+1)/(32*12*波特率)
TR1 = 1; // TR1=1:啟用定時器1
}
/*字串發送子函式(用于配置)*/
void Uart_Sends(unsigned char *str)
{
while(*str!='\0')
{
SBUF=*str;
while(!TI);//等待發送完成信號(TI=1)出現
TI=0;//清除發送中斷標志位以繼續發送
str++;
}
}
/*延時程式*/
void Delay1ms( unsigned int j)
{
while(j>1){j--;}
}
/*WIFI模塊初始化*/
void Wifi_Init()
{ Delay1ms(6000);
Uart_Sends("AT+CIPMUX=1\r\n"); //設定為多路鏈接
Delay1ms(6000);
Uart_Sends("AT+CIPSERVER=1,11883\r\n"); //設定8266埠號為11853,1表示遠程連接
}
void main()
{
Delay1ms(6000); //延時等待ESP8266上電
Delay1ms(6000);
Delay1ms(6000);
Delay1ms(6000);
Delay1ms(6000);
Delay1ms(6000);
Serial_Inti();
Wifi_Init();
while(1)
{;}
}
uj5u.com熱心網友回復:
https://blog.csdn.net/kennychow/article/details/78328128ALK8266WIFI模塊支持常見普通單片機實作WIFI高速傳輸和更多復雜功能,實測速度超過M位元組每秒
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/101487.html
標籤:無線
上一篇:軟體自動化測驗工具有哪些?手工測驗與自動化測驗應用場景區別
下一篇:ThinkPad E580
