我是 NodeMcu 的初学者。我带了一个
Adraxx ENTDEV019 ESP8266 NodeMcu WiFi Development Board
。我正在尝试使用 arduino Ide 进行编程。我尝试了一些基本的例子。下面是我正在为董事会尝试的代码。我正在使用 Serial1 端口进行调试通信。我连接:
我尝试了不同的波特率。我用外部移动电源为 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.
}
我做错了什么?
来自(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 引脚。
我可以用这段代码使用 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)
}
}
}