How to operate as a dual server with M5Module-LAN-13.2?
Detailed explanation of the situation
Two M5Module-LAN-13.2 units are connected to one M5Stack gray.
The jumper switches on the M5Module-LAN-13.2 units are set to INT, RST, CS in that order.
First unit: G35, G0, G5
Second unit: G34, G13, G15
The first connection destination is 192.168.1.177:8080
The second connection destination is 192.168.1.178:8088
The two client PC programs are sending strings and trying to display the received strings on the LCD.
The 192.168.1.178:8088 side receives the signal and displays it on the LCD.
The 192.168.1.177:8080 side has the green access light on the unit
but nothing displays on the LCD.
If the side that doesn't display it disconnects the client program
it can't reconnect until you reset the M5Stack.
Either SPI setting will work fine if only one module is connected.
Is there a problem with the class modules related to M5Module_LAN.h that prevents them from running in dual mode?
Could this be a problem with the library and board combination?
I would appreciate any advice from anyone who knows how to run it as a dual server.
Arduino Library Version and setthings
The IDE I'm using is
Arduino IDE 2.3.3
The board manager includes:
esp32 version 2.0.7
M5Stack version 2.1.2
The board selected is
M5Core
The library manager includes:
M5Unified version 0.1.17
M5Stack version 0.4.6
M5Module-LAN-13.2 version 1.0.0
M5GFX version 0.1.17
M5Family version 0.1.13
Code that reproduces the problem
```#include <M5GFX.h>
```#include <SPI.h>
```#include <M5Module_LAN.h>
```// 1st M5MODULE-LAN-13.2(M5STACK-BASIC)
```uint8_t int_pin = 34; // interrupt (input)
```uint8_t rst_pin = 13; // Reset (output)
```uint8_t cs_pin = 15; // CableSelect (output)
```byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x89};
```IPAddress ip(192, 168, 1, 177);
```IPAddress gateway(192, 168, 1, 1); // Subnet mask(It won't work without this gateway description)
```IPAddress subnet(255, 255, 255, 0); // Subnet mask(It won't work without this subnet description)
```// 2nd M5MODULE-LAN-13.2(M5STACK-BASIC)
```uint8_t int_pin2 = 35; // interrupt (input)
```uint8_t rst_pin2 = 0; // Reset (output)
```uint8_t cs_pin2 = 5; // CableSelect (output)
```byte mac2[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xA0};
```IPAddress ip2(192, 168, 1, 178);
```IPAddress gateway2(192, 168, 1, 1); // Subnet mask(It won't work without this gateway description)
```IPAddress subnet2(255, 255, 255, 0); // Subnet mask(It won't work without this subnet description)
```M5Module_LAN LAN2;
```EthernetServer server2(8088);
``` M5.begin();
``` M5.Display.begin();
``` M5.Display.setTextColor(WHITE);
``` M5.Lcd.setTextSize(2); // 1=7,2=14,3=21,4=28,5=35,6=42,7=49PX
``` SPI.begin(SCK, MISO, MOSI, -1);
``` LAN.setResetPin(rst_pin);
``` LAN.reset();
``` LAN.init(cs_pin);
``` pinMode(cs_pin2, OUTPUT);
``` pinMode(rst_pin, OUTPUT);
``` pinMode(rst_pin2, OUTPUT);
``` digitalWrite(cs_pin2, HIGH); // HIGH=disable
``` digitalWrite(rst_pin, HIGH);
``` digitalWrite(rst_pin2, HIGH);
``` M5.Lcd.print("1st unit: ");
``` M5.Lcd.println(Ethernet.localIP().toString().c_str());
``` server.begin();
``` delay(2);
``` // Initializing the second module
``` LAN2.setResetPin(rst_pin2);
``` delay(10);
``` LAN2.reset();
``` LAN2.init(cs_pin2);
``` digitalWrite(cs_pin2, LOW); // LOW=enable
``` digitalWrite(cs_pin, HIGH); // HIGH=disable
``` Ethernet.begin(mac2, ip2, gateway2, subnet2);
``` M5.Lcd.print("2nd unit: ");
``` M5.Lcd.println(Ethernet.localIP().toString().c_str());
``` server2.begin();
```}
``` // Server 2 Client Process
``` digitalWrite(cs_pin2, LOW); // LOW=enable
``` EthernetClient client2 = server2.available();
``` if (client2) {
``` while (client2.connected() && client2.available() > 0) {
``` char thisChar = client2.read();
``` M5.Lcd.print(thisChar);
``` }
``` }
``` digitalWrite(cs_pin2, HIGH); // HIGH=disable
``` // Server 1 Client Process
``` digitalWrite(cs_pin, LOW); LOW=enable
``` EthernetClient client1 = server.available();
``` if (client1) {
``` while (client1.connected() && client1.available() > 0) {
``` char thisChar = client1.read();
``` M5.Lcd.print(thisChar);
``` }
``` }
``` digitalWrite(cs_pin, HIGH); // HIGH=disable
```}