0

我目前正忙于我的硕士项目,该项目涉及使用 Mavlink 协议在 Raspberry Pi Model 2 B V1.1 和 Pixhawk 飞行控制器之间的 UART 上设置通信。

当然,第一步是设置 UART 并使其正常工作。我不是一个在出现问题的第一个迹象时寻求帮助的人。我已经为此苦苦挣扎了好几天,这迫使我不止一次地怀疑我存在的目的。我感到愚蠢和沮丧。请看看您是否可以提供任何帮助。

我的第一个资源是本教程,它应该相对简单:

http://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html

本教程只是安装所有必要的包和依赖项,以及设置 UART。我按照步骤通过 raspi-config 禁用操作系统对串行端口的使用,但是在尝试测试连接后出现错误:

[Errno 2] 没有这样的文件或目录:'/dev/ttyAMA0'

这很奇怪。因此,在通过 rasp-config 禁用和启用操作系统对串行端口的使用几次并检查后,每次我禁用它时,/dev/ttyAMA0 文件都会消失。现在,如果禁用 UART 的操作系统使用会删除该文件,那么该死的东西应该如何在 UART 上工作!?尽管如此,我还是通过了。我启用了串行端口的 OS 使用,这将 ttyAMA0 文件留在原处并遵循另一个建议,即更改 /boot/cmdline.txt 并删除对 ttyAMA0 的所有引用,如以下链接所示:

http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/io-pins-raspbian/uart-pins

这似乎工作正常。我现在可以启动 RPi 和 Pixhawk 飞行控制器之间的通信,并获得一些看起来正确的信息。然后黑魔法开始了。第二天我测试了连接,它总是吐出完整的垃圾。但与前一天相比,一切都没有改变。在某个地方我一定会错过一些东西。我遵循所有相同的教程和步骤,试图获得前一天得到的更积极的结果。然而,这只会导致更不稳定的行为。将串行线连接到我的 Pixhawk 飞行控制器时,键盘/鼠标似乎时不时地被中断。一切都倒退了。我已经重新安装了 Raspbian Jessie,不顾一切地尝试让事情正常进行。

以下是我怀疑可能导致问题的几件事:

  1. 波特率不正确(与我的飞行控制器通信的波特率需要为 57600)。我发现设置此波特率的最佳方法是将“init_uart_baud=57600”附加到/boot/config.txt/。我还阅读了其他方法,例如在 /etc/crontab 中附加一行。有什么建议么?

  2. Pixhawk 奇迹般地偶尔拒绝与 RPi 沟通。

任何帮助将不胜感激。谢谢你。

4

2 回答 2

1

解决了:

看起来像最新的 raspbian 中的一个已知错误,但很容易修复。

这些需要以 root 用户身份完成。

  1. 通过 GUI 首选项或“sudo raspi-config”禁用“串行控制台”。然后重启 pi。

  2. 然后在文件底部的文件 /boot/config.txt 中更改以下行:

enable_uart=0 到 enable_uart=1

  1. 通过以 root 身份运行以下命令来禁用 ModemMonitor 服务:

systemctl 禁用 ModemManager.service

  1. 然后将自己添加到拨出组中,以确保您对串行端口具有所需的权限:

adduser pi 拨出

这应该使您可以不受限制地正确访问串行端口。

资源:[url] https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=148515[/url] 和 [url] https://www.raspberrypi.org/forums/viewtopic.php? f=28&t=82779[/url]

于 2016-07-04T07:39:34.230 回答
0

我已经研究了几天,并对谷歌网站上列出的所有读数进行了故障排除。我解决了用于连​​接我的 RPi3 Model B 的串行 UART 设置(在命令行键入以下内容:

`cat /proc/cpuinfo` 

查找我的 Pixhawk 硬件信息。)

仅供参考:使用mavproxy时您必须是root用户,sudo su 或者sudo -s

此外,您必须是拨出组的成员,因此请在 CMD 行执行此操作:( sudo usermod -a -G dialout root启用 root 用户!)

  • 执行所有 RPi 常规操作: sudo apt-get update && sudo apt-get upgradesudo rpi-update.
  • 按照 Ardupilot 网站上的说明进行操作。我没有使用“apsync-rpi”。(我在这里使用了 2017-03-02-raspbian-jessie.img。)
  • 在我的 RPi3 上,使用 $uname -a: results--> Linux raspberrypi 4.4.50-v7+
  • $sudo nano /boot/config.txt的文件在文件底部有一处更改;这条语句:(enable_uart=1 具有强制 core_freq 为 250 的良好副作用,可减少不良信号频率)
  • 重要发现:所以文章指出 RPI3 UART 和 tty 设置有变化。(链接在这里)经过一番折腾,我发现我的sudo nano /boot/cmdline.txt 文件是这样的: dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4等等。
    -注意我没有在 /boot/cmdline.txt 文件中使用 ttyS0。我尝试了 ttyS0 十几次,但始终无法正常工作。出于某种原因,我现在无法解释它,虽然console=/dev/tty1作品如果写在/boot/cmdline.txt文件中。

    • 确保您的 RPi 和 Pixhawk 之间的接线正确。
    • Telem 2. 也像我一样在 Mission Planner 中设置正确的参数;转到配置->标准参数;(我的设置)

    • -Serial0 波特率 (SERIALO_PROTOCOL) 为:115200 -Console 协议选择(SERIAL0_PROTOCOL) 为:MAVlink1 -Telem1 波特率(SERIAL1_BAUD) 为:115200 -Telem1 协议选择(SERIAL1_PROTOCOL) 为 MAVlink2 -Telemtry 2 波特率(SERIAL2_BAUD)是 921600 -遥测 2 协议选择(SERIAL2_PROTOCOL)是 MAVlink1

RPi 和 pixhawk 以 921600 波特率进行通信。

-一旦我用它自己的 +5/VCC 源为 RPi3 供电,并用我的 PC-Windows10PRo 的 3.0 USB 电缆连接到我的 MP,(好吧,我也有 Arch 和 Debian Linux 发行版和 Apple 操作系统!)我进入:

 `mavproxy.py --master=/dev/ttyS0  --baudrate 921600 --aircraft Plane`

这个对我有用!快乐的实验和飞行!

于 2017-03-21T22:30:42.207 回答