我买了ESP8266模块,我通过SoftwareSerial(PIN 10 - RX,PIN 11 - TX)连接到Arduino UNO板, 我还为ESP8266 5V(450mA)提供了外部电源,它通过降压转换器降至3.3V。
连接:
ESP 8266
Vcc - 来自外部电源的3.3V电压
CH_PD - 来自外部电源的3.3V电压
GND - 来自外部的GND
重置 - 未连接
GPIO - 未连接
GPI2 - 未连接
来自Arduino的RX< - 5V通过3x10K欧姆电阻降低到3.3V
TX - > 3.3到arduino
我上传到Arduino示例程序来测试esp8266通信。
Arduino计划:
#include <SoftwareSerial.h>
const byte rxPin = 10; // Wire this to Tx Pin of ESP8266
const byte txPin = 11; // Wire this to Rx Pin of ESP8266
// We'll use a software serial interface to connect to ESP8266
SoftwareSerial ESP8266 (rxPin, txPin);
void setup() {
Serial.begin(9600);
ESP8266.begin(9600); // Change this to the baudrate used by ESP8266
delay(1000); // Let the module self-initialize
}
void loop() {
delay(100);
Serial.println("Sending an AT command...");
ESP8266.println("AT\r\n");
delay(30);
while (ESP8266.available()){
String inData = ESP8266.readStringUntil('\n');
Serial.println("Got reponse from ESP8266: " + inData);
}
}
但我没有正确地工作......当Arduino向ESP发送消息时。 ESP仅返回rubish .. withot“Ready”并且不获取固件信息。我测试了所有的速度波特率它看起来是一样的......
当我从串口监视器EPS手动发送“AT”命令时,不响应任何内容!
答案 0 :(得分:2)
连接很完美。默认情况下,esp8266的波特率为115200.因此,第一次为esp8266和串口监视器保持波特率115200。
Serial.begin(115200)
ESP8266.begin(115200)
现在需要更改esp8266的波特率。命令可以通过串行通信发送。使用此命令。
AT+CIOBAUD=9600
在此之后,上述代码应按预期工作。
答案 1 :(得分:1)
更换10K电阻器。不使用它。当您使用高阻值电阻时,它会抑制电流,因此您不会从该侧读取任何信号。 尝试使用低值电阻,并使用 9600波特率
答案 2 :(得分:0)
不要将SoftwareSerial用于19200波特以上的速度。
默认情况下,ESP8266以115000 Baud进行通话。使用USB / Serial将其直接连接到计算机,使用115000 Baud的putty与ESP通信。将ESP的波特率更改为19200(早期FW版AT + CIOBAUD = 19200,新版AT + UARTsomething)。
SoftwareSerial应该可以工作,但我不再使用它 - 各种问题; HardwareSerial好多了。只需在计算机和ESP之间切换Arduino RX / TX引脚;但是没有监视器输出;使用LED为您提供线索。
答案 3 :(得分:0)
为esp8266 Rx引脚使用逻辑电平转换器。 Arduino逻辑为5.0 v,esp8266为3.3v逻辑。
答案 4 :(得分:0)
使ext电源和arduino共同使用。
答案 5 :(得分:0)
如果你想用arduino uno编程esp模块,你需要绕过arduino并编写代码 脚步: 销
arduino tx - &gt; rx (esp) arduino rx - &gt; tx (esp)
3.3v供应 - &gt; vcc,ch_pd(esp)
GND - &gt; GND,Gpi0(esp)
Baudrate适用于我 9600,57600