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

路由器分配给 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 R3 WiFi无线收发转接板
5V VCC
GND GND
0 TX
1 RX

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

c 复制代码
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接入物联网平台。

相关推荐
久绊A2 小时前
网络信息系统的整个生命周期
网络
_PowerShell2 小时前
[ DOS 命令基础 3 ] DOS 命令详解-文件操作相关命令
网络·dos命令入门到精通·dos命令基础·dos命令之文件操作命令详解·文件复制命令详解·文件对比命令详解·文件删除命令详解·文件查找命令详解
_.Switch5 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
qq_254674415 小时前
工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置
网络
JokerSZ.5 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
小松学前端7 小时前
第六章 7.0 LinkList
java·开发语言·网络
城南vision8 小时前
计算机网络——TCP篇
网络·tcp/ip·计算机网络
Ciderw8 小时前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
Tony聊跨境9 小时前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip