Ubuntu16.04下USB转串口实现(Manifold2-C+Arduino)

Ubuntu16.04下USB转串口实现

1 项目描述

项目需要在DJI Manifold2-C(amd x86)上实现对单片机Arduino的控制,要用到USB转串口进行通讯。

2 操作步骤

(1)检查设备是否支持USB转串口

ls /dev/tty*

如果没有出现类似/dev/ttyUSB0这类设备,则说明缺少驱动。
(2)安装驱动(以pl2303为例)

  • step1- 首先把自带驱动拷贝出来:
sudo cp /lib/modules/4.13.0-36-generic/kernel/drivers/usb/serial/pl2303.ko  /usr/src/linux-headers-4.13.0-36-generic/drivers/usb/serial

此代码在Manifold2-C上实测可用,别的计算机类似。内核如果不一样,此处路径也可能不同。

  • step2- 进入/usr/src/linux-headers-4.13.0-36-generic/drivers/usb/serial,查看是否有pl2303.ko文件。
  • step3- 运行命令,安装驱动。
sudo modprobe usbserial
sudo modprobe pl2303

此时重新插拔USB转串口设备,再使用ls /dev/tty*命令,若可找到ttyUSB0,则安装成功。

(3)修改串口永久权限

  • step1- 安装udev
sudo apt-get install udev
  • step2- 查找设备参数

在终端执行:

lsusb

查看当前的设备,不清楚自己设备的可以通过插拔对比来获取。
这里,我们Arduino设备的显示如下:

Bus 001 Device 007: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial
adapter

找出对应的idVendor及idProduct(对于我们的设备,idVendor=1a86idProduc=7523)。

  • step3- 新建规则
    新建一个名为arduino.rules的规则(可自行修改规则名)
sudo gedit /etc/udev/rules.d/arduino.rules

在弹出的文本里填入如下内容

SUBSYSTEMS=="usb",  
ATTRS{idVendor}=="1a86", 
ATTRS{idProduct}=="7523",  
GROUP="users",  
MODE="0777",
SYMLINK+="ttyArduino"

MODE数值代表权限,SYMLINK表示把你的/dev/usb0设备改名为/dev/arduino_ttyUSB

  • step4- 加载规则
sudo udevadm control --reload

加载规则,之后重启电脑!! 设置完成,使用如下命令检查一下有没有设置成功。

ls -al /dev/arduino_ttyUSB

(4)运行程序
参考之前用Manifold2-G实现对Arduino 的控制,(传送門)将代码中的ser.setPort("/dev/ttyTHS2"); 改为ser.setPort("/dev/arduino_ttyUSB");即可实现同样功能。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howard-DUT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值