ESP8266连续向Arduino返回'垃圾'

时间:2017-01-17 15:46:59

标签: arduino esp8266

我买了ESP8266模块,我通过SoftwareSerial(PIN 10 - RX,PIN 11 - TX)连接到Arduino UNO板, 我还为ESP8266 5V(450mA)提供了外部电源,它通过降压转换器降至3.3V。

连接:

ESP 8266

Vcc - 来自外部电源的3.3V电压

CH_PD - 来自外部电源的3.3V电压

GND - 来自外部的GND

重置 - 未连接

GPIO - 未连接

GPI2 - 未连接

来自Arduino的RX< - 5V通过3x10K欧姆电阻降低到3.3V

TX - > 3.3到arduino

Electrical connections

我上传到Arduino示例程序来测试esp8266通信。

Arduino计划:

#include <SoftwareSerial.h>

const byte rxPin = 10; // Wire this to Tx Pin of ESP8266
const byte txPin = 11; // Wire this to Rx Pin of ESP8266

// We'll use a software serial interface to connect to ESP8266
SoftwareSerial ESP8266 (rxPin, txPin);

void setup() {
  Serial.begin(9600);
  ESP8266.begin(9600); // Change this to the baudrate used by ESP8266
  delay(1000); // Let the module self-initialize
}

void loop() {

  delay(100);

  Serial.println("Sending an AT command...");
  ESP8266.println("AT\r\n");
  delay(30);
  while (ESP8266.available()){
     String inData = ESP8266.readStringUntil('\n');
     Serial.println("Got reponse from ESP8266: " + inData);
  }  
}

但我没有正确地工作......当Arduino向ESP发送消息时。 ESP仅返回rubish .. withot“Ready”并且不获取固件信息。我测试了所有的速度波特率它看起来是一样的......

Serial monitor - printscreen

当我从串口监视器EPS手动发送“AT”命令时,不响应任何内容!

6 个答案:

答案 0 :(得分:2)

连接很完美。默认情况下,esp8266的波特率为115200.因此,第一次为esp8266和串口监视器保持波特率115200。

Serial.begin(115200)
ESP8266.begin(115200)

现在需要更改esp8266的波特率。命令可以通过串行通信发送。使用此命令。

AT+CIOBAUD=9600

在此之后,上述代码应按预期工作。

答案 1 :(得分:1)

更换10K电阻器。不使用它。当您使用高阻值电阻时,它会抑制电流,因此您不会从该侧读取任何信号。 尝试使用低值电阻,并使用 9600波特率

答案 2 :(得分:0)

不要将SoftwareSerial用于19200波特以上的速度。

默认情况下,ESP8266以115000 Baud进行通话。使用USB / Serial将其直接连接到计算机,使用115000 Baud的putty与ESP通信。将ESP的波特率更改为19200(早期FW版AT + CIOBAUD = 19200,新版AT + UARTsomething)。

SoftwareSerial应该可以工作,但我不再使用它 - 各种问题; HardwareSerial好多了。只需在计算机和ESP之间切换Arduino RX / TX引脚;但是没有监视器输出;使用LED为您提供线索。

答案 3 :(得分:0)

为esp8266 Rx引脚使用逻辑电平转换器。 Arduino逻辑为5.0 v,esp8266为3.3v逻辑。

答案 4 :(得分:0)

使ext电源和arduino共同使用。

答案 5 :(得分:0)

如果你想用arduino uno编程esp模块,你需要绕过arduino并编写代码 脚步: 销

arduino tx - &gt; rx (esp) arduino rx - &gt; tx (esp)

3.3v供应 - &gt; vcc,ch_pd(esp)

GND - &gt; GND,Gpi0(esp)

Baudrate适用于我 9600,57600