Arduino - ENC28J60有线网络模块

2023-11-08 17:18

本文主要是介绍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/?ON 或 http://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( "连接网络失败");elseSerial.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());}
}

这篇关于Arduino - ENC28J60有线网络模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/371323

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from