资讯详情

AVR单片机与网络的连接

本文介绍关于ARV单片机通过一块芯片W5100上网模块与网络进行连接,一直以来对于嵌入式arduino怎么样和网络进行连接一直是我很好奇的问题,难得这几天公司给我一个关于利用嵌入式让 连接的应用,虽然对于英语水平还是很低下的我,没办法,为了兴趣和工作,只好硬着头皮看着外国一些关于AVR与网络连接的论坛。其中收获还是蛮大的,让自己知道了一些关于网络的知识和电路,特别是自己把一块ENC28J60上网模块的PCB顺利画出来进行生产,在画这个板的时候也是费了一番功夫,根据原理图,我觉得第12和第13引脚不应该是短路的,可是当PCB板拿到手的时候进行硬件测试,居然发现这两个引脚连在了一起。百思不得其解,把PCB板和画的图进行对比是没有错的,后来怀疑是IC的问题,但是经过看数据手册和IC不接在电路中的测试,没有问题。最近对 911105A网口进行测试,兴奋地发现了问题是第3和第6是连在一起的。找出问题根源。 一直对于arduino这种开发平台和独特的编程风格的感兴趣。特别是他具有一个实时和电脑进行通讯的系统平台,长话短说,还是把硬件进行连接,以及代码的编写和调试,因为ardunio官方指代了一个关于Ethernet的库,所以把它下载下来,加以研究。终于写出了下面的一段代码: #include //Test Code: /* * Web Server * * A simple web server that shows the value of the analog input pins. */ #include byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192, 168, 0, 48 }; Server server(80); void setup() { Ethernet.begin(mac, ip); server.begin(); } void loop() { Client client = server.available(); if (client) { // an http request ends with a blank line boolean current_line_is_blank = true; while (client.connected()) { if (client.available()) { char c = client.read(); // if we've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so we can send a reply if (c == 'n' && current_line_is_blank) { // send a standard http response header client.println(" TP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); // output the value of each analog input pin client.print("welcome to B2CQSHOP"); client.println(" "); client.print("//*************************************"); client.println(" "); client.print(""); client.println(" "); client.print("//*************************************"); client.println(" "); for (int i = 0; i < 6; i++) { client.print("analog input "); client.print(i); client.print(" is "); client.print(analogRead(i)); client.println(" "); } break; } if (c == 'n') { // we're starting a new line current_line_is_blank = true; } else if (c != 'r') { // we've gotten a character on the current line current_line_is_blank = false; } } } client.stop(); } } 其实,写这番代码的时候也是费了一番周折的,因为参考网上一些关于ethernet的写法,刚开始编译的时候系统老是报错。错误的结果是: 经过查资料,终于知道了平时我们所说的 I是什么东西,原来是“串行外围设备 ”,也就是网上很多 显示,为什么只有6根线就可以控制显示内容的东东。在官方网上找了好久,终于把到库,下载下来以后调用进程序,终于可以顺利的编译。心里那个激动,呵呵。希望可以出现预期结果。 但是问题不是我所想的那么简单。把自己程序中的IP地址输到网站地址栏,回车。晕。居然提示: 最后,终于在快绝望的时候看到了在打IP地址的时候多加了三个www. .晕死了。看来是自己打网址养好的“良好习惯”害了自己呀。嘿嘿。不过经过这次吃亏以后,至少以后不会再打错啦。^_^ 结果出来了:/胜利 这只是一个小胜利的开始,在网上看了一下,有几个工程师在arduino上加了一个温湿度的 ,随时的把测到的温度和湿度传到网站上去,可供别人打开网址时看到实时检测到的温度。得好好利用这个模块,相信对于信息时代的今天,作为一个电子工作者是有必要掌握这些知识的。 -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台