Arduino Uno R3通过ESP-01S连接网络

一、材料准备

Arduino Uno R3开发板 × 1
USB串口通信数据线(Uno开发板使用) × 1
Arduino Uno R3通过ESP-01S连接网络_第1张图片
ESP8266-01S Wi-Fi模块 × 1
Arduino Uno R3通过ESP-01S连接网络_第2张图片
ESP8266固件烧录下载器(烧录固件使用) × 1
Arduino Uno R3通过ESP-01S连接网络_第3张图片
WiFi无线收发转接板(适用于ESP-01S、ESP-01)
Arduino Uno R3通过ESP-01S连接网络_第4张图片
杜邦线 若干

二、烧录ESP-01S的AT固件

用到的资料链接链接:
https://pan.baidu.com/s/1zYrIcn_DDN5NJKM-Ql0-Ww
提取码:wifi
1、首先按照安装好串口驱动,版本老一点
Arduino Uno R3通过ESP-01S连接网络_第5张图片
2、将esp-01s插入固件烧录下载器,并插入电脑的USB接口
Arduino Uno R3通过ESP-01S连接网络_第6张图片

3、打开资料里面的flash_download_tools_v3.6.8文件夹下的
Arduino Uno R3通过ESP-01S连接网络_第7张图片
Arduino Uno R3通过ESP-01S连接网络_第8张图片
4、从提供资料文件Ai-Thinker_ESP8266_AT_Firmware_DOUT_v1.5.4.1-a_20171130中选择需要烧录的固件文件
Arduino Uno R3通过ESP-01S连接网络_第9张图片
Arduino Uno R3通过ESP-01S连接网络_第10张图片
Arduino Uno R3通过ESP-01S连接网络_第11张图片
Arduino Uno R3通过ESP-01S连接网络_第12张图片
5、按照如下图配置
Arduino Uno R3通过ESP-01S连接网络_第13张图片

Arduino Uno R3通过ESP-01S连接网络_第14张图片
6、烧录固件
Arduino Uno R3通过ESP-01S连接网络_第15张图片
下载成功后截图
Arduino Uno R3通过ESP-01S连接网络_第16张图片

如果提示串口连接失败,则使用资料里面提供的驱动软件,卸载驱动重新按照
Arduino Uno R3通过ESP-01S连接网络_第17张图片
7、打开资料里面的UartAssist.exe串口调试助手进行测试
Arduino Uno R3通过ESP-01S连接网络_第18张图片

三、连接网络

1、设置工作模式
还是在串口调试助手中,通过指令AT+CWMODE=Mode来设置工作模式;
Mode = 1,Station模式(客户端);在Station模式下,ESP-01S可以连接到现有的WiFi网络,充当设备的客户端,通过连接到WiFi网络,ESP-01S可以访问Internet,从而实现各种联网应用。
Mode = 2,AP模式(服务器、热点);在Access Point模式下,ESP-01S可以充当WiFi热点,允许其他WiFi设备连接到它,这种模式适用于创建一个独立的局域网络,使设备之间可以直接通信,而无需连接到外部网络。
Mode = 3, Station+AP模式(混合模式);这种模式结合了Station和Access Point两种模式,使ESP-01S既可以连接到现有WiFi网络,又可以充当WiFi热点,这使得ESP-01S可以在连接到外部网络的同时,为其他设备提供WiFi连接。
Arduino Uno R3通过ESP-01S连接网络_第19张图片
2、设置加入AP
AT+CWJAP=“SSID”,“PWD”,返回ok则设置成功
SSID:连接wifi的id
PWD:连接wifi的密码
连接网络后,然后可以通过AT+CIFSR查询本地IP地址
Arduino Uno R3通过ESP-01S连接网络_第20张图片
3、其他指令
查询当前的工作模式AT+CWMODE?
查询当前连接的的APAT+CWJAP?
查看当前无线路由器列表AT+CWLAP
Arduino Uno R3通过ESP-01S连接网络_第21张图片
复位指令(重启):AT+RST
设置波特率:AT+CIOBAUD=BaudRate
路由器分配给 ESP8266 的局域网 IP 以及网关地址和子网掩码:AT+CIPSTA?

四、TCP透传

1、首先需要建立一个TCP 服务器,需要借助资料包中的NetAssist.exe网络调试助手 + 自己的电脑
打开网络调试助手,按照图片配置
Arduino Uno R3通过ESP-01S连接网络_第22张图片
2、利用串口助手将 ESP8266 连接到 TCP 服务器
通过AT+CIPSTART="协议模式","服务端IP地址",端口号建立连接,成功返回CONNECT OK
Arduino Uno R3通过ESP-01S连接网络_第23张图片
3、这个时候,在输入框发送内容的话,依然是默认为指令。如果我们想把数据直接发送给 TCP 服务器,那么就需要开启透传模式。所谓的透传模式,可以视为 ESP8266 为透明状态,客户端发送的信息直接就传输给服务端。
发送AT+CIPMODE=1,开启透传模式。
发送AT+CIPMODE?,查询是否为透传
Arduino Uno R3通过ESP-01S连接网络_第24张图片
这时候通过网络调试助手可以向ESP-01S发送消息了,但是想通过ESP-01向网络调试助手发消息需要再发送AT+CIPSEND
Arduino Uno R3通过ESP-01S连接网络_第25张图片
发送AT+CIPSEND,发送的任何数据,就直接传输到服务器了
Arduino Uno R3通过ESP-01S连接网络_第26张图片
退出透传:先发送 +++(不要带回车),再发送 AT+CIPMODE=0
断开 TCP 连接:AT+CWCLOSE
断开热点:AT+CWQAP

五、实现Arduino Uno R3与服务器的通信

通过三、四部我们实现了ESP-01S与服务器通信,接下来实现Arduino Uno R3通过ESP-01S与服务器通信
按照如图将Arduino Uno R3、ESP-01S、WiFi无线收发转接板连接起来
Arduino Uno R3通过ESP-01S连接网络_第27张图片
接线方式如下:

Arduino Uno R3 WiFi无线收发转接板
5V VCC
GND GND
0 TX
1 RX

打开Arduino编辑器,将下面代码烧录至Arduino Uno R3,烧录的时候拔掉0、1(RX,TX)引脚的线

void setup() {

  Serial.begin(9600);
  //while (!send_cmd("AT", "OK"));
  //while (!send_cmd("AT+CWMODE=3", "OK"));                                         //工作模式   
  //while (!send_cmd("AT+CWJAP=\"HUAWEI nova3\",\"1234567#%$\"", "OK"));       //接入AP 
  while (!send_cmd("AT+CIPSTART=\"TCP\",\"192.168.1.180\",8080", "OK"));      //接入服务器
  while (!send_cmd("AT+CIPMODE=1", "OK"));                                   //透传模式
  while (!send_cmd("AT+CIPSEND", ">"));                                          //开始发送
  Serial.println("connect success");                        //发送报文信息

}

void loop() {

  if(Serial.available()>0)
  {
    char cmd = Serial.read();//读取蓝牙模块发送到串口的数据

    Serial.print(cmd);
  }

  
}

//boolean 成功返回true,失败返回false
boolean send_cmd(String data, char *keyword)
{
  boolean result = false;
  if (data != "")   //对于tcp连接命令,直接等待第二次回复
  {
    Serial.println(data);  //发送AT指令
  }
  if (data == "AT")              //寻找esp8266是否正常工作
  delay(1000);
  else
    while (!Serial.available());              // 等待wifi模块应答
    delay(200); 
  if (Serial.find(keyword))       //返回关键词判断,比如ok
  {
    return true;
  }
  else
  {
     return false;
   }
  while (Serial.available()) Serial.read();      //清空串口缓存
  delay(500); 
}

结果如图:
Arduino Uno R3通过ESP-01S连接网络_第28张图片
程序是将服务发送给Arduino Uno R3的消息转发回服务器,因而结果如上,根据自己需求更改代码即可。
后续还会写文章,使用ESP-01S mqtt将Arduino Uno R3接入物联网平台。

你可能感兴趣的:(网络)