Arduino ESP8266串行返回';垃圾';去阿杜伊诺
我购买了ESP8266模块,并通过SoftwareSerial(引脚10-RX,引脚11-TX)连接到Arduino UNO板, 我也有ESP8266 5V(450mA)的外部电源,它通过降压转换器降低到3.3V 连接: ESP 8266 Vcc-来自外部电源的3.3V电源 CHU PD-来自外部电源的3.3V电源 GND-来自外部的GND 重置-未连接 GPIO-未连接 GPI2-未连接 RX 3.3至arduino 我上传到Arduino示例程序,测试esp8266通信 Arduino项目:Arduino ESP8266串行返回';垃圾';去阿杜伊诺,arduino,esp8266,Arduino,Esp8266,我购买了ESP8266模块,并通过SoftwareSerial(引脚10-RX,引脚11-TX)连接到Arduino UNO板, 我也有ESP8266 5V(450mA)的外部电源,它通过降压转换器降低到3.3V 连接: ESP 8266 Vcc-来自外部电源的3.3V电源 CHU PD-来自外部电源的3.3V电源 GND-来自外部的GND 重置-未连接 GPIO-未连接 GPI2-未连接 RX 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);
}
}
#包括
常量字节rxPin=10;//将其连接至ESP8266的Tx引脚
常量字节txPin=11;//将其连接至ESP8266的Rx引脚
//我们将使用软件串行接口连接到ESP8266
软件系列ESP8266(rxPin、txPin);
无效设置(){
Serial.begin(9600);
开始(9600);//将其更改为ESP8266使用的波特率
延迟(1000);//让模块自初始化
}
void循环(){
延迟(100);
Serial.println(“发送AT命令…”);
ESP8266.println(“AT\r\n”);
延误(30);
而(ESP8266.available()){
字符串inData=ESP8266.readStringUntil('\n');
Serial.println(“从ESP8266获得回复:“+inData”);
}
}
但是我没有正确地工作。。。当Arduino向ESP发送消息时,ESP仅返回rubish。。没有“就绪”并且没有获取固件信息。我测试了所有的速度波特,看起来都一样
当我从串行监视器EPS手动发送“AT”命令时,没有任何响应 对于高于19200波特的速度,不要使用SoftwareSerial 默认情况下,ESP8266以115000波特通话。使用USB/串行将其直接连接到计算机,使用115000波特的putty与ESP通话。将ESP的波特率更改为19200(早期FW版本为at+CIOBAUD=19200,较新版本为at+UARTsomething)
SoftwareSerial应该比它更有效,但我不再使用它——各种各样的问题;硬武器审判好多了。只需在计算机和ESP之间切换Arduino RX/TX引脚;没有显示器输出,然后虽然;使用LED指示灯为您提供线索。连接非常完美。默认情况下,esp8266的波特率为115200。因此,对于esp8266和串行监视器,首次保持波特率115200
Serial.begin(115200)
ESP8266.begin(115200)
现在需要更改esp8266的波特率。命令可以通过串行通信发送。请使用此命令
AT+CIOBAUD=9600
在此之后,上述代码应按预期工作。为esp8266 Rx引脚使用逻辑电平转换器。Arduino逻辑为5.0 v,esp8266为3.3 v逻辑。更改10K电阻器。不要使用它。当使用高值电阻器时,它会抑制电流,因此不会从该侧读取任何信号。
尝试使用低值电阻器,并以9600波特率将ext电源和arduino接地连接起来。如果要使用arduino uno对esp模块进行编程,需要绕过arduino并编写代码 步骤: 别针 arduinotx-->rx(esp) arduino接收-->tx(esp) 3.3v电源-->vcc、CHU pd(esp) 接地-->接地,Gpi0(esp)
波特率对我有效是960057600您尝试过任何不同的波特率吗?您有哪个ESP模块,以及通电5秒后LED是什么样子的?另外,也可以将Arduino和ESP8266接地连接在一起。这些是引导加载程序消息。AT命令以不同的波特率传输。你试过115200或57600吗?根据目前给出的答案,似乎这可能是一个硬件问题,这将使它在这里如此。您可能比at或Stack Exchange更幸运。这并不能提供问题的答案。一旦你有足够的钱,你将能够;相反-