极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 弘毅

arduino学习笔记26 - ENC28J60以太网模块实验

  [复制链接]
发表于 2012-5-25 16:14:52 | 显示全部楼层
其实感觉可以考虑另外一种方式来提交数据。就是BS模型;
单片机以访问WEB服务器来提交数据,比如以前常用的 POST方式(适合大量数据)
其他的直接用参数访问就好了嘛,服务器用一个ASP或者PHP就加上数据库就可以记录所有数据比如单片机访问
HTTP:\\xxxx.xxxx.xxx.xxx\postdata.asp?data1=xxx,date2=xxxx,date3=xxxx;
服务器记录之后以网页形式返回一个字符串,若未收到反馈字符串,就继续重发;
安全方面服务器可以通过甄别访问者的IP和MAC地址,来处理;比如反馈给客户端非法。或者直接丢弃数据。
回复 支持 反对

使用道具 举报

发表于 2012-5-25 16:20:32 | 显示全部楼层
本帖最后由 darkorigin 于 2012-5-25 16:21 编辑
smallzzy 发表于 2011-12-10 19:20
如果有密码,如何让程序自动输入


网页输入的密码,单片机似乎很难搞定。毕竟还涉及到post的处理了。
服务器密码记得好像可以用@来搞定
好像是
http://username@password:www.163.com/
意思就是尝试用用户名 USERNAME 和密码是 PASSWORD来访问某网站
不过大多数网站都不会用这种(至少国内如此)
FTP协议也是如此(题外话:当年玩FTP和主页空间的时候没有合适的FTP软件,就直接用IE用这种方式登陆上去,密码都不需要保存就自动啦)
回复 支持 反对

使用道具 举报

发表于 2012-5-25 16:25:13 | 显示全部楼层
taotao71 发表于 2012-3-10 18:42
东西不错,就是不知道价格怎么样?

30多能买到简易型的模块,自己用杜邦线连接就好了。100-150能买到网络板直接插到UNO上面(这种的一般都还带个SD卡槽。可以作为数据存放的外部存储器了,不过友情提醒:由于只支持FAT文件系统,所以不支持单个分区超过4G,如果你拿着16G的卡建议你先分好区再插入)。
感觉还是很不错的
回复 支持 反对

使用道具 举报

发表于 2012-5-25 16:27:08 | 显示全部楼层
安子 发表于 2012-1-5 18:09
**** 作者被禁止或删除 内容自动屏蔽 ****

arduino方面需要制作另外的程序,接收数据的。比如接收POST方式提交的数据,然后响应的。
好像坛子精华区有例子,可以控制LED的。
回复 支持 反对

使用道具 举报

发表于 2012-6-7 18:03:40 | 显示全部楼层
楼主 介绍的板子 在哪里买?上个地址,谢谢。
回复 支持 反对

使用道具 举报

发表于 2012-6-7 23:06:16 | 显示全部楼层
darkorigin 发表于 2012-5-25 16:14
其实感觉可以考虑另外一种方式来提交数据。就是BS模型;
单片机以访问WEB服务器来提交数据,比如以前常用的 ...

非常好的主意。

我的建议是,使用arduino+ ethenet shield,发送到yeelink平台上做数据的存储和展现,节省了极客们学习和开发服务器的工作了,完整的教程和代码可以从下面的地方下载。

http://blog.yeelink.net/?p=34

祝玩得高兴
回复 支持 反对

使用道具 举报

发表于 2012-6-7 23:06:56 | 显示全部楼层
darkorigin 发表于 2012-5-25 16:20
网页输入的密码,单片机似乎很难搞定。毕竟还涉及到post的处理了。
服务器密码记得好像可以用@来搞定
...

如果熟悉linux的朋友,可以用Expect这个强大的交互脚本语言实现,当然,学习稍微有些曲线。
回复 支持 反对

使用道具 举报

发表于 2012-6-8 23:07:20 | 显示全部楼层
erjiang 发表于 2012-6-7 23:06
非常好的主意。

我的建议是,使用arduino+ ethenet shield,发送到yeelink平台上做数据的存储和展现, ...

如果使用户ASP也很简单,好处是数据可以直接被存储到数据库,遇到大量的数据采集(比如某1组震动传感器3个月每秒数据)。分析也可以使用专业分析软件完成。
你说的使用第三方平台,数据的巨量存储就是问题了,当然,少量数据分析还是很给力的;

另外,学习了你的代码,真的不错,用POST方式可以一次性提交大量数据,还是很爽的似乎,呵呵,用在自己构建的ASP平台貌似也可以,只需要简单的数据采集整理和存储到数据库就可以。
回复 支持 反对

使用道具 举报

发表于 2012-6-8 23:11:38 | 显示全部楼层
erjiang 发表于 2012-6-7 23:06
如果熟悉linux的朋友,可以用Expect这个强大的交互脚本语言实现,当然,学习稍微有些曲线。

单片机上LINUX,特别是AVR单片机,基本上不用指望了,毕竟处理能力不比强悍的ARM。
登录带网页密码的编程能力需要的不是一般的强;
但是如果仅仅是服务器密码还是很简单(大多数服务器都支持匿名访问,不支持的也可以用过访问的URL格式来解决 例:http://aaa@bb:cc.net  )
回复 支持 反对

使用道具 举报

发表于 2012-6-8 23:17:56 | 显示全部楼层
erjiang 发表于 2012-6-7 23:06
非常好的主意。

我的建议是,使用arduino+ ethenet shield,发送到yeelink平台上做数据的存储和展现, ...

ethenet shield 太贵,我的ENC28J60也才35块钱。。。
常见的WEB页面提交数据方式就是 POST 和 GET两种方式:
POST 最初被用来上传文件(以前某些服务器漏洞可以直接用匿名账户上传 木马脚本) 主要适合上传大量数据,比如文件;
GET本来是获取,但是由于ASP支持参数,也可以以访问的形式提交数据,特点是简构造单,缺点是收到URL字符数量限制,提交数据量有限。

很多第三方数据网站貌似都是POST方式。
回复 支持 反对

使用道具 举报

发表于 2012-6-9 11:50:05 | 显示全部楼层
本帖最后由 erjiang 于 2012-6-9 11:53 编辑
darkorigin 发表于 2012-6-8 23:17
ethenet shield 太贵,我的ENC28J60也才35块钱。。。
常见的WEB页面提交数据方式就是 POST 和 GET两种方 ...


ENC这个模块,使用起来和ethernet shield一样吗?能不能直接复用httpclient库?
如果可以的话,能不能请你写一个使用教程,用ENC这个低价板子发送POST?
我把教程贴到博客里面,让更多的朋友更便宜的用这个功能。

确实很多朋友都抱怨,ethernet shield的价格是个问题,都比较贵

回复 支持 反对

使用道具 举报

发表于 2012-6-9 22:09:36 | 显示全部楼层
有连接图吗,2脚是芯片的2脚还是数字脚2
回复 支持 反对

使用道具 举报

发表于 2012-6-9 23:03:53 | 显示全部楼层
本帖最后由 darkorigin 于 2012-6-9 23:12 编辑
erjiang 发表于 2012-6-9 11:50
ENC这个模块,使用起来和ethernet shield一样吗?能不能直接复用httpclient库?
如果可以的话,能不能 ...


教程见本帖的第一页,我也是拾人牙慧,拿楼主的代码测试的
接线很简单,8根线,
库文件也有现成的,基本上和5100的函数兼容,只是2种模块由于函数名称完全相同,会冲突,所以LIB文件里只能有一种以太库文件。原来的库文件需要挪出来或者删除(改名无效,因为函数还是一样),因此需要同时使用2种模块会有麻烦,另外使用2个相同模块貌似也会有问题,因为中断的连接口貌似2560只有1个。。。 做路由器之类应用的朋友可以直接飘过了。
其他代码兼容你的代码。。。。(可以说是硬件透明化。呵呵) 完全不需要考虑代码(至少我目前的WEBserve测试完全通过了,压力测试没做,不过估计瓶颈还是在AVR处理器和存储空间大小上)


图片就是

连接方式


另外提醒下: 我买这个模块到手后发现接口的顺序和之前的2个图片不完全相同,不过还好,都有标注,对着上面的表格插好就可可以了。不知道其他模块会不会有不同的线序。所以要仔细看介绍,一般板子上都有标注脚定义。千万不要不动脑子的按图索骥,损坏东西都不知道怎么搞的。
回复 支持 反对

使用道具 举报

发表于 2012-6-9 23:04:47 | 显示全部楼层
本帖最后由 darkorigin 于 2012-6-9 23:06 编辑
yyy_zc 发表于 2012-6-9 22:09
有连接图吗,2脚是芯片的2脚还是数字脚2


连接图直接看帖子里面有介绍

所有数字设备都是用数字IO的,网络设备基本上全都是数字的,除了电源输入线性模拟元件,其他都是数字的。包括中断。
硬件连接都是数字IO口;
回复 支持 反对

使用道具 举报

发表于 2012-6-10 19:11:14 | 显示全部楼层
darkorigin 发表于 2012-6-9 23:03
教程见本帖的第一页,我也是拾人牙慧,拿楼主的代码测试的
接线很简单,8根线,
库文件也有现成的,基 ...

很好,webserver有个小问题,就是不能完成远程的控制。

因为NAT映射的原因,我们内网的webserver是很难从外网直接访问到的,所以完成类似远程数据共享和控制的功能就比较困难。

我会提供一个用webclient的示例程序,介绍实现将arduino+ENC/w5100模块,通过yeelink进行中转,实现从web远程控制开发板的IO口或者功能。

有了这个功能,从学校或办公室控制家里的电器,就变得非常简单啦。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 10:24 , Processed in 0.047522 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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