如何从连接到arduino的ESP8266获得AT响应

how to get AT response from ESP8266 connected to arduino

我在用ESP8266 wifi模块打架,连接arduino。将固件更新到最新版本后,我开始对 arduino 进行编程以获取来自 wifi 的数据。我看到很多关于通过 ESP8266 maiking webserver 的例子,但 none 对我有用。

ESP 连接到我的 Arduino Leonardo: >

Arduino -> ESP8266

power 3.3V -> vcc

ground -> ground

tx -> rx (via logic level converter 5->3.3V)

rx -> tx (via logix level converter

power 3.3V ->gpio0 (without any resistors)

我做了简单的草图:

void setup(void){

  Serial.begin(9600);
  Serial1.begin(115200);

}

void loop() {
  if(Serial1.available())
  {
    Serial.println("WIFI IS AVAILABLE");
    Serial1.println("AT");
    delay(1000);
  } else {
    Serial.println("WIFI not available.");
    delay(1000);
  }
}

执行后,ESP8266 通电(红色 LED 亮起),蓝色 LED 每隔一秒(闪烁)。这让我确信在 fakt "AT" 命令中被传输到模块。但是也有两个问题:

有人可以帮助我吗?

您需要做的是稍微改变一下您的方法。不检查数据是否可用。诀窍是向模块发送一些东西,然后检查数据。

做类似的事情:

while (Serial.available() > 0)
  Serial.read();

在您要发送任何命令之前清除缓冲区。然后发送命令。然后检查数据作为响应。

不要不要依赖蓝色 LED 作为任何指示。这只是表明 ESP8266 正以某种方式忙于使用 WiFi,无论是在保持活动状态、初始化 WiFi 还是其他。它可以与您发送的任何内容完全无关。如果您没有收到有效响应,那么您必须假设您和模块之间存在通信问题。但有一件事是,如果蓝色 LED 永远不会熄灭,则说明模块已冻结或固件已损坏。我有过很多次。然后我重新加载固件,通常会修复它。它通常只发生在我重置、上传代码或更改线路的开发期间。

我在一个单独的自建板上使用我的 atmega328,而不是 Uno 上的那个,运行 那个板本身在 3.3v 上,然后在那个 atmega 板和我的之间使用逻辑电平转换器Uno 这样我就可以编程了。但是我在非通讯方面遇到过零星的问题,但我怀疑这可能与电源有关。请注意,运行通过逻辑电平转换器连接您的串口也可能导致通信问题。

建议接线:除RX、TX、VCC和GND外的所有引脚都通过10K上拉电阻连接到VCC。 RX 连接到 arduino 的 TX,TX 连接到 arduino 的 RX。你当然知道VCC和GND的去向。