首页
社区
课程
招聘
[原创]Arduino网络通信
2016-10-9 13:30 10585

[原创]Arduino网络通信

2016-10-9 13:30
10585
Arduino网络通信


返回上一层

本篇中,我们会一起来看看Arduino网络通信。
Arduino网络通信的确不是它的强项,等会会看到代码一烧录进去,一下子就用了32%的程序存储空间。但是用它来做点小项目还是很方便的,主要是用它的话,各方面的成本都很低。

不过,这次只做的有线网络通信。因为我目前在学习逆向的原因(现在平时要做大量练习,还要把以前很多的C++程序用汇编再写出来。
//----------------------------------------------------------------------------
          https://pan.baidu.com/s/1hq5UeKO?qq-pf-to=pcqq.group
//----------------------------------------------------------------------------

看看钱老师上课布置的作业内容,我还是赶紧去写作业吧。),这就是为什么上一周都没时间更新我的Arduino文章,现在Arduino上花的时间更加的少了,每次不会写得太多,无线网络通信又要等等的最主要原因。

我所网络通信所用的模块是W5100(基于全硬件TCP/IP协议栈技术的网络芯片),enc28j60芯片要便宜一点,不过我是为了图方便,就直接买成品。


再来一个背面的图片


说说网线的事


在这里我要提示一下:网线一定要用交叉线
交叉线:又叫反线,线序按照一端568A,一端568B的标准排列好线序,并用RJ45水晶头夹好。

这一次离家太远,我是买的网线。这应该是我第2次出现网线的问题,因为买的网线一般都是平行线。
网线有两种做法,一种是交叉线,一种是平行(直通)线。
  交叉线的做法是:一头采用568A标准,一头采用568B标准
  平行(直通)线的做法是:两头同为568A标准或568B标准,(一般用到的都是568B平行(直通)线的做法)
  568A标准:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕
  568B标准:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕

记得,第1次是好几年前,两台电脑之间连网的时候。当时,出现这个问题以后,我就买了一个网线钳,自己开始做网线了。如果从成本考虑的话,自己做还是要便宜很多的,一根网线可以当2根用哦。平时组网的时候,用来给家里电器作控制线挺好的。一根线可以当8根线用,多好啊。用不了8根线就当接口放着。

这是电源,我是怕电脑供电不足,或者不用数据线的时候,不方便。在这里是可要可不要的,如果有就用呗,没有的话用数据线也可以。


例子:
Arduino里的示例,这样太方便了,直接就可以用,学起来也方便。


不过不好的事情,也在发生:


使用Arduino Ethernet建立一个简单网页服务器,当Arduino服务器接收到浏览器访问请求时,即会发送响应消息,浏览器接收到响应消息,会将其中包含的HTML文本转换为网页显示出来。
Arduino程序源码:
//----------------------- net Server ----------------------------------------
#include <SPI.h>
#include <Ethernet.h>

// 设定MAC地址、IP地址
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);

// HTTP默认端口为80
EthernetServer server(80);

void setup() {
  Serial.begin(9600);
  // 开始ethernet连接,并作为服务器初始化
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print('server is at ');//调试用
  Serial.println(Ethernet.localIP());
}

void loop()
{
  // 监听客户端传来的数据
  EthernetClient client = server.available();
  if (client)
  {
    Serial.println('new client');
    // 一个Http请求结尾必须带有回车换行
    boolean currentLineIsBlank = true;
    if (client)
    {
      Serial.println('new client');
      // 一个Http请求结尾必须带有回车换行
      boolean currentLineIsBlank = true;
      while (client.connected())
      {
        if (client.available())
        {
          char c = client.read();
          Serial.write(c);
          // 如果收到空白行,说明http请求结束,并发送响应消息
          if (c == '\n' && currentLineIsBlank)
          {
            // 发送标准的HTTP响应
            client.println('HTTP/1.1 200 OK');
            client.println('Content-Type: text/html');
            client.println('Connection: close');
            client.println();
            client.println('<!DOCTYPE HTML>');
            client.println('<html>');
            client.println('<meta http-equiv=\'refresh\' content=\'5\'>');
            for (int analogChannel = 0; analogChannel < 6; analogChannel++)
            {
              int sensorReading = analogRead(analogChannel);
              client.print('analog input ');
              client.print(analogChannel);
              client.print(' is ');
              client.print(sensorReading);
              client.println('<br />');
            }
            client.println('</html>');
            break;
          }
          if (c == '\n')
          {
            // 已经开始一个新行
            currentLineIsBlank = true;
          }
          else if (c != '\r')
          {
            // 在当前行已经得到一个字符
            currentLineIsBlank = false;
          }
        }
      }//if (client.available())
      // 等待浏览器接收数据
      delay(1);   
      // 断开连接
      client.stop();
      Serial.println('client disonnected');
    }//while (client.connected())
  }//if (client)
}//loop()
//-----------------------------------------------------------------------------------
程序烧写完成后,打开串口应当是这样子的,见下图


还没接上网线时的图片


电脑设置:




接上网线,电脑这边还没有启动网线连接


最后结果应该是这样的


参考资料:
https://www.arduino.cc/en/Main/ArduinoBoardEthernet


[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 3
打赏
分享
最新回复 (2)
雪    币: 7
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
NAGAじSKY 2016-10-9 16:26
2
0
路过进来看看 -****************
雪    币: 8180
活跃值: (2677)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
layerfsd 4 2016-10-10 09:26
3
0
满满看去一个广告接着一个广告。
游客
登录 | 注册 方可回帖
返回