2223| 1
|
[平台测评] [DFRobot行业AI开发者大赛]解决Delta在ubuntu18.04下丢失Leonardo连接 |
最近在参与DF和intel组织的AI开发者大赛过程中着实踩到不少坑,其中一个问题我看不少用ubuntu的朋友都遇到了,在此分享一下我的解决方法,希望可以帮到大家。 我是在尝试给板载的leonardo上传pyfirmata时遇到这个问题的,系统是Ubuntu18.04,所用Arduino IDE为1.8.13 文件->示例中选择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。 lsusb一看,arduino没了! 遇到这种问题,我当然也没慌,首先就使出万能招-重启,然而并没有什么用,重启,断电,arduino始终不出现。 反复尝试过程中我发现,如果按下板载的arduino重置建(Ard_RST),那么在按下后的大概1秒钟短暂时间内,Delta可以检测到arduino,之后就又会消失。 我就想,如果在连接的一瞬间尝试重新上传是否能修复,于是开始尝试,不过要在那么短的时间里进行上传操作,用arduino IDE图形化界面操作太困难了,等你左点右点选好端口(没办法提前选好,因为不按重置键是看不到ttyACM0的),1秒的窗口期早过了。所以我们要使用avrdude命令行程序来重新上传正常的sketch。 首先用arduino IDE随便编译一个sketch(arduino IDE菜单中,项目->导出已编译的二进制文件),我用的是blink,编译好以后得到hex文件。 然后安装avrdude: 准备好以后就可以开始刷写了,命令为: 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一下看看: 看到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可以正常控制了。 到这里这个问题就算解决了,如果你也遇到这个问题了,不妨试试这个办法。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed