NodeMcu 串行通信 Tx 和 Rx

问题描述 投票:0回答:2

我是 NodeMcu 的初学者。我带了一个

Adraxx ENTDEV019 ESP8266 NodeMcu WiFi Development Board
。我正在尝试使用 arduino Ide 进行编程。我尝试了一些基本的例子。下面是我正在为董事会尝试的代码。我正在使用 Serial1 端口进行调试通信。我连接:

  • Tx 从电路板到串行适配器的 Rx
  • Rx 从电路板到串行适配器的 Tx

我尝试了不同的波特率。我用外部移动电源为 NodeMcu 供电,但我在串行监视器中看不到正确的输出。

如果我使用 Serial 端口而不是 Serial1 并使用 USB 电缆连接到计算机,则相同的代码可以正常工作。

#define LED D0 
#define DBG_OUTPUT_PORT Serial1

// the setup function runs once when you press reset or power the board
void setup() {
  DBG_OUTPUT_PORT.begin(9600);
  DBG_OUTPUT_PORT.print("\n");
  DBG_OUTPUT_PORT.setDebugOutput(true);
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(LED, OUTPUT);  

}

// the loop function runs over and over again forev`er
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED, HIGH);// turn the LED off.(Note that LOW is the voltage level but actually 
  delay(2000);                       // wait for a second
  DBG_OUTPUT_PORT.print("Connected! IP address: \n");

  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW

  digitalWrite(LED, LOW); // turn the LED on.

}

我做错了什么?

arduino embedded nodemcu
2个回答
2
投票

来自(https://arduino-esp8266.readthedocs.io/en/latest/reference.html#serial):

Serial 使用 UART0,映射到引脚 GPIO1 (TX) 和 GPIO3 (RX)。在 Serial.begin 之后调用 Serial.swap() 可以将串行重新映射到 GPIO15 (TX) 和 GPIO13 (RX)。再次调用 swap 将 UART0 映射回 GPIO1 和 GPIO3。

Serial1 使用 UART1,TX 引脚为 GPIO2。 UART1 不能用于接收数据,因为它的 RX 引脚通常被占用用于 flash 芯片连接。


您连接的引出线看起来像 GPIO1(TX) 和 GPIO3(RX)。 GPIO2 是 D4 引脚。

(引脚图来自:https://github.com/nodemcu/nodemcu-devkit-v1.0


0
投票

我可以用这段代码使用 Serial1 输入端口:

#include <SoftwareSerial.h>   //allows e.g.Serial1 to serial-receive

SoftwareSerial mySerial(0, 2); // enables RX, TX via d3 and d4 (Serial1-   port)

void setup(){

Serial.begin(9600);
mySerial.begin(9600); //(This port seems only to work with 8N1)

}//setup

void loop() {
if (mySerial.available()) {      // If anything comes in d3
Serial.write(mySerial.read());   // read it and send it out Serial0 (pin   TX)
//for TX:
if (Serial.available()) {      // If anything comes in RX (Serial0)
mySerial.write(Serial.read());   // read it and send it out on d4     (Serial1)
}
}
}
© www.soinside.com 2019 - 2024. All rights reserved.