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

一、材料准备

Arduino Uno R3开发板 × 1
USB串口通信数据线(Uno开发板使用) × 1
在这里插入图片描述
ESP8266-01S Wi-Fi模块 × 1
在这里插入图片描述
ESP8266固件烧录下载器(烧录固件使用) × 1
在这里插入图片描述
WiFi无线收发转接板(适用于ESP-01S、ESP-01)
在这里插入图片描述
杜邦线 若干

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

用到的资料链接链接:
https://pan.baidu.com/s/1zYrIcn_DDN5NJKM-Ql0-Ww
提取码:wifi
1、首先按照安装好串口驱动,版本老一点
在这里插入图片描述
2、将esp-01s插入固件烧录下载器,并插入电脑的USB接口
在这里插入图片描述

3、打开资料里面的flash_download_tools_v3.6.8文件夹下的
在这里插入图片描述
在这里插入图片描述
4、从提供资料文件Ai-Thinker_ESP8266_AT_Firmware_DOUT_v1.5.4.1-a_20171130中选择需要烧录的固件文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、按照如下图配置
在这里插入图片描述

在这里插入图片描述
6、烧录固件
在这里插入图片描述
下载成功后截图
在这里插入图片描述

如果提示串口连接失败,则使用资料里面提供的驱动软件,卸载驱动重新安装
在这里插入图片描述
7、打开资料里面的UartAssist.exe串口调试助手进行测试
请添加图片描述

三、连接网络

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连接。
在这里插入图片描述
2、设置加入AP
AT+CWJAP=“SSID”,“PWD”,返回ok则设置成功
SSID:连接wifi的id
PWD:连接wifi的密码
连接网络后,然后可以通过AT+CIFSR查询本地IP地址
在这里插入图片描述
3、其他指令
查询当前的工作模式AT+CWMODE?
查询当前连接的的APAT+CWJAP?
查看当前无线路由器列表AT+CWLAP
在这里插入图片描述
复位指令(重启):AT+RST
设置波特率:AT+CIOBAUD=BaudRate(最好将波特率设成9600,与arduino uno r3相同)
路由器分配给 ESP8266 的局域网 IP 以及网关地址和子网掩码:AT+CIPSTA?

四、TCP透传

1、首先需要建立一个TCP 服务器,需要借助资料包中的NetAssist.exe网络调试助手 + 自己的电脑
打开网络调试助手,按照图片配置
在这里插入图片描述
2、利用串口助手将 ESP8266 连接到 TCP 服务器
通过AT+CIPSTART="协议模式","服务端IP地址",端口号建立连接,成功返回CONNECT OK
在这里插入图片描述
3、这个时候,在输入框发送内容的话,依然是默认为指令。如果我们想把数据直接发送给 TCP 服务器,那么就需要开启透传模式。所谓的透传模式,可以视为 ESP8266 为透明状态,客户端发送的信息直接就传输给服务端。
发送AT+CIPMODE=1,开启透传模式。
发送AT+CIPMODE?,查询是否为透传
在这里插入图片描述
这时候通过网络调试助手可以向ESP-01S发送消息了,但是想通过ESP-01向网络调试助手发消息需要再发送AT+CIPSEND
在这里插入图片描述
发送AT+CIPSEND,发送的任何数据,就直接传输到服务器了
在这里插入图片描述
退出透传:先发送 +++(不要带回车),再发送 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 R3WiFi无线收发转接板
5VVCC
GNDGND
0TX
1RX

打开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 mqtt将Arduino Uno R3接入物联网平台。

  • 20
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值