我刚刚开始使用 Raspberry Pi,我有一个项目想要从 USB 端口读取数据。我已经安装了Java JDK8并编写了编译运行的程序。但我收到消息称
/dev/ttyUSB1
不存在。
我只有一根电缆从 Arduino 上的 USB 端口连接到 RPi 上的 USB 端口,并且我使用的是 Raspbian Debian Wheezy。
当我转到 DIR
/dev/
并使用 $ ls
时,我只能找到 tty0
直至 tty63
。我在网上搜了一下,有人说可以用ttyAMA0
,但是这个不行。我也搜索过同样的问题,但没有找到我的问题的答案。
我使用了
$ lsusb
,它在 001 号总线上为我提供了 4 个设备 (001-004)。我可以看到,例如,我的 USB 键盘被列为 Bus 001 Device 004: ID 1532:010b Razer USA, Ltd.
如果我运行 $ dmesg | grep Manufacturer
我会得到:
[xxxxxxxxx] usb 1-1.2: Manufacturer: Razer
所以我的问题是为什么我的 USB 设备没有被列为 ttyUSB[id]?我必须手动附加它吗?
说到 Linux,我有点菜鸟。
希望有人能帮助我!
我有一些坏消息要告诉你。 RPi 上没有 /dev/ttyUSB[n] 设备的原因(当您连接 Arduino 时)是因为您需要 Arduino 驱动程序(特别是 FTDI 驱动程序)。不幸的是,Arm 平台(包括 RPi)尚不存在这些驱动程序。这是根据 FTDI 网页显示的支持。请注意,Linux 驱动程序缺乏对 Arm 的支持。
显然,在运行 Linux 的 Arm 上,对 Arduino 进行编程的唯一方法是直接通过 GPIO 引脚通过串行端口接口。有关执行此操作的信息可以在here找到。您还必须在 Arduino 端执行类似的操作,请参阅此信息。
一旦您通过直接串行连接了两个设备,那么您可能会遇到另一个问题。默认情况下,RPi Linux 显然将使用串行端口发送调试/控制台输出。为了使用串行接口进行某些操作,必须修改其行为。这篇文章讨论了这一点。特别是禁用内核使用串行端口进行终端使用,这似乎适用:
以下步骤(基于干净的 2012-07-15-wheezy-raspbian 安装
在 Raspberry 上打开终端,或通过 SSH 连接到 Raspberry Pi。
备份 /boot/cmdline.txt 文件。 sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt
编辑 /boot/cmdline.txt 文件: sudo vi /boot/cmdline.txt
该文件包含: dwc_otg.lpm_enable=0 控制台=ttyAMA0,115200 kgdboc=ttyAMA0,115200 控制台=tty1 $
删除引用UART串口(ttyAMA0)的参数: dwc_otg.lpm_enable=0 控制台=tty1 $
在 /etc/inittab 中注释下一行: T0:23:重生:/sbin/getty -L ttyAMA0 115200 vt100
重启树莓派 须藤重新启动
如果您使用与 Debian 不同的 Linux 发行版,情况会有所不同,但基础知识仍然适用(修改内核命令行)