0

我在使用 arduino uno 和 esp8266 编程时遇到了一点问题。我已将 arduino uno 与 esp8266 模块连接起来。

当我运行一个空程序以使用其命令测试 esp8266 时,我得到了正确的结果。

手动输入的命令和结果: 在此处输入图像描述

当我在串行监视器命令 AT 中手动给出时,它会为所有命令提供正确且正确的结果。

但是,当我尝试使用程序自动化时,我没有得到输出,因为当我在串行监视器上手动输入时,你能检查我的代码吗?

void setup() {      
    Serial.begin(115200);
}

void loop() {    
    delay(5000);
    Serial.println("AT+RST");
    while(Serial.available())
    {
        String s=Serial.readString();
        Serial.println(s);
    }  
}

我的输出是: 在此处输入图像描述

我的下一个节目

#include<SoftwareSerial.h>

SoftwareSerial esp8266(2,3);

void setup() { 
    Serial.begin(115200);
    esp8266.begin(115200);
    delay(1000);  
}

void loop() {
    delay(2000);
    String command="AT+RST";
    esp8266.println(command);
    if(esp8266.available())
    {
        while(esp8266.available())
        {
            char c=esp8266.read();
            Serial.write(c);
        }
    }
}

我对这个程序的结果是在串行监视器上什么都没有。

我想将程序中的命令作为字符串获取,以便在充当 Web 服务器时可以执行诸如 find 或其他字符串操作。

有人请帮助我。

4

2 回答 2

0

尝试使用换行符和回车符运行相同的命令。我已经看到一些在 AT 模式下的 ESP8266 模块会忽略命令。

// This should give you "OK" as a sanity check
Serial.print("AT\r\n");
// And then you can run this after
Serial.print("AT+RST\r\n");
于 2015-11-25T20:52:11.993 回答
0

做一件事

#include<SoftwareSerial.h>

SoftwareSerial esp8266(2,3);

void setup() { 
    Serial.begin(115200);
    esp8266.begin(115200);
    delay(1000);  
}

void loop() {
    delay(2000);
String command="AT+RST\r\n";
esp8266.println(command);
c=0;
while(!esp8266.find("reset"))
{
    c++;
    if(c>100)
    {
        break;
     }
}
String Response=esp8266.readString();
Serial.write(Response);

}

试试这个,它肯定会工作,如果它没有,那么请交换 arduino 上的 rx 和 tx 引脚而不是代码,然后它就会工作

于 2017-02-02T13:40:49.723 回答