节点红色串行连接RX TX Raspberry Pi和Arduino

时间:2018-09-18 08:15:14

标签: arduino raspberry-pi node-red serial-communication

我目前正在使用Node-red开发Raspberry Pi。 我想在我的Pi和Arduino之间建立串行连接。 我通过Rx和Tx引脚连接了Raspberry pi和Arduino Uno。

Serial input in Node-Red

我可以通过引脚将数据从Arduino发送到我的Pi。

Arduino代码:

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

void loop() {
  //Arduino to Raspberry Pi
  Serial.println("test");  
  delay(1000);
}

我在Pi上接收到数据

但是一旦我想将数据从我的Pi发送到Arduino,它就无法工作。

Serial output in Node-Red

Arduino代码:

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

void loop() {
  //Raspberry Pi to Arduino
  if (Serial.available() > 0){
    int x = Serial.read();
    Serial.println(x);
  }
}

现在,如果我按下在Node-Red中发送字符串“ hello”的注入按钮,则Arduino的串行监视器中将没有输出。

如果我使用该代码:

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

void loop() {
  int x = Serial.read();
  Serial.println(x);
}

串行监视器始终显示-1。但是,如果我按Node-Red中的注入按钮,则会出现一些不大于255的数字。

Serial Monitor

我希望看到字符串“ hello”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的监视器显示-1完全正常,这是因为由于串行连接是同步的,因此它们连续发送数据以免丢失同步。因此,当您使用serial.Begin(9600)设置arduino时,您将启动连接,即使它们尚未开始正确的数据通信,它们也可以互相发送数据。如果需要更多信息,请参见wiki上的rs-232

您正在将arduino上的x读取为整数。 “ hello”实际上不是int:p 尝试使用String x =Serial.Read();代替