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通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp