与Pi和Arduino的串行通信

时间:2013-05-22 16:16:02

标签: python arduino

我正在尝试通过Raspberry Pi与Arduino的串行连接进行通信。我一直在尝试使用minicom和一个小程序来测试串行连接,然后将它从Arduino Mega回显到我PC上的串行监视器。出于某种原因,我发送给Arduino的东西在途中出现乱码,结果与我发送的完全不同。我正在使用Sparkfun逻辑电平转换器来保持5v和3.3v分离。

以下是Pi上的Python:

import serial
import time

serialport = serial.Serial(port="/dev/ttyAMA0", baudrate=19200, bytesize=8, timeout=1)
serialport.write('POP')

以下是Arduino上的代码:

void setup()
{
Serial.begin(19200);
Serial.println("connected to PC ");
Serial1.begin(19200);
}

void loop()
{

  if(Serial1.available())
    {
      delay(1000);

    byte inByte = Serial1.read();
    char cByte = inByte;
    Serial.write("c: ");
    Serial.write(cByte);
    Serial.write("b: ");
    Serial.println(inByte, BIN);
    }
  if(Serial.available())
    Serial1.write(Serial.read()); 
}

我通过串口发送'POP',但这是我的串口显示器的输出:         c:b:0         c:b:10101         c:} b:1111101         c:b:1

如果我更改它,例如发送'doodle',我会得到:         c:b:0         c:Sb:1010011         C:
        b:1010         c:ºb:10111010         c :: b:111010         c:ªb:10101010         c:b:10

如果格式不正确,则二进制文件的结尾与下一个c:之间会有换行符,并且涂鸦中间有一个换行符(二进制文件读取1010)。

我猜这些碎片很奇怪,但我不明白为什么。

1 个答案:

答案 0 :(得分:1)

乱码消息的最常见原因是没有在任何一侧设置正确(相同)的波特率

您是否已编辑/ etc / inittab以阻止它重新生成tty? (PI)

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100