安卓无法使用AVRDUDE与Arduino进行通信

3
我正在使用 AVRDUDE 来进行 Android 编程 (http://code.google.com/p/andavr/)。我可以编译 C 代码并运行。
$ avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o led.o led.c
$ avr-gcc -mmcu=atmega328p led.o -o led
$ avr-objcopy -O ihex -R .eeprom led led.hex

一切都没有问题。然后我尝试运行:

avrdude -F -V -c arduino -p ATMEGA328P -P /dev/bus/usb/002/002  -b 115200 -C /data/data/jackpal.androidterm/local/etc/avrdude.conf -U flash:w:led.hex

结果是:
avrdude: ser_open(): can't open device "/dev/bus/usb/002/002"; Permission denied
loctl("TIOCMGET"): Invalid argument

avrdude done. Thank you.

当我运行以下代码时情况类似:

avrdude -F -V -c arduino -p ATMEGA328P -P /dev/bus/usb/002/001  -b 115200 -C /data/data/jackpal.androidterm/local/etc/avrdude.conf -U flash:w:led.hex

我可以确认/dev/bus/usb/002/002是通过OTG电缆连接的Arduino设备。 在连接之前,我运行了以下命令:

ls -l /dev/bus/usb/002/

我得到:

total 0

当我通过USB将Arduino连接到我的平板电脑后,我运行以下命令:

ls -l /dev/bus/usb/002

我得到了

crw-rw----   1 0   1018  180,128 Mar 24 07:53 001
crw-rw----   1 0   1018  180,129 Mar 24 07:53 002

这明确地告诉我Arduino已连接。我希望知道是否有人能看出我做错了什么。
PS:我正在尝试创建一个Android应用程序,允许直接从Android平板电脑进行Arduino编程。
2个回答

3

提示“权限被拒绝”,看起来您似乎没有使用root shell。 尝试使用“su”命令,然后再次运行失败的命令。如果您的手机没有root,则我认为它可能无法正常工作。

即使您是root用户,我也不确定它是否会正常工作,所以请发布结果!我的猜测是,如果您的手机不充当USB主机(只有一些可以),则它将无法正常工作。


谢谢,但是我已经做了以下事情: 我已经root了我的支持OTG的Nexus7。我可以通过OTG成功地使用鼠标/键盘来控制它。我还可以使用它来控制我的Arduino。我认为这意味着OTG完全正常工作。 此外,我已经root了我的手机,并拥有root权限。我还在上面安装了Ubuntu Touch,并运行了一些需要root权限的应用程序。 我还授予了终端模拟器root权限。我无法执行su命令,因为不支持。 我已经找到了一种通过名为adbwireless的应用程序无线连接adb的方法。 - HansStam
续前文: 我现在能够通过wifi控制nexus7 adb shell,同时将arduino插入nexus7的usb端口。 在adb shell中,您会自动获得su访问权限,因此这应该肯定会给我su权限。故事结束了,即使我有su权限,它仍然无法正常工作。 我还尝试过给arduino chmod 777访问权限,但也没有用。它就是不想被我的nexus 7控制。 - HansStam
我还不打算放弃。虽然应该是可能的。 - HansStam
抱歉,经过所有的努力,结果我仍然没有足够的根权限。不过,我通过运行/system/xbin/su获得了根权限。现在我终于有了根权限,但是我遇到了另一个错误,我会在其他地方描述它。我很快会在这里发布链接。 - HansStam
请点击以下链接查看后续问题:https://dev59.com/33DXa4cB1Zd3GeqP8A8R - HansStam

-1
我并不是专家。但是,你是否需要一个USB shield通过电线与Arduino-Android进行通讯?两者都是从设备(所以当Android / Arduino插入PC时,PC控制它)。可以尝试使用 USB Host Shield 2.0 For Arduino

再次说明,我的理解可能有误。希望这能帮到你。


是的,我没有使用盾牌。我只是使用一台安卓平板电脑(Nexus7),通过OTG电缆连接到Arduino Uno上。 下一步:尝试不使用任何电缆,而是使用蓝牙盾牌。 - HansStam
1
这是我关于如何做到的博客文章。感谢您的帮助! http://www.hstam.com/blog/?p=29 - HansStam
不可以,因为使用Android OTG电缆时,手机实际上将成为主机设备,而Arduino将成为从设备。因此,在这种设置中,不应使用Arduino的USB shield。 - David Refoua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接