標題: esp8266配置(一) [打印本頁]
作者: hrojgi 時間: 2017-11-2 19:20
標題: esp8266配置(一)
主要
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屸{搇嚐???`
作者: 碎碎念 時間: 2020-3-15 21:06
寫得很詳細,謝謝
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
中文字幕亚洲区一区二
|
国产一级大片
|
一区二区日韩
|
91 在线|
欧美一区二区大片
|
久草新视频
|
欧美日韩精品一区
|
精品一二三|
99精品视频免费在线观看
|
久久久久久国产精品免费免费狐狸
|
91操操操
|
日韩在线观看中文字幕
|
岛国av免费看
|
日韩区
|
亚洲女优在线播放
|
国产亚洲精品综合一区
|
久久久久网站
|
黄色网毛片
|
国产91在线 | 亚洲
|
国产精品视频导航
|
国产成人精品999在线观看
|
国产乱码精品一区二三赶尸艳谈
|
欧美日韩亚洲系列
|
日日淫
|
国产欧美精品区一区二区三区
|
国产农村妇女毛片精品久久麻豆
|
日韩成人在线播放
|
成人影院一区二区三区
|
中文字幕一区二区三区四区
|
伊人天堂网
|
99精品国产一区二区青青牛奶
|
99亚洲
|
亚洲首页
|
一级黄色片在线免费观看
|
翔田千里一区二区
|
国产高清精品网站
|
黄色欧美视频
|
一级毛片视频免费观看
|
日本网站免费观看
|
亚洲精品片
|
九九爱这里只有精品
|