找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5223|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

esp8266配置(一)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:245368 發(fā)表于 2017-11-2 19:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
主要
esp8266怎么配置
esp8266和USB轉(zhuǎn)TTL連接
esp8266簡(jiǎn)單介紹
esp8266連接路由器
esp8266通過(guò)路由器連接在同一局域網(wǎng)中的電腦,建立TCP連接
esp8266使用串口發(fā)送數(shù)據(jù)到電腦上的網(wǎng)絡(luò)調(diào)試助手
esp8266使用串口通過(guò)局域網(wǎng)發(fā)送到電腦上自己寫(xiě)的Java程序
esp8266的透?jìng)髂J?/font>
esp8266使用透?jìng)髂J竭B接到電腦的網(wǎng)絡(luò)調(diào)試助手
esp8266使用透?jìng)髂J竭B接到電腦上的java程序
USB轉(zhuǎn)TTL如何和esp8266連接?
USB轉(zhuǎn)TTL
5V
VCC
3V3
TXD
RXD
GND

esp8266
  
3V3
  
  
RX
  
  
IO16
  
  
IO0
  
  
EN
  
  
IC2
  
  
TX
  
  
GND
  

連接
  
USB轉(zhuǎn)TTL
  
  
esp8266
  
  
TXD
  
  
RX
  
  
RXD
  
  
TX
  
  
GND
  
  
GND
  

VCC和3V3用短路帽連接后再同時(shí)連到esp8266的3V3和EN
esp8266測(cè)試
打開(kāi)串口調(diào)試助手,選擇發(fā)送新行
AT
OK
-----------
AT+GMR

ATversion:1.3.0.0(Jul 14 2016 18:54:01)
SDKversion:2.0.0(656edbf)
compiletime:Jul 19 2016 18:44:44
OK
-----------
AT+CWSAP_CUR?

+CWSAP_CUR:"ESP_A5A06F","",1,0,4,0

OK
-----------
AT+CWSAP_DEF?

+CWSAP_DEF:"ESP_A5A06F","",1,0,4,0

OK
Esp8266三種模式
STA     連接其他設(shè)備來(lái)上網(wǎng),作為client
STA 站點(diǎn),每一個(gè)連接到無(wú)線網(wǎng)絡(luò)中的終端(如筆記本電腦、 PDA及其它可以聯(lián)網(wǎng)的用戶設(shè)備)都可稱為一個(gè)站點(diǎn)
AP       可以當(dāng)作路由器來(lái)給其他esp8266或其他設(shè)備連接
是無(wú)線接入點(diǎn),是一個(gè)無(wú)線網(wǎng)絡(luò)的創(chuàng)建者,是網(wǎng)絡(luò)的中心節(jié)點(diǎn)
STA+AP
Wifi模塊包括兩種類型的拓?fù)湫问剑夯A(chǔ)網(wǎng)(Infra)和自組網(wǎng)(Adhoc)
      基于AP組建的基礎(chǔ)無(wú)線網(wǎng)絡(luò)(Infra):Infra也稱為基礎(chǔ)網(wǎng),是由AP創(chuàng)建,眾多STA加入所組成的無(wú)線網(wǎng)絡(luò),這種類型的網(wǎng)絡(luò)的特點(diǎn)是AP是整個(gè)網(wǎng)絡(luò)的中心,網(wǎng)絡(luò)中所有的通信都通過(guò) AP 來(lái)轉(zhuǎn)發(fā)完成。
      基于自組網(wǎng)的無(wú)線網(wǎng)絡(luò)(Adhoc):Adhoc也稱為自組網(wǎng),是僅由兩個(gè)及以上STA自己組成,網(wǎng)絡(luò)中不存在AP,這種類型的網(wǎng)絡(luò)是一種松散的結(jié)構(gòu), 網(wǎng)絡(luò)中所有的 STA 都可以直接通信
單連接,多連接和透?jìng)髂J降年P(guān)系
多連接情況下(”AT+CIPMUX=1“),才能開(kāi)啟TCP 服務(wù)器
服務(wù)器僅⽀持多連接
創(chuàng)建 TCP 服務(wù)器后,⾃動(dòng)建⽴ TCP server 監(jiān)聽(tīng)
當(dāng)有 TCP client 接⼊,會(huì)⾃動(dòng)按順序占⽤⼀個(gè)連接 id
⾮透?jìng)髂J? “AT+CIPMODE=0”) ,才能設(shè)置為多連接
透?jìng)髂J,僅⽀持 TCP 單連接和 UDP 固定通信對(duì)端的情況
esp8266連接路由器
esp8266已經(jīng)設(shè)置為STA/AP模式
指令:
AT+CWJAP_CUR="Cise_132_Middle",""
AT+CWJAP_CUR="Cise_128_01","213213213"

WIFICONNECTED
WIFIGOT IP

OK
這樣esp8266就有一個(gè)IP地址了
AT+CIFSR

+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"5e:cf:7f:a5:a0:6f"
+CIFSR:STAIP,"192.168.1.110"
+CIFSR:STAMAC,"5c:cf:7f:a5:a0:6f"

OK
那么查詢一下現(xiàn)在的網(wǎng)絡(luò)連接狀態(tài)
AT+CIPSTATUS

STATUS:2

OK
參數(shù)說(shuō)明:
<stat>
2:獲得 IP
3:已連接
4:斷開(kāi)連接
5:未連接到WiFi
測(cè)試一下域名解析功能
AT+CIPDOMAIN="www.baidu.com"

+CIPDOMAIN:61.135.169.125

OK
現(xiàn)在試一下和電腦建立TCP連接
先建立單連接
查詢電腦IP
192.168.1.108
255.255.255.0
192.168.1.1
AT+CIPSTART="TCP","192.168.1.108",8000
不能先用esp8266建立一個(gè)tcp連接,連不上的,因?yàn)門CP server 還沒(méi)有建立,esp8266也連不上
先用網(wǎng)絡(luò)調(diào)試助手創(chuàng)建一個(gè)TCP  server,打開(kāi)指定端口,再連接
AT+CIPSTART="TCP","192.168.31.171",6699

CONNECT

OK
AT+CIFSR

+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"5e:cf:7f:a5:a0:6f"
+CIFSR:STAIP,"192.168.31.103"
+CIFSR:STAMAC,"5c:cf:7f:a5:a0:6f"

OK
在網(wǎng)絡(luò)調(diào)試助手上顯示已經(jīng)和192.168.31.103建立連接
通過(guò)路由器在一個(gè)局域網(wǎng)中向電腦發(fā)送數(shù)據(jù)
esp8266和電腦連接同一個(gè)路由器
AT+CIPSEND=9


OK
>123asdfgh

busys...

Recv9 bytes
上面是用網(wǎng)絡(luò)調(diào)試助手創(chuàng)建TCP Server,那么可不可以使用java創(chuàng)建一個(gè)serversocket來(lái)接收數(shù)據(jù)呢?
esp發(fā)送命令
AT+CIPSENDBUF=16
一直按回車就可以了,因?yàn)檫@個(gè)命令本身的長(zhǎng)度就是16,可以發(fā)送自己
java程序
packageespSever;

importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.ServerSocket;
importjava.net.Socket;

importjavax.swing.BoxLayout;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.ScrollPaneConstants;



publicclass Esp {
JButtonSendtoesp;
JTextAreatextArea;
JButtonopensocket;

ServerSocketserverSocket;
PrintWriterwriter;
Socketsocket;
BufferedReaderreader;
InputStreamReaderstreamReader;
publicstatic void main(String[] args) {
//TODO Auto-generated method stub
Espesp  =new Esp();
esp.go();
}
publicvoid go() {
JFrameframe = new JFrame("EspServer");
JPanelpanel01 = new JPanel();
JPanelpanel02 = new JPanel();
opensocket= new JButton("OpenSocket");
Sendtoesp= new JButton("Send To Esp");
textArea= new JTextArea(20,20);
textArea.setLineWrap(true);//可以使用滾動(dòng)條

//設(shè)置滾動(dòng)條
JScrollPanescrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

opensocket.addActionListener(newSocketopen());
panel01.setBackground(Color.PINK);
panel02.setBackground(Color.BLUE);
panel02.setLayout(newBoxLayout(panel02, BoxLayout.Y_AXIS));


panel01.add(scrollPane);//不能忘了加滾動(dòng)條
panel02.add(opensocket);
panel02.add(Sendtoesp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(BorderLayout.CENTER,panel01);
frame.getContentPane().add(BorderLayout.EAST,panel02);
frame.setSize(600,600);
frame.setVisible(true);
}
classEspget implements Runnable{

@Override
publicvoid run() {
//TODO Auto-generated method stub
Stringmessage;
try {
while((message=reader.readLine())!=null)
{
textArea.append("IP: "+message+"\n");
}

}catch (Exception e2) {
//TODO: handle exception
System.out.println("發(fā)生異常.\n");
}
}

}
classSocketopen implements ActionListener{

@Override
publicvoid actionPerformed(ActionEvent arg0) {
//TODO Auto-generated method stub
textArea.append("serversocket open  ing!\n");
try {
//@SuppressWarnings("resource")
serverSocket= new ServerSocket(6699);

Socketsocket = serverSocket.accept();

streamReader= new InputStreamReader(socket.getInputStream());
reader= newBufferedReader(streamReader);               

writer= new PrintWriter(socket.getOutputStream());

Threadtserver = new Thread(new Espget());
tserver.start();
textArea.append("服務(wù)器已啟動(dòng)!\n");

}catch (Exception e2) {
//TODO: handle exception
System.out.println("發(fā)生異常.\n");
}
}

}

}
主要的問(wèn)題是使用內(nèi)部類和線程
測(cè)試結(jié)果:
使用Java的serversocket是可以接收到esp發(fā)送的數(shù)據(jù)的,不過(guò)由于使用的是buffer,要發(fā)送足夠的數(shù)據(jù),因?yàn)锳T+CIPSENDBUF=16太短了,Java程序才會(huì)顯示出來(lái),而且有亂碼
怎么解決有什么接收什么和防止亂碼的問(wèn)題?
涉及到編碼問(wèn)題,稍后再研究
esp8266接收數(shù)據(jù)
直接使用TCP server發(fā)送數(shù)據(jù),WiFi模塊就能在串口上顯示,不需要特殊的配置
不過(guò)如果需要顯示發(fā)送消息來(lái)的TCP server的IP和端口需要使用AT指令A(yù)T+CIPDINFO=1就可以顯示相關(guān)信息了
先了解一種工作模式叫透?jìng)鳎@個(gè)很有用處
透?jìng)鞯囊馑际菍iFi模塊設(shè)置為透?jìng)髂J剑ㄇ疤崾窃O(shè)置為單連接,而且已經(jīng)和TCP server建立連接)后,發(fā)給WiFi模塊的信息(AT指令)WiFi模塊就不處理了,直接將輸入的發(fā)給TCPserver
這樣如果使用WiFi模塊和STM32連接,STM32發(fā)給ESP8266后,其實(shí)就是發(fā)給了網(wǎng)絡(luò)上的TCP server,就不用使用AT+CIPSEND命令設(shè)置長(zhǎng)度再發(fā)送數(shù)據(jù)了。
設(shè)置透?jìng)髂J?/font>
第一次設(shè)置不對(duì)
AT+CIPMUX=0


OK
AT+CIPSTART="TCP","192.168.31.171",6699

CONNECT

OK
AT+CIPSMODE=1


ERROR
AT+CIPMODE=1


OK
AT+CIPMODE=1


OK
AT+CIPMODE=1


OK
BHBUUHY

ERROR
hhhhhhhhhhBHBUUHY

ERROR
BHBUUHY

ERROR
AT+CIFSR

+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"5e:cf:7f:a5:a0:6f"
+CIFSR:STAIP,"192.168.31.103"
+CIFSR:STAMAC,"5c:cf:7f:a5:a0:6f"

OK
AT+CIPSTATUS

STATUS:3
+CIPSTATUS:0,"TCP","192.168.31.171",6699,46789,0

OK
AT+CIPSENDBUF=16

IPMODE=1

ERROR
AT+CIPSENDBUF=16AT+CIPSENDBUF=16AT+CIPSENDBUF=16AT+CIPSENDBUF=16AT+CIPSENDBUF=16AT+CIPSENDBUF=16AT+CIPSENDBUF=16

IPMODE=1

ERROR
CLOSED
好像應(yīng)該設(shè)置為客戶端模式,再設(shè)置單連接,再連接TCP再設(shè)置透?jìng)鳎?/font>
設(shè)置為客戶端模式(其實(shí)設(shè)置為STA/AP模式也可以)
重啟
AT查看
查看IP
連接AP
查看IP
設(shè)置單連接
連接TCP server
查看IP
設(shè)置透?jìng)?/font>
輸入AT+CIPSEND
之后輸入的任何信息都會(huì)直接傳輸?shù)絋CP server
輸入連續(xù)的+++結(jié)束透?jìng)?/font>
輸入AT+CIPCLOSE斷開(kāi)TCP連接
AT+CWMODE_DEF=1


OK
AT+RST


OK

ets Jan 8 2013,rst cause:1, boot mode:(3,7)

load0x40100000, len 2408, room 16
tail8
chksum0xe5
load0x3ffe8000, len 776, room 0
tail8
chksum0x84
load0x3ffe8310, len 632, room 0
tail8
chksum0xd8
csum0xd8

2ndboot version : 1.6
  SPI Speed     : 40MHz
  SPI Mode      : DOUT
  SPI Flash Size & Map: 8Mbit(512KB+512KB)
jumpto run user1 @ 1000

屻?僶鞗;凔g|?宒噋;l勩;沝宒? d`屻s踠?? l屸{搇嚐???`
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:193421 發(fā)表于 2020-3-15 21:06 | 只看該作者
寫(xiě)得很詳細(xì),謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表