从Arduino发送串口到ESP8266-01

时间:2019-03-30 04:14:57

标签: arduino esp8266 arduino-esp8266

我想在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);
    }
  }
}

您能帮我解决我的问题吗?

谢谢^ _ ^

1 个答案:

答案 0 :(得分:0)

该代码看起来像this Instructable,尽管那里有很多片段。在解决细节之前,需要进行一些更正:

  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