ESP8266的PC客户端和Arduino两种方式的连接及使用笔记

本文详细介绍了如何在Arduino UNO上连接ESP8266,包括连接电路、编写连接程序,以及如何通过AT指令集进行交互。同时,还讲解了PC客户端如何通过USB转TTL模块连接ESP8266,完成串口通信的初始化和AT指令的执行。
摘要由CSDN通过智能技术生成

Arduino UNO上连接esp8266

连接电路

正常供电后蓝灯闪两下,红灯常亮,模块正常启动。
注意使用的是3.3V的电源
ESP8266与arduino 的电路连接

编写连接程序

1. Arduino引用软串口库

由于UNO只有Serial,没有Serial1,所以为实现相关功能必须使用软串口的方式进行连接,这里我们将Digital 的10、11两个口配置成软串口,10为RX,11为TX口。
❗❗❗注意连接的时候要跟模块的针脚交叉连接

从程序上配置软串口,

#include <SoftwareSerial.h>
//软串口配置
SoftwareSerial mySerial(10, 11); //RX--10;TX--11;两针脚交叉连接

第一次使用或者测试的时候仅用上面的程序即可,再往后的学习中可以再加上一些程序用来进行一些常规性的检测。

2. 初始化

在setup函数中的一些初始化设定。
❗❗❗注意波特率的设定值,Arduino 的串口波特率要与ESP8266的WiFi模组波特率相同,波特率不一致时就会出现乱码或者丢包现象。
⭐有种特殊的情况是ESP8266的WiFi模组的出厂默认波特率过高超过了Arduino 最高支持的波特率,
👉解决办法:
执行下面的AT指令可修改默认波特率
AT+UART_DEF=57600,8,1,0,0

void setup() {
   
  // 硬件串口 
  Serial.begin(9600);
  while (!Serial) {
   }//判断串口是否打开
  // 软串口 
  mySerial.begin(9600);
  //  mySerial.println("AT+UART_DEF=9600,8,1,0,0");//解决特殊情况,或者先连接后在串口监视器中输入AT指令
  //  delay(1000);
  while (!mySerial) {
   }//判断串口是否打开
}
3. AT指令集使用说明
  • 使用Arduino IDE的串口监视器
    直接在arduino IDE中的串口监视器中进行AT指令的发送,实现程序如下,是将IDE的串口监视器输入内容连接到ESP8266的串口上,将ESP8266的打印连接到IDE的监视器上。
void loop() // run over and over
{
   
  if (mySerial.available())
    Serial.write(mySerial.read());//IDE的串口监视器输入内容输入ESP8266中;
  if (Serial.available())
    mySerial.write(Serial.read());//ESP8266串口打印的东西打印到IDE的串口监视器上;
    }

AT指令使用例子:

  • 在Arduino的程序中直接进行AT指令执行
    可以自己编写封装函数,也可以直接使用一些网上已经有的封装函数,这个官方是没有的,网上的也都基本没有什么大问题。
    这里使用找到的一个封装公共函数–飘易封装
Arduino IDE中使用ESP8266开发板创建TCP客户端并以中断方式接收数据时,你将需要使用ESP8266特有的库,如`ESP8266WiFi`和`ESP8266WebServer`,并利用其提供的回调函数来处理网络事件和数据接收。以下是一个简化的例子来说明如何设置TCP客户端以中断方式接收数据: ```cpp #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> // 创建一个WiFiClient实例来处理TCP连接 WiFiClient client; // 创建一个WebServer对象,监听特定端口 ESP8266WebServer server(80); void setup() { Serial.begin(115200); WiFi.begin("SSID", "PASSWORD"); // 连接到你的WiFi网络 // 等待连接成功 while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); // 定义一个处理函数来接收数据 server.on("/data", []() { if (client.available()) { // 检查客户端是否可用 String line = client.readStringUntil('\n'); // 读取一行数据 // 处理接收到的数据 Serial.println("Received data: " + line); } }); // 启动服务器 server.begin(); } void loop() { // 调用处理函数 server.handleClient(); } ``` 在这个例子中,我们使用了`ESP8266WebServer`类的`handleClient`方法来轮询检查是否有新的数据可读。由于ESP8266的WiFi库不支持传统的中断处理方式,所以我们使用了这种方法来“轮询”数据。这意味着在`loop`函数中周期性地调用`server.handleClient()`来检查是否有客户端连接和数据可读。 需要注意的是,ESP8266的编程通常涉及到非阻塞编程模式,因为你不能直接使用传统意义上的中断来处理TCP数据接收。在这种情况下,你可以使用`WiFiClient`对象提供的`available()`和`readStringUntil()`方法来处理数据接收。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值