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

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(