久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5137|回復: 1
打印 上一主題 下一主題
收起左側

esp8266配置(一)

[復制鏈接]
跳轉到指定樓層
樓主
ID:245368 發表于 2017-11-2 19:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
主要
esp8266怎么配置
esp8266和USB轉TTL連接
esp8266簡單介紹
esp8266連接路由器
esp8266通過路由器連接在同一局域網中的電腦,建立TCP連接
esp8266使用串口發送數據到電腦上的網絡調試助手
esp8266使用串口通過局域網發送到電腦上自己寫的Java程序
esp8266的透傳模式
esp8266使用透傳模式連接到電腦的網絡調試助手
esp8266使用透傳模式連接到電腦上的java程序
USB轉TTL如何和esp8266連接?
USB轉TTL
5V
VCC
3V3
TXD
RXD
GND

esp8266
  
3V3
  
  
RX
  
  
IO16
  
  
IO0
  
  
EN
  
  
IC2
  
  
TX
  
  
GND
  

連接
  
USB轉TTL
  
  
esp8266
  
  
TXD
  
  
RX
  
  
RXD
  
  
TX
  
  
GND
  
  
GND
  

VCC和3V3用短路帽連接后再同時連到esp8266的3V3和EN
esp8266測試
打開串口調試助手,選擇發送新行
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     連接其他設備來上網,作為client
STA 站點,每一個連接到無線網絡中的終端(如筆記本電腦、 PDA及其它可以聯網的用戶設備)都可稱為一個站點
AP       可以當作路由器來給其他esp8266或其他設備連接
是無線接入點,是一個無線網絡的創建者,是網絡的中心節點
STA+AP
Wifi模塊包括兩種類型的拓撲形式:基礎網(Infra)和自組網(Adhoc)
      基于AP組建的基礎無線網絡(Infra):Infra也稱為基礎網,是由AP創建,眾多STA加入所組成的無線網絡,這種類型的網絡的特點是AP是整個網絡的中心,網絡中所有的通信都通過 AP 來轉發完成。
      基于自組網的無線網絡(Adhoc):Adhoc也稱為自組網,是僅由兩個及以上STA自己組成,網絡中不存在AP,這種類型的網絡是一種松散的結構, 網絡中所有的 STA 都可以直接通信
單連接,多連接和透傳模式的關系
多連接情況下(”AT+CIPMUX=1“),才能開啟TCP 服務器
服務器僅⽀持多連接
創建 TCP 服務器后,⾃動建⽴ TCP server 監聽
當有 TCP client 接⼊,會⾃動按順序占⽤⼀個連接 id
⾮透傳模式( “AT+CIPMODE=0”) ,才能設置為多連接
透傳模式,僅⽀持 TCP 單連接和 UDP 固定通信對端的情況
esp8266連接路由器
esp8266已經設置為STA/AP模式
指令:
AT+CWJAP_CUR="Cise_132_Middle",""
AT+CWJAP_CUR="Cise_128_01","213213213"

WIFICONNECTED
WIFIGOT IP

OK
這樣esp8266就有一個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
那么查詢一下現在的網絡連接狀態
AT+CIPSTATUS

STATUS:2

OK
參數說明:
<stat>
2:獲得 IP
3:已連接
4:斷開連接
5:未連接到WiFi
測試一下域名解析功能
AT+CIPDOMAIN="www.baidu.com"

+CIPDOMAIN:61.135.169.125

OK
現在試一下和電腦建立TCP連接
先建立單連接
查詢電腦IP
192.168.1.108
255.255.255.0
192.168.1.1
AT+CIPSTART="TCP","192.168.1.108",8000
不能先用esp8266建立一個tcp連接,連不上的,因為TCP server 還沒有建立,esp8266也連不上
先用網絡調試助手創建一個TCP  server,打開指定端口,再連接
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
在網絡調試助手上顯示已經和192.168.31.103建立連接
通過路由器在一個局域網中向電腦發送數據
esp8266和電腦連接同一個路由器
AT+CIPSEND=9


OK
>123asdfgh

busys...

Recv9 bytes
上面是用網絡調試助手創建TCP Server,那么可不可以使用java創建一個serversocket來接收數據呢?
esp發送命令
AT+CIPSENDBUF=16
一直按回車就可以了,因為這個命令本身的長度就是16,可以發送自己
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);//可以使用滾動條

//設置滾動條
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);//不能忘了加滾動條
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("發生異常.\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("服務器已啟動!\n");

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

}

}
主要的問題是使用內部類和線程
測試結果:
使用Java的serversocket是可以接收到esp發送的數據的,不過由于使用的是buffer,要發送足夠的數據,因為AT+CIPSENDBUF=16太短了,Java程序才會顯示出來,而且有亂碼
怎么解決有什么接收什么和防止亂碼的問題?
涉及到編碼問題,稍后再研究
esp8266接收數據
直接使用TCP server發送數據,WiFi模塊就能在串口上顯示,不需要特殊的配置
不過如果需要顯示發送消息來的TCP server的IP和端口需要使用AT指令AT+CIPDINFO=1就可以顯示相關信息了
先了解一種工作模式叫透傳,這個很有用處
透傳的意思是將WiFi模塊設置為透傳模式(前提是設置為單連接,而且已經和TCP server建立連接)后,發給WiFi模塊的信息(AT指令)WiFi模塊就不處理了,直接將輸入的發給TCPserver
這樣如果使用WiFi模塊和STM32連接,STM32發給ESP8266后,其實就是發給了網絡上的TCP server,就不用使用AT+CIPSEND命令設置長度再發送數據了。
設置透傳模式
第一次設置不對
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
好像應該設置為客戶端模式,再設置單連接,再連接TCP再設置透傳,
設置為客戶端模式(其實設置為STA/AP模式也可以)
重啟
AT查看
查看IP
連接AP
查看IP
設置單連接
連接TCP server
查看IP
設置透傳
輸入AT+CIPSEND
之后輸入的任何信息都會直接傳輸到TCP server
輸入連續的+++結束透傳
輸入AT+CIPCLOSE斷開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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:193421 發表于 2020-3-15 21:06 | 只看該作者
寫得很詳細,謝謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91免费视频 | 国产一级毛片视频 | 伊人最新网址 | 欧美黄色精品 | 日韩一区二区不卡 | 国产精品久久久久久久久免费相片 | 午夜精品影院 | 久久久免费在线观看 | 999热精品视频 | 精品综合久久久 | 范冰冰一级做a爰片久久毛片 | 国产精品日韩在线观看 | 91九色婷婷 | 一区二区三区在线免费 | 国产欧美在线播放 | 亚洲毛片在线观看 | 午夜视频精品 | 精品国产一区二区三区观看不卡 | 日本啊v在线 | 免费a大片 | 在线午夜电影 | 成人免费在线视频 | 一区二区在线看 | 精品国产成人 | 国产欧美一区二区三区久久 | 一区二区三区精品视频 | 一二区电影 | 成人av一区| 一级做受毛片免费大片 | 日韩欧美一区二区三区 | 国产精品视频一二三区 | 亚洲精品精品 | 国产精品久久久久久久岛一牛影视 | 真人女人一级毛片免费播放 | 日韩精品久久久久 | 日韩久久中文字幕 | 日韩三级一区 | 欧美成视频 | 一区2区 | 91在线网站 | 精品免费国产视频 |