我有一个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传递和执行命令?如果错误,我的代码有什么问题?
提前感谢您的回复。
抱歉我的英文。
答案 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了解更多详情