我目前正在忙于我的主人项目,其中包括在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,迫切想要让事情发挥作用。
以下是我怀疑可能导致问题的一些事情:
波特率不正确(与我的飞行控制器通信波特率需要为57600)。我发现设置此波特率的最佳方法是将“init_uart_baud = 57600”附加到/boot/config.txt/。我还阅读了其他方法,例如在/ etc / crontab中添加一行。有什么建议吗?
Pixhawk奇迹般地偶尔拒绝与RPi交流。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
解决:
看起来像最新的raspbian中的已知错误,但很容易解决。
这些需要以root用户身份完成。
禁用"串行控制台"通过GUI-preferences或" sudo raspi-config。"然后重启pi。
然后更改文件底部文件/boot/config.txt中的以下行:
enable_uart = 0 至 enable_uart = 1
systemctl禁用ModemManager.service
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 su
或sudo -s
此外,您必须是拨出组的成员,因此请在CMD行执行此操作:
sudo usermod -a -G dialout root
(启用root用户!)
sudo apt-get update && sudo apt-get upgrade
和sudo rpi-update
。 $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
文件中有效。
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`
对我有用! 快乐的实验和飞行!