RPi2 UART设置&运营问题

时间:2016-07-01 08:11:57

标签: raspberry-pi raspbian raspberry-pi2 dronekit-python mavlink

我目前正在忙于我的主人项目,其中包括在Raspberry Pi Model 2 B V1.1和使用Mavlink协议的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应该如何工作呢?不过我通过了。我启用了操作系统使用串口,​​这使得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交流。

  3. 任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

解决:

看起来像最新的raspbian中的已知错误,但很容易解决。

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

  1. 禁用"串行控制台"通过GUI-preferences或" sudo raspi-config。"然后重启pi。

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

  3. enable_uart = 0 至 enable_uart = 1

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

      1. 然后将您自己添加到拨出组,以确保您在串行端口上具有所需的权限:
      2. adduser pi dialout

        这应该可以让您无限制地正确访问串口。

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

答案 1 :(得分:0)

我已经研究了这几天,并对Google网站上列出的所有读数进行排查。我解决了连接我的RPi3 Model B的串行UART设置(在命令行输入以下内容:

`cat /proc/cpuinfo` 

找到我的Pixhawk硬件信息。)

仅供参考:在使用mavproxy时你必须是root用户,sudo susudo -s

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

  • 做所有RPi常规的东西:  sudo apt-get update && sudo apt-get upgradesudo rpi-update
  • Ardupilot网站上列出了所有内容。我没用过 “apsync-RPI”。 (我在here
  • 使用了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设置有变化。 (link here) 在我的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中设置正确的参数 有; 转到CONFIGTUNING-> STANDARD PARAMS; (我的设置)

    • - Serial0波特率(SERIALO_PROTOCOL)为:115200 - 控制台协议选择(SERIAL0_PROTOCOL)是:MAVlink1 -Telem1波特率(SERIAL1_BAUD)位于:115200 -Telem1协议选择(SERIAL1_PROTOCOL)是MAVlink2 -Telemtry 2波特率(SERIAL2_BAUD)为921600 -Telemetry 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`

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