Added examples for W5500, thanks to real-bombinho

This commit is contained in:
hsaturn
2023-04-21 21:36:06 +02:00
parent ef4a0263a6
commit 66cb80ff3f
4 changed files with 233 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
#include <SPI.h>
#include <Ethernet.h>
#include "TinyMqtt.h" // https://github.com/hsaturn/TinyMqtt
#define WIZRST 20 //Specify pin to use for reseting W5500 = GPIO20
#define WIZCS 17 //Specify the pin for SPI CS = GPIO17 = D5
#define PORT 1883
MqttBroker broker(PORT);
unsigned long Time;
unsigned long freeRam;
/** Basic Mqtt Broker
*
* +-----------------------------+
* | ESP |
* | +--------+ |
* | | broker | | 1883 <--- External client/s
* | +--------+ |
* | |
* +-----------------------------+
*
* Your ESP will become a MqttBroker.
* You can test it with any client such as mqtt-spy for example
*
*/
#if defined(USE_ETHERNET)
byte mac[] = { 0x00, 0xAA, 0xBB, 0xE0, 0x01, 0x25 }; //MAC Address
//IPAddress ip = (192,168,0,88); //Fixed IP Address
#else
const char* ssid = "xxxxxxx";
const char* password = "xxxxxxxx";
#endif
void WizReset() {
Serial.print("Resetting Wiz W5500 Ethernet Board... ");
pinMode(WIZRST, OUTPUT);
digitalWrite(WIZRST, HIGH);
delay(250);
digitalWrite(WIZRST, LOW);
delay(50);
digitalWrite(WIZRST, HIGH);
delay(350);
Serial.println("Done.");
}
void setup()
{
Serial.begin(115200);
#if defined(USE_ETHERNET)
Ethernet.init(WIZCS);
SPI.begin();
WizReset();
Console << TinyConsole::green << "Starting Ethernet...." << endl;
Ethernet.begin(mac); //Connect using DHCP
//Ethernet.begin(mac,ip); //Connect using Fixed IP
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Console << TinyConsole::red << "Ethernet shield was not found. Sorry, can't run without hardware. :(" << endl;
} else
if (Ethernet.linkStatus() == LinkOFF) {
Console << TinyConsole::red << "Ethernet cable is not connected." << endl;
}
Console << TinyConsole::green << "Local Ethernet IP address: " << Ethernet.localIP() << endl;
broker.begin();
Console << "Broker ready (eth) : " << Ethernet.localIP() << " on port " << PORT << endl;
#else
if (strlen(ssid)==0)
Console << TinyConsole::red << "****** PLEASE MODIFY ssid/password *************" << endl;
WiFi.disconnect(); //Remove previous SSID & Password
WiFi.begin(ssid, password); // Connect to the network
Console << TinyConsole::white << "WiFi Connecting to " << ssid << " ...";
int i = 0;
while (WiFi.status() != WL_CONNECTED) { // Wait for the Wi-Fi to connect
delay(1000);
Console << TinyConsole::white << ".";
i++;
if (i > 20) break;
}
Console << endl << endl;
Console << TinyConsole::green << "Connected to " << ssid << " IP address: " << WiFi.localIP() << endl;
broker.begin();
Console << "Broker ready (wifi) : " << WiFi.localIP() << " on port " << PORT << endl;
#endif
}
void loop()
{
broker.loop();
if(millis()-Time>10000) {
Time=millis();
#ifdef ARDUINO_ARCH_RP2040
if(rp2040.getFreeHeap()!=freeRam) {
freeRam=rp2040.getFreeHeap();
#else
if(ESP.getFreeHeap()!=freeRam) {
freeRam=ESP.getFreeHeap();
#endif
Serial.print("RAM:");
Serial.println(freeRam);
}
}
}