ESP8266连接到我的Arduino Uno

时间:2017-02-18 03:50:09

标签: arduino esp8266

我把ESP8266连接到我的Arduino Uno。使用空白草图我可以使用串行监视器使用这些命令将其连接到我的wifi网络

AT+IPR=9600
AT+CWMODE=1
AT+CWJAP="SSID_HERE",""

它是一个ip和一切。但现在我希望我的草图使用此代码

来执行此操作
#include <SoftwareSerial.h>

#define SSID "SSID_HERE"

void setup(){
  Serial.begin(9600);
  Serial.setTimeout(5000);
  delay(1000);
}

boolean connectWiFi()
{

 // connect
  Serial.println("AT+CWMODE=1");
  Serial.println("AT+CWJAP=\"SSID_HERE\",\"\"");
  delay(2000);
  if(Serial.find("OK"))
  {
    Serial.println("AT+CIFSR");
    Serial.flush();
    delay(1000);
    return true;
  }
  else
  {
    // Can not connect to the WiFi.
    return false;
  }
}

但它不起作用.. Serial.println显示在串行监视器中,但ESP8266似乎没有响应。我错过了什么?

2 个答案:

答案 0 :(得分:2)

AT命令以回车结束,因此您需要在打印的每个命令中添加“\ r”。

在您的代码行中看起来像:

Derived

参考:https://en.wikibooks.org/wiki/Serial_Programming/Modems_and_AT_Commands/Special_Commands_and_Character_Sequences

答案 1 :(得分:0)

这里的问题是你正在尝试使用引脚0和1用于串行通信,以及它的部分问题..因为arduino也使用串行,对我来说只使用0和0引脚真的很好。当我将arduino上的复位引脚接地时,串口为1。这将arduino变成虚拟设备。

你可以使用软件串口和两个不同的引脚,这样你就不会干扰arduino的硬件序列。

另外需要注意的是,下面的例子几乎不会起作用..对于其他人来说它会不会..这里的问题是软件序列不能正常工作/运行在115200 ..

您可以通过AT+UART_DEF=19200,8,1,0,0更改波特率,这也会禁用流量控制,然后使用速度不同的软件序列mySerial.begin(19200)

使用Serial.println("TEXT")会为您发送换行符,因此除非您使用Serial.print("TEXT\r\n")

,否则无需添加换行符

请勿使用:AT + IPR = ,因为这会阻止它并需要重新刷新

#include <SoftwareSerial.h>

SoftwareSerial mySerial(11, 10); // RX, TX

void setup() {
    // Open serial communications and wait for port to open:
    Serial.begin(115200);
    pinMode(11, INPUT);
    pinMode(10, OUTPUT);
    while (!Serial) {
      ; // wait for serial port to connect. Needed for native USB port only
    }
    Serial.println("ARDUINO: Starting");
    mySerial.begin(115200);
    Serial.println("ARDUINO: Sending AT Command");
    mySerial.println("AT");
}

void loop() { // run over and over
    if (mySerial.available()) {
        Serial.write(mySerial.read());
    }
    if (Serial.available()) {
        mySerial.write(Serial.read());
    }
}