3

我们如何使用带有 python 脚本的树莓派进行串行通信,以向我的笔记本电脑发送/接收数据?如果可以,我们可以使用 RS232 电缆直接连接到树莓派上的 TX/RX 端口吗?如果是,RS232 电缆必须使用哪些引脚?如果任何人都可以发布示例 python 脚本,那会很有帮助吗?

由于我的第一个目标是向笔记本电脑发送/接收数据到树莓派/从树莓派接收数据,因此我在两端使用 RS232 到 USB 电缆连接到笔记本电脑以及树莓派。

4

5 回答 5

5

RS-232/RS-485 转 PC 和 USB 转 PC

对于 RS-232

1)下载腻子

2) 购买一个串口 RS232 转 TTL 转换器模块和一条用于 PC 的 RS-232 串口线。

3) 按照此 链接上连接到微控制器或其他外围设备中的步骤进行操作。实际阅读全文以便更好地理解。

4) 使用 3.3V(引脚 1)或 5.0V(引脚 2)为转换器模块供电,将模块的 Rxd 引脚连接到 Rpi 上的 Rxd(引脚 8),将 Txd 引脚连接到 Rpi 上的 Txd(引脚 10)。

5) 将您的 RS-232(来自 PC)电缆连接到转换器模块

现在您已准备好在 Python 中进行一些编码。但在此之前,请确保您拥有名为serial for python 的库来创建通信。您可以通过键入sudo apt-get install python-serial通过终端轻松获取它。您还将看到代码中的波特率是 7200。它可能会更少或更多,具体取决于同步。还要确保 putty 和 COM1 中的波特率应该相同,COM1 是 RS-232 连接到 PC 的端口。您可以在 Windows 的设备管理器中进行检查和设置。顺便说一句,超时是您收到的每条消息之间的时间间隔。

如果您无法从空闲运行代码(某些库会发生这种情况),请在终端中执行。为此,请转到保存 python 代码的文件夹并输入python name.py

    import serial
    import time


    def readlineCR(port):
        rv = ""
        while True:
        ch = port.read()
        rv += ch
        if ch == '\r' or ch == '':
             return rv


    port = serial.Serial("/dev/ttyAMA0", baudrate = 7200, timeout = 2)

    while True: 
         rcv = readlıneCR(port)
         port.write("I typed: " + repr(rcv))
         print(rcv)

用于 USB 串口转 PC

你有两个选择

首先,您可以为 RS-232/ RS-485购买 USB 加密狗,这样您就不会使用 GPIO 引脚。但最好为所有鼠标、键盘和加密狗配备一个 USB 集线器。

其次,更简单的是,您可以购买FTDI USB 到 TTL 转换器并使用 GPIO 与 Rpi 进行串行通信。此代码与上面的代码完全相同。连接很容易。

模块——Rpi

Txd --> Txd

Rxd --> Rxd

接地--->接地

于 2014-07-07T12:51:07.530 回答
1

树莓派的串口使用3.3v逻辑;RS232 使用 12v,因此需要一个电平转换器来使用这些引脚,因此您不能直接使用 RS232。

使用 PySerial 模块(http://pyserial.sourceforge.net)在 Python 中进行串行接口,发送和接收数据非常简单。文档中有示例,但本质上是发送数据:

import serial
port = serial.Serial(portname, baudrate, timeout)
port.write("message to send")
port.close()

这取决于您对数据的处理方式以及您接收的数据类型来决定接收数据的最佳方式,但这是一个非常简单的示例:

import serial
port = serial.Serial(portname, baudrate, timeout)
data = port.read(numberofbytes)
print data

这只是等待,直到检索到指定的字节数或达到超时值。

您可以使用 port.inWaiting() 返回缓冲区中当前有多少字节。

于 2013-07-09T14:09:04.917 回答
1

您是否尝试向 Raspberry Pi 发出命令?(像控制台?)我建议使用普通的 jane 3.3V FTDI 电缆。您可以从DigikeySparkfun获得它们。注意:Raspberry Pi 在 3.3V 上运行,因此您必须确保连接到它的任何东西都在运行 3.3V 或具有电平转换器。在此处查看有关电平转换器的更多信息。(转到逻辑电压电平部分)

首先,您需要确保 Raspbian 已发布串行控制台。您可以使用位于此处的脚本来执行此操作。

如果您对与其他设备进行通信更感兴趣,那么以下可能适合您:

你有 Arduino 吗?您可以通过将此草图放在您的 Arduino 上来运行一个简单的测试:

#define SERIAL_BAUD 115200

void setup() {

  //Init serial connection
  Serial.begin(SERIAL_BAUD);
  Serial.setTimeout(1);

}

void loop() {

  if ( Serial.available() ) {
    byte type = Serial.read();
    Serial.write(type);
  }

}

并使用下图将其连接起来:

将 Arduino 连接到树莓派

注意:确保您没有将 USB 电缆连接到 Arduino。它将由 Raspberry Pi 供电。

然后您可以安装并运行screen. 屏幕是连接到串行端口的一种非常简单的方法。

apt-get install screen

然后运行以下命令:

screen /dev/ttyAMA0 115200

屏幕将显示为空白。但是,当您开始键入时,您会注意到您正在编写的字符正在循环回您的终端。

注意:如果屏幕仍然是空白,您应该仔细检查连接(Arduino 上的电源 LED 是检查的好东西)。

如有疑问,您可以在此处查看我的整个示例。

于 2014-03-10T03:32:30.003 回答
0

您应该为串行驱动程序安装 python 库。您不能直接使用 rs232,而是可以在 rx(gpio15) tx(gpio 14) 引脚和 USB 转串口转换器之间使用 max232 芯片。或者您可以使用 adafruit 的 USB 转 ttl 串行电缆。这是设置链接:http ://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/overview

于 2013-10-02T17:36:59.040 回答
0

树莓派中的串行通信。

串行通信有很多选择

  1. 在 Visual Studio 中使用 Visual GDB 插件并在树莓派中远程部署代码

并环回 txd 和 rxd 引脚并检查是否接收到发送消息。

  1. 如果您熟悉 java 安装 pi4j 并且在示例文件夹中有一个示例程序,请使用终端编译和运行。并检查输出。

  2. 如果您使用 RS232 和 Max232 进行连接,请注意使用 3.3 伏而不是 5 或 12 伏。,它可能会烧毁你的电路板。

于 2013-12-04T11:44:38.010 回答