当前位置: 首页 > java >正文

ESP32开发-通过ENC28J60模块实现以太网设备

要实现ESP32与ENC28J60模块连接并使电脑能够Ping通,需完成以下步骤:


​1. 硬件连接​

确保ESP32与ENC28J60正确连接(SPI接口):

ENC28J60引脚ESP32引脚
SCKGPIO18
MISOGPIO19
MOSIGPIO23
CSGPIO5
INT无需连接
VCC3.3V
GNDGND

​注意​​:ENC28J60需3.3V供电,避免使用5V。


​2. 软件配置​

​步骤1:安装库​
  • ​ENC28J60驱动库​​:推荐使用EthernetENC(兼容ESP32)。
    • Arduino库管理中搜索并安装EthernetENC
​步骤2:示例代码​

以下是完整的ESP32与ENC28J60通信代码,包含静态IP配置和网络状态监控,确保电脑可以Ping通:​

#include <SPI.h>
#include <EthernetENC.h> // 或使用 UIPEthernet.h// 网络配置(DHCP或静态IP二选一)
#define USE_DHCP        true  // 启用DHCP自动获取IP
//#define USE_DHCP      false // 启用静态IPbyte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址(需唯一)// 静态IP配置(仅在USE_DHCP=false时生效)
IPAddress staticIP(192, 168, 1, 100);    // ESP32的IP
IPAddress subnet(255, 255, 255, 0);      // 子网掩码
IPAddress gateway(192, 168, 1, 1);       // 网关
IPAddress dnsServer(8, 8, 8, 8);         // DNS服务器EthernetClient client;void setup() {Serial.begin(115200);delay(1000); // 等待串口稳定Serial.println("Initializing ENC28J60...");// 初始化SPI(ESP32默认SPI引脚)SPI.begin(18, 19, 23, 5); // SCK=18, MISO=19, MOSI=23, CS=5// 启动以太网#if USE_DHCPif (Ethernet.begin(mac) == 0) {Serial.println("DHCP Failed! Check cable or restart.");while (1);}#elseEthernet.begin(mac, staticIP, dnsServer, gateway, subnet);#endif// 打印网络信息printNetworkDetails();
}void loop() {Ethernet.maintain(); // 维持DHCP租约(如果使用DHCP)// 示例:每5秒打印一次连接状态static unsigned long lastPrint = 0;if (millis() - lastPrint >= 5000) {lastPrint = millis();Serial.print("Link Status: ");Serial.println(Ethernet.linkStatus() == LinkON ? "Connected" : "Disconnected");}
}// 打印网络详细信息
void printNetworkDetails() {Serial.println("\nNetwork Configuration:");Serial.println("----------------------");Serial.print("MAC Address: ");for (byte i = 0; i < 6; i++) {Serial.print(mac[i], HEX);if (i < 5) Serial.print(":");}Serial.println();Serial.print("IP Address: ");Serial.println(Ethernet.localIP());Serial.print("Subnet Mask: ");Serial.println(Ethernet.subnetMask());Serial.print("Gateway: ");Serial.println(Ethernet.gatewayIP());Serial.print("DNS Server: ");Serial.println(Ethernet.dnsServerIP());Serial.println("----------------------");Serial.println("Try pinging this IP from your computer!");
}

​3. 网络调试​

  1. ​查看串口输出​​:确保ESP32获取到IP(如192.168.1.100)。
  2. ​电脑Ping测试​​:
    • 确保电脑与ESP32在同一局域网。
    • 打开命令提示符,执行:
      ping 192.168.1.100
    • 若超时,检查防火墙或路由器设置。
    • 效果
http://www.xdnf.cn/news/3193.html

相关文章:

  • 从实列中学习linux shell6: 写一个 shell 脚本 过滤 恶意ip 攻击
  • css 数字从0开始增加的动画效果
  • 【数学建模国奖速成系列】优秀论文绘图复现代码(二)
  • DeepSeek V1:初代模型的架构与性能
  • 艺术与科技的双向奔赴——高一鑫荣获加州联合表彰
  • Java ResourceBundle 资源绑定详解
  • 腾讯元宝桌面客户端:基于Tauri的开源技术解析
  • Python GIL 与 pybind11 GIL管理机制
  • 模拟flexible.js 前端开发中的大屏布局方案
  • Hadoop虚拟机中配置hosts
  • 评价类模型数据预处理(定量指标值的无量纲化处理)
  • 从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用
  • 如何禁止AutoCAD这类软件联网
  • Go语言的发展历史 -《Go语言实战指南》
  • Copilot:您的AI伴侣-微软50周年系列更新
  • 《Java高级编程:从原理到实战 - 进阶知识篇一》
  • 【阿里云大模型高级工程师ACP学习笔记】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)
  • C#学习第20天:垃圾回收
  • C#规避内存泄漏的编码方法
  • ZStack Cloud 5.3.28正式发布
  • 【蓝桥杯省赛真题59】Scratch收集松果 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
  • 跨境电商生死劫:IP筛查三法则破解封号魔咒
  • 编译原理实验二:构建TINY语言的词法分析器
  • 【数据链路层】网络通信的“桥梁建设者”
  • 在Carla中构建自动驾驶:使用PID控制和ROS2进行路径跟踪
  • WPF性能优化举例
  • python中库pydantic的作用和基本用法
  • 《ESP32音频开发实战:I2S协议解析与WAV音频录制/播放全指南》
  • 90.如何将Maui应用安装到手机(最简) C#例子 Maui例子
  • 西门子PLC S7-1200电动机软启动、软停止的控制实例