极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 32964|回复: 14

[求助]通过TCP/IP网络烧录Arduino程序!

[复制链接]
发表于 2013-8-21 00:54:07 | 显示全部楼层 |阅读模式
大家好!最近本小白终于将TP-LINK WR703路由器刷成了OpenWRT操作系统,并安装了USB转串口(TTL)模块,通过在OpenWRT系统上安装ser2net软件,实现了无线与arduino对话的功能。

通过测试,可以实现双向通讯。既然链路通道打通了,那可不可以实现远程烧录程序呢?

以下时候当前链路图:

PC---------通过wifi链接WR703路由器-------WR703
PC---------“telnet 192.168.2.1 1234”----->WR703---------“ser2net.exe”---------->USBtty0-------“USBtoTTL软件功能模块”------->USB--------->arduino

双引号内表示实现这段连接所进行的操作和实现方法。

现在想在PC上安装一个软件,将要下载的程序通过上诉方法方法下载到arduino上。这样就可以实现远程升级程序了。其要点是通过TCP将下载程序传输到路由器上,通过路由器的ser2net服务传输到连接到此路由器USB口的arduino上。

目前大多数串口调试程序只能操作本地的实际COM口或虚拟COM,要是能操作网络端口就好了。

求相关教程和软件。

回复

使用道具 举报

发表于 2013-8-21 15:45:24 | 显示全部楼层
WR703不错,今天刚买一个,刷openwrt后感觉比树莓派更实用,
同求远程下载程序的方法
回复 支持 反对

使用道具 举报

发表于 2013-8-21 16:00:37 | 显示全部楼层
LZ需要在OpenWRT上面安装avrdude,opkg install avrdude,就可以给arduino下载程序了,

为了方便使用还可以用uhttpd+lua写一个cgi网页,然后就可以在浏览器里远程进行操作了

http://www.elcojacobs.com/programming-my-arduino-over-wifi/
这个网站里面的过程是针对DD-WRT的,OpenWRT也是类似思路
回复 支持 反对

使用道具 举报

发表于 2013-8-21 17:39:02 | 显示全部楼层
我也想实现远程烧录程序, arduino 烧录程序时除了需要串口外, 还需要一个DTR数据接口(数据终端就绪) , 一般好点的usb转ttl 上都带着这个口,不过据了解wr703n 上只有tx 和 tr 口,没有DTR 口,倒是可以研究下能否在wr703n 上使用usb转ttl 的设备, 姑且可行.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 18:44:17 | 显示全部楼层
本帖最后由 agaonet 于 2013-8-21 18:49 编辑
chzhewl 发表于 2013-8-21 17:39
我也想实现远程烧录程序, arduino 烧录程序时除了需要串口外, 还需要一个DTR数据接口(数据终端就 ...


给的建议很好,谢谢。

我昨天晚上发现了一个软件,可以在本地虚拟一个COM口,该软件同时将改COM接收和发送的数据,通过TCP/IP or UDP 转换到以太网上,非常棒!! 该软件可以直接与安装了ser2net 的端口进行通讯收发两边的串口数据,同时还可以做服务端将本地的虚拟COM口绑定到TCP/UDP端口上,实现串口转网口功能。实现这个需要ser2net那边绑定的USBto串口或者硬件串口的波特率要与这边对齐。

有了这个东东,我就可以透明的使用arduino IDE的烧录功能向本地虚拟的COM口烧录程序或者进行人机交互。


不过非常遗憾的是烧录程序不成功;人机交互却没有问题。进入烧录阶段后,发送6个字节后就同步失败了。

这真的和DTR有关吗!?

我使用的是nano,我直接用USB线连接到WR703上USB口,然后在703上使用了USB转串口的程序,虚拟出了ttyUSB0,然后ser2net将ttyUSB0绑定到TCP端口上来通讯。可是如果是DTR问题,为何我在PC上也是同USB转串口驱动,虚拟出COM口,却可以下载程序呢?是703的USB口硬件问题?还是OpenWRT上USB转串口程序的问题?还是这直接多个节点转换传输的问题? 太伤神啦!

我把软件帖上来,该软件WIN7下也可以用,安装的时候选择XP兼容模式(ServicePack 2),管理员权限模式,运行的时候也选项兼容模式和管理员权限模式,即可。

对了,或许我是WIN7吧,如有在XP能下载成功的同学给回一下哈。谢谢。

VSPM 请下载2.82免费版,WIN7一样可以用。"http://www.powerip.net/product_VSPM.htm"
http://www.powerip.net/product_VSPM.htm

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 18:50:40 | 显示全部楼层
histamine 发表于 2013-8-21 16:00
LZ需要在OpenWRT上面安装avrdude,opkg install avrdude,就可以给arduino下载程序了,

为了方便使用还可 ...

谢谢,吃完饭来研究。呵呵!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 20:34:51 | 显示全部楼层
哎,4M内存的孩子掩面跑过。。。

太大了,没装下,现在把改删的都删了,还是不行。。。只有1M可用,这是为什呢?

但是tmp下,有1.4M的空间啊。。。咋个如何利用呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-21 20:37:21 | 显示全部楼层
root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    1.1M    988.0K    100.0K  91% /
/dev/root                 1.8M      1.8M         0 100% /rom
tmpfs                    14.1M     88.0K     14.0M   1% /tmp
/dev/mtdblock3            1.1M    988.0K    100.0K  91% /overlay
overlayfs:/overlay        1.1M    988.0K    100.0K  91% /
tmpfs                   512.0K         0    512.0K   0% /dev


各位老大,我的703的tmp下有14M的空间,但是我装程序全部自动安装到/dev/mtdblock3  下,请问该如何弄,才能把14M的空间利用起来啊。
回复 支持 反对

使用道具 举报

发表于 2013-8-21 22:23:24 | 显示全部楼层
本帖最后由 histamine 于 2013-8-21 22:40 编辑

表示我编译好了一个固件,把lua、uhttpd、avrdude、mjpg_streamer、uvc摄像头驱动、ser2net、stty、libnfc(带pn532串口驱动)、cp210x/ftdi/arduino usb串口驱动、u盘驱动、ext4/ntfs文件系统支持都集成进去了,大小差不多刚塞满wr703n自带的固件存放空间,没有编译任何web配置界面,所以请用终端进行配置
(编译avrdude时把libreadline和libncurse依赖去掉了,不然铁定放不下)

http://pan.baidu.com/share/link? ... 5&uk=2298833357

电脑上用scp把hex文件传到/tmp下面
  1. scp XXX.hex [email protected]:/tmp
复制代码
然后把arduino uno插到wr703n的usb口上面
  1. cd /tmp
  2. avrdude -p m328p -c arduino -b 115200 -P /dev/ttyACM0 -C /etc/avrdude.conf -U flash:w:XXX.hex
复制代码
即可在wr703n路由上面完成对arduino uno的固件下载

周末有空再研究下,写个web界面出来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 13:35:35 | 显示全部楼层
histamine 发表于 2013-8-21 22:23
表示我编译好了一个固件,把lua、uhttpd、avrdude、mjpg_streamer、uvc摄像头驱动、ser2net、stty、libnfc( ...

啊哈。我果断下载,马上实验。。

昨天晚上刷回官方固件失败,手边又没有串口转TTL,还好有个arduino nano 果断拆开路由器,然后引出TTL,折腾了一晚上,搞定了。真恨不得多几只手啊!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 13:44:50 | 显示全部楼层
histamine 发表于 2013-8-21 22:23
表示我编译好了一个固件,把lua、uhttpd、avrdude、mjpg_streamer、uvc摄像头驱动、ser2net、stty、libnfc( ...

兄弟,你这个是4M的,还是8M的呢?我暂时没有刷你的包,不过听你的建议去掉了2个lib,空间一下就多了。目前安装了 、ftdi 、lua、uhttpd、ser2net .

还有一个问题,我弄了个万能中继,及客户端加虚拟AP的方式,不知道为何,链接虚拟AP后,老是丢包啊!   不过从客户端网络进去连接路由器后就不丢包。。
回复 支持 反对

使用道具 举报

发表于 2013-8-22 13:54:44 | 显示全部楼层
agaonet 发表于 2013-8-22 13:44
兄弟,你这个是4M的,还是8M的呢?我暂时没有刷你的包,不过听你的建议去掉了2个lib,空间一下就多了。目 ...

4M的

今天继续在研究,裁剪掉ipv6、ppp等支持,基本上还可以在4MB空间里面把luci web配置界面也塞进去,顺便把libnfc更新到1.7(1.4版本基本上没法用)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 14:15:12 | 显示全部楼层
agaonet 发表于 2013-8-22 13:44
兄弟,你这个是4M的,还是8M的呢?我暂时没有刷你的包,不过听你的建议去掉了2个lib,空间一下就多了。目 ...

root@OpenWrt:/tmp# avrdude -p m328p -c arduino -b 57600 -P /dev/ttyUSB0 -C /etc/
avrdude.conf -U flash:w:Blink.cpp.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Blink.cpp.hex"
avrdude: input file Blink.cpp.hex auto detected as Intel Hex
avrdude: writing flash (1084 bytes):

Writing | ################################################## | 100% 0.35s

avrdude: 1084 bytes of flash written
avrdude: verifying flash memory against Blink.cpp.hex:
avrdude: load data flash data from input file Blink.cpp.hex:
avrdude: input file Blink.cpp.hex auto detected as Intel Hex
avrdude: input file Blink.cpp.hex contains 1084 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.26s

avrdude: verifying ...
avrdude: 1084 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

root@OpenWrt:/tmp# avrdude -p m328p -c arduino -b 57600 -P /dev/ttyUSB0 -C /etc/
avrdude.conf -U flash:w:Blink.cpp.hex
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
root@OpenWrt:/tmp#


成功!!不过,第二再刷就会失败! 必须将USB重新拔插一下才行。

另外,去掉的2个lib在下估计时提示必须要有,否则无法运行。没办法就重新下载了。不过好在现在空间还有100k,够留给WEB的了,期待你的WEB哈。呵呵呵。谢谢。
回复 支持 反对

使用道具 举报

发表于 2013-8-22 14:19:30 | 显示全部楼层
本帖最后由 histamine 于 2013-8-22 14:29 编辑
agaonet 发表于 2013-8-22 14:15
root@OpenWrt:/tmp# avrdude -p m328p -c arduino -b 57600 -P /dev/ttyUSB0 -C /etc/
avrdude.conf -U  ...


我是自己编译的,所以可以不依赖那两个lib

mjpg-streamer也可以裁剪一下,我用的摄像头支持硬件jpeg输出,所以可以去掉libjpeg的依赖
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 15:31:45 | 显示全部楼层
histamine 发表于 2013-8-22 14:19
我是自己编译的,所以可以不依赖那两个lib

mjpg-streamer也可以裁剪一下,我用的摄像头支持硬件 ...

呵呵。那我就先不刷你编译的系统了。我丢了Linux好多年了,最近喜欢上ardunio才有时间玩玩。

那等你把web也弄进去了,你再奉献下你的系统哟。呵呵。等你好消息。谢谢。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-2 17:54 , Processed in 0.041703 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表