Arduino:连接Arduino和ESP8266又称ESP-01

时间:2016-05-31 17:26:34

标签: arduino wifi esp8266

我有一个Arduino Mega 2560.

我想将它连接到ESP8266又名ESP 01模块。

首先我打开并编译一个空草图。当我启动串行监视器时,我在串行监视器中写入AT命令(如连接WIFI),然后单击“发送”按钮。在这种情况下,一切正常。

在我测试了命令正常工作后,我想编写一个Arduino草图,其中我实现了自动发送命令的功能,而无需在串行监视器中编写它。

为此,我写了这段代码:

#define SSID "test"
#define PASS "1111"

void connectWiFi() {
Serial.write(“AT+CWJAP=\"SSID\",\"PASS\""); 
}

void setup() {

Serial.begin(9600);

connectWiFi();

}

void loop() {
}

当我尝试在串行监视器中执行代码时,它只打印字符串,但命令不起作用。

为什么当我在串口监视器中编写此命令时,以及当我尝试上面的代码时,该命令不起作用?

有没有办法从arduino sketch传递和执行命令?如果错误,我的代码有什么问题?

提前感谢您的回复。

抱歉我的英文。

1 个答案:

答案 0 :(得分:2)

Serial.write(...)使arduino通过其串行端口(即USB或引脚0和1)写入。让Arduino直接向ESP发送指令的更好方法是定义"软件序列"引脚与ESP沟通。

您需要包含SoftwareSerial.h并使用SoftwareSerial esp8266(2,3);来使引脚2和3与ESP串行通信。

您的代码应如下所示:

#include <SoftwareSerial.h>

#define SSID "test"
#define PASS "1111"

SoftwareSerial esp8266(2,3);
void setup(){
  Serial.begin(9600);
  esp8266.begin(9600); //ensure this baudrate is similar to your ESP's
  delay(500); //give it some time

  esp8266.println(“AT+CWJAP=\"SSID\",\"PASS\""); //send to ESP this way
}

void loop(){
  if(esp8266.available()){
    while(esp8266.available()){
      Serial.write(esp8266.read()); //make serial monitor print what ESP sends
    }  
  }
}

您还可以参考this example了解更多详情