当前位置: 首页 > 知识库问答 >
问题:

raspberry pi和teensy之间的串行通信(使用UART/GPIO引脚)

秦斌
2023-03-14

我试着从我的树莓圆周率(raspberry PI)到一个teensy(一个arduino,对于那些不熟悉的人来说,它可以假装成鼠标和键盘)进行交流。

我想在arduino上接收信息,并根据该信息移动鼠标。

在arduino方面,我制作了以下测试脚本:

void setup() {
    Serial1.begin(9600); // According to the Teensy Docs, this is the RX1 & TX1 on my board.
    // Serial itself corrosponds to the micro-usb port
}
String msg = "";      

void loop() {

    if(Serial1.available() > 0) {
      msg = "";
      while(Serial1.available() > 0) {
          char read = Serial1.read();
          msg += read;
      }
      Serial1.write('X'); // Acknowledge with reply
    }
    Serial1.println(msg); // Output to console for debugging
    // Should be a number 1-9
    // TODO: further processing

}

在raspberry pi上,我运行以下测试脚本:

import time
import serial
import random       
ser = serial.Serial(            
port='/dev/ttyS0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
 timeout=1
)
while True:
    n = random.randint(1,9)
    print("Writing", n)
    ser.write(n)
    time.sleep(1)
    feedback = ser.read()
    print(feedback) // Expecting 'X'

当我运行脚本时,在串行控制台中看不到任何输出以及一条空消息(b')(请注意超时参数)

我已经启用了与raspi-config的串行通信并重新启动。当我列出设备(ls-l /dev/)时,我可以看到:

lrwxrwxrwx  1 root root           5 Apr 28 20:21 serial0 -> ttyS0
lrwxrwxrwx  1 root root           7 Apr 28 20:21 serial1 -> ttyAMA0

作为附加测试,我在pi上用一根电线将RX连接到TX,运行了minicom-b9600-o-D/dev/ttyS0,它成功地返回。

我是否有代码问题或可能的硬件问题?也许因为这是一个很小的问题,所以需要一些不同的协议?看这里

共有1个答案

谢修真
2023-03-14

您将Rx线连接在一起,Tx线连接在一起。一方传输另一方需要接收的内容。你需要去Tx和Rx-Tx。

 类似资料:
  • 我已经设法从我的arduino(Uno)到我的Raspberry Pi 3,通过串口进行了写操作。 如果我在pi端使用相同的python脚本,在arduino端使用相同的Sketch,但使用Teensy,我无法从Arduino读取任何输出。 根据串行通信,arduino Uno和teensy之间有什么区别吗? Arduino草图: 我的Pi上的Python脚本: 此代码适用于我的Arduino U

  • 我正在尝试使用Android处理在Android和Arduino之间进行双向蓝牙通信。我成功地用串口将数据从Android系统传输到Arduino系统。开始(9600)。我成功地使用Arduino程序中的SoftwareSerial和蓝牙将数据从Arduino传输到Android。开始(9600)代替串行。开始(9600)。 然而,当试图使用蓝牙将数据从Android传输到Arduino时。x命令

  • 问题内容: 我试图使用从Teensy 3.2接收到的Python(PyQtGraph)尽快绘制数据,该Python通过串行通信发送模拟数据。该代码可以充分绘制较高频率的测试波形(约5kHz的正弦波),但是绘制该图表要显示频率变化大约需要30秒。例如,如果测试波形被关闭,它将继续绘制正弦波另外半分钟。 我尝试执行“串行刷新”以清除Python端和Teensy端的缓冲区,但是,这会严重减慢绘图速度,并

  • 我有一个简单的草图在我的Seeeduino Mega 1.22它只是显示在液晶显示器上的串行输入。使用lynx术语和arduino串行监视器工作正常:发送的输入正在显示。当我想启动我的Java程序之间的串行通信时,问题就开始了,在Win7 x64机器上运行的Eclipse和Seeeduino。我使用的是RXTX x64版本。该程序旨在通过开放端口发送和接收一些string.getBytes()。J

  • 问题内容: 我是程序世界中的每个新手,我遇到一个问题,我的要求与使用JAVA Code在Android平板电脑与台式机之间的通信有关。 上面的代码是我的servlet代码,它在我的本地系统服务器(Tomcat 6.0)中运行,在这里,我正在通过println发送消息,并且我想在另一个系统中运行的Android应用中显示相同的消息。现在,我要发布在另一个系统上运行的android代码。 这里的192

  • 我是Azure的新手,所以我可能会问一个非常基本的问题,请耐心等待。 我有一个Azure Red Hat VM和一个java Azure应用程序服务Web应用程序,部署在同一资源组和同一地区。我需要虚拟机在端口12999上对Web应用程序执行RMI调用。 我在这里发现Azure Web应用程序只公开了端口80和443。 我在这里还了解到,可以通过服务endpoint与Azure应用程序服务进行入站