ESP32和ESP8266使用W5100和W5500以太网模块

ESP8266使用W5100及W5500以太网模块

概述

实验项目,希望用一个以太网模块来实现以太网通讯,没有使用WiFi网络,而是用连线的以太网。
采用一个ESP8266模块做主处理器,采用Arduino IDE做开发环境。首先选择了一个W5500模块连接以太网。结果通过SPI连接W5500,不成功。程序跑不起来。也没有添加其他的库,感觉现在的Arduino不是很友好,下载程序非常慢。就上某宝又购买了一个W5100模块。(因为看Ethernet.h和Ethernet.cpp发现库与W5100模块兼容。这次实验,一切正常,在这里分享一下使用情况。

程序

/*
  A simple server that answer the ping message. 
  Using an ESP8266 .
*/

/* Circuit:
 *  Ethernet shield attached to pins : 
 *  D6: GPIO12 - MISO
 *  D7: GPIO13 - MOSI
 *  D8: GPIO15 - CS
 *  D5: GPIO14 - SCLK
 */

#include <SPI.h>
#include <Ethernet.h>

#define MACADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xED
IPAddress ip(192,168,6,29);
IPAddress gateway(192, 168, 6, 1);
IPAddress subnet(255, 255, 255, 0);

// telnet defaults to port 23
EthernetServer server(23);

#define RST     4    //W5100 RST
void setup() 
{
  pinMode(BUILTIN_LED, OUTPUT);
  Ethernet.init(5);				// 初始化Ethernet板子
  pinMode(RST, OUTPUT);  
  digitalWrite(RST,HIGH);  //Reset this module
  delay(200); 
  digitalWrite(RST,LOW); 
  delay(200);
  digitalWrite(RST,HIGH);  
  delay(200);     

  Serial.begin(115200);
  Serial.println();

  byte mac[] = { MACADDRESS };

  Ethernet.begin(mac, ip, gateway, subnet);  

  // print your local IP address:
  Serial.print("My IP address: ");
  Serial.println(Ethernet.localIP());
  
  server.begin();
}

void loop()
{
}

连线

在这里插入图片描述
模块和ESP8266连线不要发生错误一次成功

W5100ESP8266
+5V
NSSSS
MOMOSI
GNDGND
RSTGPIO4
SCKSCLK
MIMISO

结果

在这里插入图片描述
实验成功,可以使用以太网和ESP8266通讯了。

经验

使用W5500不知道为啥总是死机。没有任何反应。看门狗都不起作用。用ESP32和W5500作了试验,ESP32无法作主机,原因是采用的库是C:\安装Arduino IDE\libraries\Ethernet目录下的头文件问题,不能使用EthernetServer myServer(23); 定义变量。编译不能通过。还有一个经验是当不清楚SPI的接线时可以用打印的方法获取SPI的端口。
这几天又试验了ESP32使用W5500的情况,ESP32可以作client,和server进行通讯,但不知道为啥还是不能作server。

后记

最近有网友讨论ESP8266和W5500的板子通讯的事,实验了一下。可以用ESP8266连接W5500实现以太网有线通讯,只要在初始化程序中增加Ethernet.init(5);这个命令选择GPIO5作为片选信号。还要注意:

  • 不能使用默认的GPIO15作为片选CS信号,如果用GPIO15的话会出现死机现象。可能和我们的板子GPIO15连接的一个10KΩ的接地电阻有关。
  • 片选信号选择其他的可以通讯并实现TCP等的传输。
  • 在初始化中添加Ethernet.Inti(5); 就可以,这个CS可以任意选

在这里插入图片描述

ESP32+W5500

关于ESP32+W5500的server不能运行解决了,可以使用ESP32和W5500实现有线以太网通讯。关键是库函数有问题,在编译时需要使用Server.h库。我的库的地址是在机器上的如下位置:
在这里插入图片描述
把这个头文件中改成如下形式就可以编译并使用W5500通讯了。

class Server: public Print
{
public:
    //virtual void begin(uint16_t port=0) =0;   modified by CAI at 2021-12-13
    virtual void begin() = 0;
};
  • 5
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
物联网是指通过无线通信技术将各种设备、物品互联互通,实现信息共享和远程控制的网络系统。STM32开发板是一种常用的微控制器开发板,其可以与各种外部设备相连,如传感器、执行器等。在物联网应用中,使用STM32开发板进行设备的控制和数据的采集十分常见。 为了方便用户对物联网设备进行控制,可以使用App、小程序或者Web页面等方式实现远程控制。在本场景中,我们使用了STM32开发板、W5500以太网模块ESP8266 WiFi模块W5500是一款硬件以太网控制器,它可以用于将STM32开发板连接到网络。通过W5500,STM32可以通过Ethernet协议与Internet进行通信。用户可以通过编写STM32的程序,实现与云服务器的数据交互与远程控制。 同时,我们还可以使用ESP8266模块连接到STM32开发板,使得STM32具备WiFi通信能力。ESP8266可以连接到无线网络,并提供与云服务器的通信接口。使用ESP8266模块,我们可以使用HTTP或MQTT等协议与互联网进行通信,实现物联网设备的远程控制和OTA(Over-The-Air)升级。 OTA升级指的是通过网络向设备更新固件,而不需要将设备连接到计算机进行有线升级。在物联网应用中,OTA升级可以实现灵活的固件更新,为设备带来更多的功能和修复漏洞。使用OTA升级,我们可以通过网络将固件更新的指令发送到STM32开发板,然后通过W5500ESP8266模块将固件文件下载到设备,最后进行固件更新。这样,设备的固件可以实时更新,同时不需要用户手动连接设备和计算机。 总之,通过使用STM32开发板、W5500以太网模块ESP8266 WiFi模块以及相应的App、小程序或者Web页面,我们可以实现对物联网设备的远程控制和OTA升级。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值