1813浏览
查看: 1813|回复: 1

[平台测评] [DFRobot行业AI开发者大赛]解决Delta在ubuntu18.04下丢失Leonardo连接

[复制链接]
最近在参与DF和intel组织的AI开发者大赛过程中着实踩到不少坑,其中一个问题我看不少用ubuntu的朋友都遇到了,在此分享一下我的解决方法,希望可以帮到大家。

我是在尝试给板载的leonardo上传pyfirmata时遇到这个问题的,系统是Ubuntu18.04,所用Arduino IDE为1.8.13

[DFRobot行业AI开发者大赛]解决Delta在ubuntu18.04下丢失Leonardo连接图1
文件->示例中选择standardfirmata,工具中选择开发版arduino leonardo,端口选择/dev/ttyACM0后点左上角就开始upload。
然后就出错了,当时忘了截图,错误提示大概意思是leonardo的签名不正确,上传失败。

avrdude: Device signature = 0x433f0davrdude: Expected signature for ATmega32U4 is 1E 95 87         Double check chip, or use -F to override this check.avrdude: error: programmer did not respond to command: leave prog modeavrdude: error: programmer did not respond to command: exit bootloader

群里看到不少朋友遇到的就是这种情况,不过我的问题还不止于此。

我想看看是不是传什么都不行,于是尝试上传一个blink程序,果然也失败了,而且这次工具中的端口选择中直接没有了ttyACM0。
[DFRobot行业AI开发者大赛]解决Delta在ubuntu18.04下丢失Leonardo连接图2
lsusb一看,arduino没了!
遇到这种问题,我当然也没慌,首先就使出万能招-重启,然而并没有什么用,重启,断电,arduino始终不出现。
反复尝试过程中我发现,如果按下板载的arduino重置建(Ard_RST),那么在按下后的大概1秒钟短暂时间内,Delta可以检测到arduino,之后就又会消失。
我就想,如果在连接的一瞬间尝试重新上传是否能修复,于是开始尝试,不过要在那么短的时间里进行上传操作,用arduino IDE图形化界面操作太困难了,等你左点右点选好端口(没办法提前选好,因为不按重置键是看不到ttyACM0的),1秒的窗口期早过了。所以我们要使用avrdude命令行程序来重新上传正常的sketch。
首先用arduino IDE随便编译一个sketch(arduino IDE菜单中,项目->导出已编译的二进制文件),我用的是blink,编译好以后得到hex文件。
然后安装avrdude:
[DFRobot行业AI开发者大赛]解决Delta在ubuntu18.04下丢失Leonardo连接图3

准备好以后就可以开始刷写了,命令为:
avrdude -C ../etc/avrdude.conf -v -p atmega32u4 -c avr109 -P /dev/ttyACM0 -b 57600 -D -U flash:w:blink.hex:i
终端中输入好命令先别忙着回车执行,等按下Delta上的Ard_RST并松开后再按下键盘回车。如果时机把握得好,现在leonardo应该就恢复正常了,如果失败,多试几次,一般都是时机不对。
此时再lsusb一下看看:
[DFRobot行业AI开发者大赛]解决Delta在ubuntu18.04下丢失Leonardo连接图4

看到Arduino SA了吧,成功检测到了,arduino IDE中也能看到了。
而且我发现经过这么一波操作后,再次上传firmata,居然就好了,赶紧用python写段代码验证下:
from pyfirmata import Arduino, util
import time
board = Arduino('/dev/ttyACM0')
board.digital[13].write(0)
time.sleep(1)
print("on")
board.digital[13].write(1)
time.sleep(1)
print("off")
板载LED可以正常控制了。
到这里这个问题就算解决了,如果你也遇到这个问题了,不妨试试这个办法。




Angleo  初级技匠

发表于 2020-7-24 12:04:17

Ubuntu 18.04 默认开启了modemmanager, 一旦有新串口设备插入, modemmanager就会占用掉它一段时间. 删除它就可以解决:
[mw_shl_code=bash,false]sudo apt-get --purge remove modemmanager[/mw_shl_code]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail