两个ESP32之间的串行通信

时间:2018-03-10 18:10:07

标签: esp32

我找到了基本的arduino到arduino串口通信的例子,但是无法让那些在ESP32板上工作的人。我试图在两个ESP32之间做同样的工作。这两个是相连的:

esp1   esp2
gnd to gnd
tx2 to rx2
rx2 to tx2

简单草图:

//transmit sketch
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("test...");
  delay(1000);
}

//receive sketch
void setup() {
  Serial.begin(9600);
}

void loop() {
  String received = "";
  while (Serial.available())
  {
    received = Serial.read();
    Serial.println(received);
  }
}

使这项工作还需要什么?

3 个答案:

答案 0 :(得分:4)

我认为你的代码来自一个更简单的世界,在这个世界中,引脚总是固定不变的,只有一个UART可用。使用ESP32,您应该更多地寻找解决方案:

#include <HardwareSerial.h>

HardwareSerial Serial2(2); // use uart2

Serial2.begin(19200, SERIAL_8N1, 16, 17); // pins 16 rx2, 17 tx2, 19200 bps, 8 bits no parity 1 stop bit

我希望这会有所帮助。如果您在此之后仍然遇到问题,他们可能会成为a)您使用的电路板并不使用16&amp; 17为rx2&amp; tx2,或b)你需要在两条线路上使用10k上拉(非串联)电阻来阻止它们#34;浮动&#34; - 但是有些董事会会照顾你的引体向上。

答案 1 :(得分:1)

必须满足以下所有条件才能使其发挥作用:

  1. ESP32 开发板不应使用您要用于任何嵌入式功能的串行端口。所以应该可以免费使用。

  2. 确保使用正确的引脚:

    <头>
    U Rx Tx
    串行 40 41
    Serial1 9 10
    Serial2 16 17
  3. 确保线是交叉的,以便 Tx 绑定到另一块板上的 Rx,反之亦然。

  4. 确保两块板上的速度相同。

要查看结果,ESP32 开发板应通过 USB 连接到 PC,控制台应连接到 USB 端口。为此,您可以使用腻子连接 USB 端口。可以为两个 USB 端口运行两个实例。确保 putty 中的速度设置与代码中的设置相同。 您在一个控制台中输入的任何内容都将被传输并显示在另一个控制台上。

将此代码上传到两个 ESP32 开发板:

HardwareSerial &hSerial = Serial1; //can be Serial2 as well, just use proper pins

void setup() 
{
  Serial.begin(115200);//open serial via USB to PC on default port
  hSerial.begin(115200);//open the other serial port
}

void loop() 
{  
  if (Serial.available()) //check incoming on default serial (USB) from PC
      { 
        hSerial.write(Serial.read());   // read it from UBS and send it to hSerial 
      }

  if (hSerial.available()) //check incoming on other serial from the other board
      { 
        Serial.write(hSerial.read());   //read it from hSerial and send it to  UBS
      }
}

答案 2 :(得分:0)

您还可以使用ESPnow进行无线通信。在这里看看:https://randomnerdtutorials.com/esp-now-esp32-arduino-ide/

相关问题