Arduino:将 Arduino 与 ESP8266 aka ESP-01 连接
Arduino: connect Arduino with ESP8266 aka ESP-01
我有一个 Arduino Mega 2560。
我想将它连接到 ESP8266 aka 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传递和执行命令?如果我的代码错了,那是什么问题?
提前感谢您的回复。
对不起我的英语。
Serial.write(...)
使 arduino 通过其串行端口(即 USB 或引脚 0 和 1)进行写入。让 Arduino 直接向 ESP 发送指令的更好方法是定义 "software serial" 引脚与 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了解更多详情
我有一个 Arduino Mega 2560。
我想将它连接到 ESP8266 aka 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传递和执行命令?如果我的代码错了,那是什么问题?
提前感谢您的回复。
对不起我的英语。
Serial.write(...)
使 arduino 通过其串行端口(即 USB 或引脚 0 和 1)进行写入。让 Arduino 直接向 ESP 发送指令的更好方法是定义 "software serial" 引脚与 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了解更多详情