Raspberry Pi 通过 USB 发送/接收数据

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

我有一个非常简单的配置,将 Raspberry Pi Pico H (2021) 通过 USB 连接到 Raspberry Pi 4,两者都采用最新的固件版本。我的最终目标是将温度/湿度数据发送到 Raspberry Pi 4。我能够毫无问题地从传感器读取温度/湿度数据,但是当我尝试通过 USB 发送数据时,我遇到了很多问题:

这是我在 Pico 上的代码示例(micropython 1.22.2)

import time

while True:
    print('hello')
    time.sleep(1)

这是我在树莓派 4 (python 3.11) 上运行的内容:

import time
import serial

ser = serial.Serial('/dev/ttyACM0', 19600, timeout=30)
ser.flushInput()

while True:
    line = ser.readline()
    if line:
        print(line.decode('utf-8'), end='')

当我在 pico 上运行代码时,它会毫无问题地打印“hello”。当我在 Pi 4 上运行代码时,它要么立即失败,并显示“设备报告已准备好读取,但未返回任何数据”,要么返回单词“hello”的片段,响应中没有可辨别的模式,然后失败设备报告已准备好读取,但未返回任何数据。作为参考,我确实检查过以确保 USB 设备已在 /dev/ttyACM* 下注册,并且确实如此。它从来没有任何连接问题,只有当我同时在树莓派 4 和 pico 上运行代码时才会出现问题

我想做的就是通过 USB 发送温度/湿度数据,这就是我制作这个简单测试用例的原因。我的问题是我错过了什么?我重新映像了我的 Pi,并使用最新的操作系统和固件刷新了 Pico,不应运行其他会干扰串行通信的进程。通过 USB 连接的唯一设备是 Pi Pico,我尝试了几个不同的 USB 端口和电缆,但出现了相同的问题,我什至尝试了不同的 Pi Pico 并遇到了相同的问题,所以我认为不是硬件问题。我唯一没有尝试过的是新的 Pi 4,但我只有一个。它也是开箱即用的新产品。

感谢您的帮助。我愿意相信我不会对硬件造成压力,但我不确定。如果有更好的方法来解决这个问题,请告诉我。

python-3.x usb pyserial raspberry-pi4 raspberry-pi-pico
1个回答
0
投票

这些问题总是很难回答,因为我不知道你有什么样的设置。但有两件事可以改进,我的怀疑是基于你在这里所说的:

“它要么立即失败,并显示“设备报告已准备好读取,但未返回任何数据”,要么会返回单词“hello”的片段,响应中没有可辨别的模式,然后失败,设备报告已准备好读取,但没有返回任何数据。”

这听起来像是您有波特率问题,并且通常您读取数据的速度太快。

此外,在 pico 端,您只是每秒打印 Hello,这不是最佳选择,请尝试在该端也包含串行命令。

目前,我假设如果您在 Pi 4 上尝试过类似的操作:

import time
import serial

ser = serial.Serial('/dev/ttyACM0', 9600, timeout=30) # or make sure that both are running at the same baudrate
ser.flushInput()
time.sleep(0.5) # include some sleep here also
while True:
    line = ser.readline() # readline is not very nice, think about using read_all() or just read() instead.
    if line:
        print(line.decode('utf-8'), end='')

我有另一个答案,我给出了一个提示arduino做出反应的例子:https://stackoverflow.com/a/77967320/16815358

© www.soinside.com 2019 - 2024. All rights reserved.