Arduino - ENC28J60有线网络模块

先看网络模块长啥模样:
这里写图片描述

惯例,看接线方法,接7根:
Vcc —— 3.3V 【注意电压!!】
GND —— GND
RESET —— RESET;
CS —— 片选,与“ether.begin()”的第三个参数一致;下面的测试代码接D10;
SI —— D11 (MOSI 口,见下图);
SO —— D12 (MISO 口,见下图);
SCK —— D13 (SCK 口,见下图);

这里写图片描述

这里写图片描述

写一段代码,当用网页访问网络模块的时候,显示开关状态。
当直接访问 http://192.168.1.17 时,显示当前状态:OFF
当带参数访问时:http://192.168.1.17/?ONhttp://192.168.1.17/?OFF
则显示参数状态。

【库文件】:https://github.com/jcw/ethercard

代码:

#include <EtherCard.h>
//首先,你需要包括EtherCard库,并定义一些变量:MAC地址(mymac[]),IP地址(myip[])和用来存储传入和传出的数据缓冲(Ethernet::buffer[700])。
static byte mymac[]  = {0xDD,0xDD,0xDD,0x00,0x00,0x01}; //网卡MAC地址,mac地址第一字节必须是偶数。
static byte myip[]   = {192,168,1,17}; //网卡IP地址
byte Ethernet::buffer[700];  //缓冲区大小

char on[]  = "ON";
char off[] = "OFF";

boolean relayStatus;
char* relayLabel;
char* linkLabel;

void setup () {

  Serial.begin(9600);
  Serial.println("ENC28J60有线网络模块演示");
  //用begin()方法开始网络连接,需要3个参数,分别为缓冲大小、MAC地址和Arduino的片选(CS)引脚.
  //片选通常为10,这个参数可以不写,如果不写的话默认为8,所以要根据你的电路进行设置。
  if(!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "连接网络失败");
  else
    Serial.println("连接网络成功");
 //用staticSetup()方法配置静态的IP地址,参数有3个,分别为ip地址、网关和DNS,IP地址是必须的,网关和DNS是可选的。大家看下这个函数的参数定义。
  if(!ether.staticSetup(myip))
    Serial.println("设置IP地址失败");
  else 
    Serial.println("设置IP地址成功");

  relayStatus = false;
  relayLabel = off;
  linkLabel = on;
}

void loop() {
//在loop里面, 你只需要2条命令:
//packetReceive()方法: 从网络接收一个新传入的数据包;
//packetLoop() 方法:对具体收到的信息作出回应,包含“ping” 请求(ICMP echo 请求)。
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);

  if(pos) {
    if(strstr((char *)Ethernet::buffer + pos, "GET /?ON") != 0) {
      relayStatus = true;
      relayLabel = on;
      linkLabel = off;
    } else if(strstr((char *)Ethernet::buffer + pos, "GET /?OFF") != 0) {
      relayStatus = false;
      relayLabel = off;
      linkLabel = on;
    }

    BufferFiller bfill = ether.tcpOffset();
    bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
      "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
      "<html><head><meta charset='UTF-8' meta name='viewport' content='width=200px'/></head><body>"
      "<div style='position:absolute;width:200px;height:200px;top:50%;left:50%;margin:-100px 0 0 -100px'>"
      "<div style='font:bold 14px verdana;text-align:center'>当前状态 $S</div>"
      "<br><div style='text-align:center'>"
      "<a href='/?$S'></a>"
      "</div></div></body></html>"
      ), relayLabel, linkLabel, linkLabel);
    ether.httpServerReply(bfill.position());
    }
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Arduino-TF卡是一种结合Arduino开发板和TF卡的扩展模块。TF卡,也称为MicroSD卡,是一种用于存储数据的小型存储卡,通常用于移动设备和嵌入式系统。Arduino-TF卡模块允许我们将TF卡与Arduino开发板连接在一起,从而可以利用Arduino的功能读写TF卡上的数据。 使用Arduino-TF卡模块,我们可以通过编程实现以下功能: 1. 读写文件:可以将文件从计算机中复制到TF卡中,以便将数据从计算机传输到嵌入式系统中。 2. 传感器数据记录:通过将传感器与Arduino连接并将数据存储在TF卡中,可以实现数据记录和分析。例如,可以记录温度传感器的数据,并在需要时将其读出。 3. 多媒体播放:通过将音乐、图像或视频文件存储在TF卡中,并将TF卡与Arduino-TF卡模块连接,可以通过Arduino实现简单的多媒体播放功能。 4. 日志记录:可以将系统运行时的日志信息存储在TF卡中,以便在需要时进行故障排查和分析。 在使用Arduino-TF卡模块时,我们需要连接TF卡模块Arduino开发板,并在Arduino编程环境中编写相应的代码。通过使用相关的库函数,我们可以方便地实现对TF卡的读写操作。需要注意的是,在操作TF卡时,我们应该遵循正确的读写流程,并进行适当的错误处理,以保证数据的完整性和可靠性。 总之,Arduino-TF卡模块为我们提供了一种方便的方式来扩展Arduino开发板的存储能力,使得我们能够将数据存储在TF卡中,实现更多有趣和实用的应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值