【问题标题】:Arduino x ESP8266-01 no serial outputArduino x ESP8266-01 无串行输出
【发布时间】:2020-12-08 10:51:25
【问题描述】:

我是 arduino 的新手,我目前正在尝试将 ESP8266-01 (https://www.reichelt.de/entwicklerboards-esp8266-wifi-modul-debo-esp8266-p192142.html) 与我的 arduino nano 连接起来。我使用这个 (https://www.youtube.com/watch?v=ji71cHaGW8w) 作为教程,我的接线几乎相同。 ESP8266-01 upload wiring

我可以毫无问题地上传。唯一的区别是,直接使用3V3 没有任何额外的组件。我测量了120mA(稳定),它们应该足够了。 这是我的 ESP8266-01 代码:

void setup() {
 Serial.begin(9600);
}

void loop() {
    Serial.write("Hello from ESP");
    delay(2000);
}

上传到 ESP8266-01 后,我将接线更改为 this(除了我将 Vcc 直接连接到 3V3)。这是我的 Arduino 代码:

 #include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
 
void setup()
{
 Serial.begin(9600);
 mySerial.begin(9600);
 delay(5000);
 }
 
void loop(){
  
 String IncomingString="";
 boolean StringReady = false;
 
 while (mySerial.available()){
   IncomingString=mySerial.readString();
   StringReady= true;
  }
 
  if (StringReady){
    Serial.println("Received String: " + IncomingString);
  
  }
 }

再一次,上传没问题,但我没有任何生命迹象。 ESP8266-01 LED 不闪烁(仅在上传时)并且串行监视器中没有输出。我已经将 ESP8266-01 换成了另一个,但没有任何改变。

编辑: 我用眨眼和接入点示例测试了 ESP8266-01,它没有任何问题。

【问题讨论】:

  • 您好!我会尝试使用另一个程序。您应该尝试删除尽可能多的变量。然后在调整 RX 和 TX 引脚、波特率并删除 mySerial.println("Hello, world?"); 后运行 SoftwareSerialExample(在示例/软件序列中),然后重试。也许也可以尝试只交换 RX 和 TX 直到它工作(虽然这对我来说似乎很好,但尝试不会有什么坏处)。请记住,Uno 使用 5v 和 ESP 3v3,因此当 Uno 通过串行向 3v3 ESP 发送 5v 信号时,您可能会遇到问题。
  • 我用的是 nano 有问题吗?
  • 不应该。 nano 几乎只是一个很小的 ​​uno(我认为有时会降频并且缺少一些引脚),但您应该在工具/板中设置它。发生了什么?
  • 我将“mySerial”的波特率更改为 9600,另一个默认为 57600。每次我在串行监视器中切换这两者时,它都会打印“晚安月亮!” (57600) 或一些奇怪的字符,如“⸮]⸮”或只是一个“k”。
  • 呃...抱歉让您失望了,但是“晚安月亮”只是代码发送的默认消息,因此您知道 Uno 正在做它的事情。每当您更改波特率时,uno 都会重置,因此您要么收到该启动消息,要么收到损坏的版本,因为您使用了错误的波特率。

标签: arduino esp8266 arduino-esp8266


【解决方案1】:

好的,您的代码是完美的,但只尝试在 RX 和 tx 线之间进行更改,最重要的是电压我知道它可以在 3.3v 上工作,但在我的情况下,在 3.3v 上它不能正常工作,所以给它是 5.0v 100ma,它工作得非常完美

【讨论】:

  • 但是 5v 不是杀死它吗?
  • 我很确定它可以承受更高的输入电压,因为它上面有一个稳压器。
【解决方案2】:

确保您的 RX 引脚连接到另一侧的 TX,而 TX 连接到另一侧的 RX。所以接收器上的引脚 2(RX) 应该连接到 esp8266 上的发送引脚。

软件串行对于低波特率的东西是可以的,但一般来说它很慢且不可预测,而且一般来说只是一种痛苦。如果您有可用于 Arduino 的串行线路,请改用它。它更具可预测性,此外,尝试也无妨。只需删除所有软件串行的东西,并将 mySerial 替换为常规的串行命令,它们只是引脚 0 和 1。

如果这些都不行,请尝试将波特率更改为 115200。我知道很多 ESP 更习惯于此,其他通信设备也是如此。虽然如此高的波特率不适用于软件串行,但您只需再次将其更改为常规串行线路即可。

【讨论】:

猜你喜欢
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多