【问题标题】:Send Serial from Arduino to ESP8266-01将串口从 Arduino 发送到 ESP8266-01
【发布时间】:2019-03-30 04:14:57
【问题描述】:

我想在 Arduino Uno R3 和 Esp8266 Esp-01 之间进行通信。 在这种情况下,我想通信或想从 esp8266 esp-01 向 arduino uno 发送数据(使用串行软件的字符串)。

问题是,如何在软件串行设置中插入RX和TX引脚,我已经尝试使用提供的示例代码,但它不能。

我的代码如下

适用于 ESP8266 ESP-01

#include <SoftwareSerial.h>
SoftwareSerial mhaUno(12, 12, false, 256);

void setup() {
  Serial.begin(9600);
  pinMode(0, OUTPUT);
}

void loop() {
  Serial.write("hello from esp");
  delay(1000);

  String IncomingString = "";
  boolean StringReady = false;

  while(mhaUno.available()){
    IncomingString = mhaUno.readString();
    StringReady = true;
  }

  if(StringReady) {
    if(IncomingString == "hello from uno") {
      digitalWrite(0, HIGH);
    } else {
      digitalWrite(0, LOW);
    }
  }
}

适用于 ARDUINO UNO R3

#include <SoftwareSerial.h>
SoftwareSerial esp8266(2,3); //RX, TX

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  Serial.write("hello from uno");
  delay(1000);

  String IncomingString = "";
  boolean StringReady = false;

  while(esp8266.available()){
    IncomingString = esp8266.readString();
    StringReady = true;
  }

  if(StringReady) {
    if(IncomingString == "hello from esp") {
      digitalWrite(13, HIGH);
    } else {
      digitalWrite(13, LOW);
    }
  }
}

你能帮我找出我的问题吗?

谢谢你^_^

【问题讨论】:

    标签: arduino esp8266 arduino-esp8266


    【解决方案1】:

    该代码看起来像this Instructable,尽管那里有很多sn-ps。在解决具体问题之前,先进行一些更正:

    1. 物理连接:您应该有一个分压器从 Uno 的软件定义的 TX 到 ESP 的软件定义的 RX(Uno 具有 5V 高逻辑电平,而 ESP 为 3.3V,并且在其引脚驱动不多时工作得更好以上)。
    2. 变量名称通常都是小写的 - 大写标识类,如 Serial、SoftwareSerial、String。

    除此之外,我会尝试复制该示例的配置:

    1. 使用mhaUno.write()esp8266.write(),因为每个设备的软件定义引脚可能连接到另一个的软件定义引脚,而不是另一个的默认引脚。目前,未使用自定义 TX 引脚。
    2. 如果不是这种情况,并且您确实打算从 ESP 的默认串行发送到 Uno 的 SoftwareSerial,则尝试匹配两个库的波特率(如示例所示)。
    3. 否则,从 3 开始,在 Uno 上为 TX 和 RX 使用不同的引脚。
    4. SoftwareSerial constructor 的文档没有提到构造函数的第四个参数,只是 SoftwareSerial(rxPin, txPin, inverse_logic)。这个例子也没有;尝试不使用它
    5. 串行线路上的单个意外字符将禁用您的通知 LED;考虑需要一个特定的字符串来关闭它,以便像esp8266.write("hello from esp\n")(或println())这样的无害命令将其保持打开状态。更好的是,使用 Serial 将 SoftwareSerial 接收到的内容打印到计算机终端,而不是依赖闪烁。

    你可以找到similar questions on the Arduino StackExchange

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2019-08-20
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多