使用OpenWRT路由远程给Arduino下载程序
本帖最后由 histamine 于 2013-8-28 22:06 编辑上周看到@agaonet兄这帖:http://geek-workshop.com/thread-5752-1-3.html
觉得此需求蛮好玩的,于是使用了tplink的wr703n迷你路由研究了一番
最终去掉了avrdude对libreadline以及libncurses的依赖,使其可以塞到wr703n 4M固件空间里去,顺便也编写了基于LuCI的arduino程序下载界面
整体思路很简单,上传hex文件,调用avrdude,然后输出结果
avrdude裁剪:--- a/configure
+++ b/configure
@@ -4253,7 +4253,6 @@
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses$LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h.*/
_ACEOF
@@ -4328,7 +4327,6 @@
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline$LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h.*/
_ACEOF
然后去掉Makefile里面对libreadline以及libncurses的依赖信息
luci-avrdude web界面部分代码:
集成avrdude的wr703n的4MB固件:
8月28日更新:
http://pan.baidu.com/share/link?shareid=195087685&uk=2298833357
pan.baidu.com/share/link?shareid=1120389846&uk=909210540
主要包括以下功能:
luci web配置界面
avrdude及其web界面
ser2net
uvc摄像头驱动以及mjpg-streamer(去掉了libjpeg依赖,注意只支持可以硬件jpeg输出的摄像头)
uhttpd
lua
u盘驱动
ntfs/ext4文件系统支持
arduino uno/ftdi/cp210x usb转串口驱动
libnfc 支持pn532串口驱动
注意:此固件不支持ipv6以及ppp拨号
欢迎各位改进{:soso_e100:} 这个太牛了。。。 好强,学习了.{:2_31:} 本帖最后由 chzhewl 于 2013-8-26 16:48 编辑
请问下路由器同arduino 是如何连接的? 据了解要下载arduino程序 除了必顺的tx 和 tr 连线外还需要一条dtr 的连线,703n好像没有提供这个接口, 不知道楼主是怎么做的,求指教:loveliness: 有兴趣的同学
可参考
OpenWrt TP-Link TL-WR703N
TX = TP_OUT
RX = TP_IN
GND = C55 Right pad
焊点区在图片右下角
本帖最后由 histamine 于 2013-8-26 17:34 编辑
chzhewl 发表于 2013-8-26 16:34 static/image/common/back.gif
请问下路由器同arduino 是如何连接的? 据了解要下载arduino程序 除了必顺的tx 和 tr 连线外还需要一条dtr ...
直接把arduino uno插到wr703n的usb口上就能下载了,根本不用自己把路由器ttl线引出来;P
web界面render的时候会检测/dev/ttyUSB0 ~ /dev/ttyUSB10以及/dev/ttyACM0 ~ /dev/ttyACM10 usb串口设备是否存在,若存在则显示在下拉菜单里面(注意图里面下拉菜单有两个usb串口设备,我利用一个usb hub同时插了arduino uno和arduino leonardo) histamine 发表于 2013-8-26 17:32 static/image/common/back.gif
直接把arduino uno插到wr703n的usb口上就能下载了,根本不用自己把路由器ttl线引出来
web界面rend ...
哈哈,原来如此,又学到了,多谢. :lol 果然强悍,可以远程下载程序了 Luci不熟,看看先 这个可以有,看不懂 lua 的路过…… 本帖最后由 agaonet 于 2013-8-28 16:23 编辑
哈哈,兄弟在这开贴了呀!我来给你摇旗助威!
上个周末,我无聊的把TTL引了出来。
具体的是:把路由器的大USB口上边的塑料给削掉了一些,然后用热熔胶把排针固定到USB口背上,再把TTL的/RX/TX/GND以及VCC引到这个排针上,方便以后调试和供电。
这里给大家说下,NANO与刷了OpenWrt的WR703通过USB口连接后,软件虚拟的出来的tty口的接口号是:ttyUSB0,或者ttyUSBx。而WR703自己的TTL接口是:ttyACM0(???我记得不是太清楚了)。大家可以验证一下。(或许这里是因为安装了USB转TTL的驱动才是这样吧?)
请教兄弟一个问题:我开发试验用的是nano,生产准备用ProMini,ProMini你是知道的没有USB转TTL,所以必须使用WR703内部的TTL口来进行下载,不过这就有个问题了,没有DTR/RES接口,下载时需要手工按mini上的复位按钮。。。我曾想过调用WR703的GPIO接口来输出一个复位高电平,可惜我找不到详细的文档,试验了一下,没有成功。不知道你是有有研究啊?谢谢。
我还在出差,回家马上刷起!就等你这个出现,呵呵!非常棒! 可惜没早点看到帖子,这几天自己也做了一个通过wifi给MangoII(兼容UNO r3)烧写程序,
http://blog.pickbox.me/2013/08/28/通过wifi给arduino板烧写程序/
不过折腾一圈也学到不少东西
贴一张wifi上传烧录成功的界面吧
http://pickbox.bcs.duapp.com/wp-content/uploads/program_success.jpg
更新一下,修正了不刷新上传页面,将会导致反复下载同一个hex的bug:L
现在每次下载完成后立即删除hex文件:)
顺便去掉了mjpg-streamer的libjpeg依赖,使得剩余空间增加了90k左右,不过摄像头必须要支持硬件jpeg输出 agaonet 发表于 2013-8-28 16:20 static/image/common/back.gif
哈哈,兄弟在这开贴了呀!我来给你摇旗助威!
上个周末,我无聊的把TTL引了出来。
买一个基于ftdi的arduino pro mini下载器吧,比较方便:) 好例子,相当不错