Durch Schwierigkeiten zu den Sternen oder LILYGO TTGO T-Internet-POE ESP32 LAN8270A

Bild

Ich habe das LILYGO TTGO T-Internet-POE ESP32 LAN8270A-Board gesehen und konnte natürlich nicht an einer so interessanten Neuheit vorbeikommen: ESP32, LAN8270A, POE, SD-Karte, Wi-Fi + Ethernet ... Es war interessant zu fühlen Diese Arbeit eines düsteren chinesischen Genies mit meinen eigenen Händen und testen Sie sie in der realen Arbeit, denn TTX-Boards versprachen sehr interessante Perspektiven für den Einsatz in IoT, DIY und allgemein im Bereich "Wi-Fi + Ethernet und was Sie sich vorstellen können . "



Wie immer erwies sich der Weg von Werbebroschüren auf den Websites von Verkäufern und Herstellern zum Start des Boards und zur Durchführung von Tests als sehr schwierig und schwierig. Als nächstes mache ich Sie auf einen Bericht über meine faszinierende Forschung zu diesem Thema aufmerksam.



Stein im Garten LILYGO



Nach meinen Beobachtungen leiden (viele) Hersteller von "Hardware" an einer generischen Krankheit - einem völligen Mangel an Marketingkompetenz und im Allgemeinen einem elementaren Verständnis dessen, was ihre Produkte für Menschen tun.



Ein gutes Beispiel ist LILYGO TTGO T-Internet-POE ESP32 LAN8270A (im Folgenden wird dieses Board der Kürze halber T-Internet-POE genannt ). Der Hersteller hat ein interessantes Board gemacht, aber ... nichts anderes gemacht:



  • Keine normale Controller-Pinbelegung
  • kein Schaltplan
  • Es gibt keine vernünftige Beschreibung der Verwendung der Platine und der typischen Verwendungsmuster
  • Es gibt keine technischen Erklärungen für die Bedienung einzelner Komponenten der Platine
  • Keine Codebeispiele (es gibt 1 (!) Skizze für "Verpiss dich, Junge, mach dir keine Sorgen um die Arbeit")
  • Keine Website mit Dokumentation
  • Es gibt kein Forum mit kompetenten und motivierten Moderatoren
  • Es gibt keine populären und motivierenden Artikel für diejenigen, die an diesem Controller interessiert sind, aber nicht wissen (nicht verstehen), wo er ihn für seine eigenen Zwecke verwenden könnte
  • und es gibt noch viele Dinge, die hätten sein sollen


Kurz gesagt, es gibt überhaupt nichts und jeder, der es wagt, T-Internet-POE zu kaufen, muss ein tadelloser DIY-Krieger sein, sonst hat er keine Chance, in diesem Kampf mit LILYGO zu überleben. Gibt es viele von uns so?



Und wie schaffen sie es mit diesem Geschäftsansatz überhaupt, etwas zu verkaufen? Und wie viel würde ihr Umsatz steigen, wenn sie den Lötkolben für einen Moment beiseite legen und sich an ihre Kunden erinnern würden?



Die Fragen sind rhetorisch, aber auf die eine oder andere Weise muss ich die ganze Arbeit für die technischen und Marketingabteilungen von LILYGO erledigen.



Was ist der Trick?



In einfachen Worten, auf diesem Board ist es uns gelungen, ESP32 (Wi-Fi), Ethernet und POE mehr oder weniger erfolgreich in einem Gerät zu kombinieren und eine Kirsche in Form eines microSD-Kartenlesers auf diesen Kuchen zu legen. Aus nur einer Kombination dieser Komponenten ergeben sich sofort viele interessante Optionen für die Verwendung dieses Boards:



  • Arbeiten Sie über WLAN mit einem Backup in Form eines Ethernet-Kanals
  • Arbeiten Sie über Ethernet mit einem Backup in Form einer Wi-Fi-Verbindung
  • Service von Wi-Fi- und Ethernet-Verbindungen
  • Router zwischen Wi-Fi und Ethernet in beide Richtungen
  • Webserver für zwei Schnittstellen
  • verschiedene Webserver auf verschiedenen Schnittstellen
  • Stromversorgung der (Fern-) Steuerung über POE


Und viele andere interessante Optionen (vergessen Sie übrigens nicht, dass die Karte zusätzlich zur Netzwerkkomponente selbst GPIO-Ausgänge hat und für den vorgesehenen Zweck verwendet werden kann, dh als IoT-Controller).



Wie Sie sehen können, ist der Anwendungsbereich dieses Boards in IoT und DIY nur durch Ihre Vorstellungskraft und Ihre Bedürfnisse begrenzt, und im Allgemeinen sieht T-Internet-POE als Gerät sehr vielversprechend aus.



Als nächstes wollen wir herausfinden, wie wir mit all dieser Pracht umgehen können, was angesichts des fast vollständigen Mangels an Informationen auf der Tafel keine so einfache Aufgabe ist.



Technische Eigenschaften



Wir werden hier keine vollständige Liste aller technischen Merkmale des Boards bereitstellen - das ist was, und es gibt keine Probleme damit auf den Websites von Verkäufern und Herstellern (das Problem ist, dass es außer diesen Merkmalen nichts anderes gibt). Hier ist nur eine Liste der Tastaturelemente:



  • ESP32-WROOM (4 MB)
  • LAN8720A (Ethernet PHY)
  • POE 802.3af
  • microSD-Kartenleser
  • 12 GPIO-Pins für externe Verbindungen


Was sagt uns diese Konfiguration auf Anhieb? Wenn Sie diese Karte als Webserver verwenden, können Dateien sowohl auf einer microSD-Speicherkarte als auch im internen Speicher des ESP32-Moduls (oder dort und dort gleichzeitig) gespeichert werden.



Gleichzeitig erzeugen 12 kostenlose GPIOs einen mehrdeutigen Eindruck - einerseits ist dies bereits "etwas" und viel besser als beim ESP8266 und andererseits nach Projekten auf dem Mega 2560 mit seinen Dutzenden von GPIOs. 12 Pins sehen sehr, sehr bescheiden aus und schränken die Entwicklungsmöglichkeiten stark ein - hier müssen Sie entweder eine Art Port-Extender erfinden oder Tandem-Baugruppen mit anderen Controllern herstellen.



Controller-Optionen



Bei näherer Betrachtung stellt sich heraus, dass es unter demselben Namen zwei verschiedene Steuerungen gibt - eine beim ESP32-WROOM und die zweite beim ESP32-WROVER-B, die Sie nicht sofort sehen können - die Karten sehen fast gleich aus und Sie können das Spiel "Finde 10 Unterschiede" spielen ...



Bild



Ich habe den Controller auf dem ESP32-WROOM, daher wird sich die weitere Beschreibung darauf beziehen.



Programmierer



LILYGO-Ingenieure sind so weit von ihren Benutzern entfernt, dass ihre Entscheidungen nicht immer leicht zu verstehen sind. Diese Lösungen umfassen die Erstellung einer separaten Programmierplatine auf dem CP2104-Chip für den T-Internet-POE-Controller.



Wozu? Warum benötigen Sie einen separaten Programmierer, wenn dieser Knoten auf der Controller-Karte selbst integriert werden kann oder einfach Standard-USB-TTL-Adapter verwendet (wie alle anderen Hardwarehersteller)? Die Antwort wissen anscheinend nur die LILYGO-Entwickler (aber verzeihen wir ihnen dieses kleine Motiv).



Bild



Aber die LILYGO-Entwickler haben nicht nur etwas Unverständliches getan, sondern es auch geschafft, es schief zu machen:



  • Erstens verwendeten sie Stifte, die von den Menschen mit einem Abstand von 2,0 mm geliebt wurden
  • Zweitens sahen sie die Installation des Steckers auf der Rückseite (!) der Platine vor


(Für Entwickler einer solchen Lösung würde ich empfehlen, manchmal von der Arbeit abgelenkt zu sein und sich Zeit zum Ausruhen zu nehmen.)



Das Ergebnis ist eine Art seltsames Monster. Und alles wäre in Ordnung, wenn das Problem nur auf die ästhetische Komponente beschränkt wäre, aber hier treten ernstere Probleme auf:



  • Wenn die Platine in ihrer normalen Position installiert und befestigt ist, befinden sich die Programmierstifte unten auf der Platine und es ist unmöglich, eine Verbindung zu ihnen herzustellen, ohne die Steuerung zu zerlegen.
  • Wenn Sie mit einer Platine ohne Befestigung arbeiten, bieten die Steckverbinder mit einem Abstand von 2,0 keine ausreichende Steifigkeit, und die gesamte Struktur droht jederzeit auseinanderzufallen und alles zu schließen.


Als Ausgleich für diesen Entwicklerstamm können wir empfehlen, eine Reihe von Stiften auf die Oberseite der Platine zu löten und einen flexiblen 6-poligen 2,0-mm-Adapter herzustellen (oder zu kaufen, falls verkauft).



Pinbelegung



Zunächst geben wir die Originalversion der Pinbelegung (so viel wie möglich kultiviert). Für diejenigen, die "Bescheid wissen", gibt es genügend Informationen, der Rest wird wenig von dieser "chinesischen Alphabetisierung" verstehen.



Bild



Lassen Sie uns versuchen, dies ins Russische zu übersetzen und allgemein herauszufinden, was dort mit der Pinbelegung von Elementen und der Zuweisung von Controller-Ressourcen passiert.



Insgesamt verfügt ESP32 über 40 Pins (D0 - D39), von denen 14 Pins



D6 - D11, D20, D24, D28 - D31, D37, D38



als praktisch unbenutzt von der Betrachtung ausgeschlossen sind (aus verschiedenen Gründen eine detaillierte Analyse des Zwecks) dieser Stifte würde den Rahmen dieses Artikels sprengen). Bleiben übrig:



Ethernet-Verbindungsstifte des LAN8720A-Chips



D18 - ETH_MDIO_PIN

D19 - ETH_TX_D0

D21 - ETH_TX_DE

D22 - ETH_TX_D1

D23 - ETH_MDC_PIN

D25 - ETH_RX_D0

D26 - ETH_RX_D1

D27 - ETH_RX_CRS



sind im LAN-Chip installiert D



Da der Hersteller gezögert hat, ein schematisches Diagramm des Controllers bereitzustellen, kann ich hier nur ein ähnliches typisches Ethernet-Physik-Verbindungsdiagramm für LAN8720A angeben.



Bild



Das LAN8720A verfügt außerdem über einen Clock-Pin, der mit D17 auf der T-Internet-POE-Karte verbunden ist (ebenfalls in der Skizze ausgewählt):



D17 - ETH_CLOCK



und Reset Pin



D5 - NRST



microSD-Kartenleser



Der microSD-Kartenleser ist an HSPI angeschlossen:



D2 - SD_MISO

D12 - SD_CS

D14 - SD_SCLK

D15 - SD_MOSI



und "nimmt" bei seiner Verwendung die Stifte D2, D14, D15 frei für externe Verbindungen und wird auf die Karte gebracht. Die Frage "Was ist rentabler - einen Kartenleser zu verwenden und 3 von 12 freien Pins zu verlieren oder 3 zusätzliche GPIOs zu behalten und den Kartenleser aufzugeben" ist vergleichbar mit der Frage "Was ist besser: ein Elefant oder ein Pferd?" und Sie müssen es jedes Mal beantworten, wenn Sie die T-Internet-POE-Karte verwenden.



Andere Stifte



Wir haben noch die Pins D0 (ETH_CLOCK, in dieser Funktion nicht verwendet) und D1 (TX0) und D3 (RX0).



Freie Stifte



Kommen wir nun zum interessantesten Teil - der Beschreibung der freien Pins, die auf die Controller-Karte gebracht wurden.



Die erste ist die Gruppe D34, D35, D36, D39, die nur am Eingang funktioniert. Besser für den Eingang als gar nichts, aber bei einem solchen GPIO-Defizit wäre es viel besser, wenn diese vier Pins vollwertige GPIOs wären.



Und dann 8 vollwertige GPIOs, die Sie in Ihren Projekten verwenden können. Hier müssen Sie bedenken, dass diese Pins zwar vollwertige GPIOs sind, einige jedoch auf sehr eigenartige Weise funktionieren (z. B. ändern sie das Potenzial zu Beginn des Controllers usw.). Bevor Sie etwas mit ihnen verbinden, müssen Sie diese Punkte daher speziell herausfinden und klären.



D2 (SD_MISO)

D4

D12

D14 (SD_SCLK)

D15 (SD_MOSI)

D16

D32

D33



Wie sie sagen, hier ist für Sie, mein junger Freund für Programmierung und Mikrocontroller, 8 GPIOs und verweigern Sie sich nichts.



POE



Hier müssen wir noch ein paar Worte zur POE-Unterstützung sagen, da dies einer der Vorteile dieses Boards und eines seiner "Chips" ist und für viele der Grund sein wird, warum sie es kaufen und verwenden wollen.



Es implementiert die vollständige Unterstützung des POE 802.3af-Standards mit Isolation und Energieverwaltung auf dem SI3404-Chip.



Ich bin nicht sehr an der Fernspeisung des Controllers interessiert, daher habe ich diesen Aspekt der T-Internet-POE-Leistung nicht getestet, aber anscheinend gibt es keine Probleme mit POE.



Software-Unterstützung



Wie Sie selbst verstehen, können Sie mit T-Internet-POE in jeder Softwareumgebung arbeiten, die mit dieser Hardware vertraut ist, einschließlich des nativen SDK (und dies ist wahrscheinlich die richtigste Option). Wir werden jedoch versuchen, herauszufinden, was gequetscht werden kann aus diesen Eisenstücken mit der Arduino IDE.



Als Softwareumgebung für Experimente verwendeten wir Arduino IDE Version 1.8.5 und ESP32-Arduino Version 1.0.5 (der neueste Build zum Zeitpunkt dieses Schreibens).



Ich werde nicht genau den Prozess der Installation der ESP32-Unterstützung in der Arduino IDE beschreiben, da eine große Menge von Materialien im Internet diesem Problem gewidmet ist und diesen Prozess in allen Nuancen beschreibt.



Ich werde hier nur einen Punkt erwähnen: Plus alles, was dieser Controller nicht hat, hat er noch keine native Unterstützung in der ESP32-Arduino Version 1.0.5. Daher wurde im Board Manager „ESP32 DEV Module“ als Controller mit den folgenden Einstellungen ausgewählt:



Flash-Modus: DIO-

Flash-Größe: 4 MB (32 MB)

Partitionsschema: 4 MB (1,2 MB / 1,5 MB)



Standardskizze



Unten finden Sie eine Skizze, die uns mit dem Plattenhersteller gefallen hat . Es gibt nichts Besonderes zu kommentieren, es initialisiert nur die Ethernet-Schnittstelle und sendet Anforderungen an den Server im Internet.



Vollständiger Skizzencode vom Plattenhersteller
/*
    This sketch shows how to configure different external or internal clock sources for the Ethernet PHY
*/

#include <ETH.h>
#include <SPI.h>
#include <SD.h>

#define SD_MISO         2
#define SD_MOSI         15
#define SD_SCLK         14
#define SD_CS           13
/*
   * ETH_CLOCK_GPIO0_IN   - default: external clock from crystal oscillator
   * ETH_CLOCK_GPIO0_OUT  - 50MHz clock from internal APLL output on GPIO0 - possibly an inverter is needed for LAN8720
   * ETH_CLOCK_GPIO16_OUT - 50MHz clock from internal APLL output on GPIO16 - possibly an inverter is needed for LAN8720
   * ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720
*/
// #define ETH_CLK_MODE    ETH_CLOCK_GPIO0_OUT          // Version with PSRAM
#define ETH_CLK_MODE    ETH_CLOCK_GPIO17_OUT            // Version with not PSRAM

// Pin# of the enable signal for the external crystal oscillator (-1 to disable for internal APLL source)
#define ETH_POWER_PIN   -1

// Type of the Ethernet PHY (LAN8720 or TLK110)
#define ETH_TYPE        ETH_PHY_LAN8720

// I²C-address of Ethernet PHY (0 or 1 for LAN8720, 31 for TLK110)
#define ETH_ADDR        0

// Pin# of the I²C clock signal for the Ethernet PHY
#define ETH_MDC_PIN     23

// Pin# of the I²C IO signal for the Ethernet PHY
#define ETH_MDIO_PIN    18

#define NRST            5
static bool eth_connected = false;

void WiFiEvent(WiFiEvent_t event)
{
    switch (event) {
    case SYSTEM_EVENT_ETH_START:
        Serial.println("ETH Started");
        //set eth hostname here
        ETH.setHostname("esp32-ethernet");
        break;
    case SYSTEM_EVENT_ETH_CONNECTED:
        Serial.println("ETH Connected");
        break;
    case SYSTEM_EVENT_ETH_GOT_IP:
        Serial.print("ETH MAC: ");
        Serial.print(ETH.macAddress());
        Serial.print(", IPv4: ");
        Serial.print(ETH.localIP());
        if (ETH.fullDuplex()) {
            Serial.print(", FULL_DUPLEX");
        }
        Serial.print(", ");
        Serial.print(ETH.linkSpeed());
        Serial.println("Mbps");
        eth_connected = true;
        break;
    case SYSTEM_EVENT_ETH_DISCONNECTED:
        Serial.println("ETH Disconnected");
        eth_connected = false;
        break;
    case SYSTEM_EVENT_ETH_STOP:
        Serial.println("ETH Stopped");
        eth_connected = false;
        break;
    default:
        break;
    }
}

void testClient(const char *host, uint16_t port)
{
    Serial.print("\nconnecting to ");
    Serial.println(host);

    WiFiClient client;
    if (!client.connect(host, port)) {
        Serial.println("connection failed");
        return;
    }
    client.printf("GET / HTTP/1.1\r\nHost: %s\r\n\r\n", host);
    while (client.connected() && !client.available());
    while (client.available()) {
        Serial.write(client.read());
    }

    Serial.println("closing connection\n");
    client.stop();
}

void setup()
{
    Serial.begin(115200);

    WiFi.onEvent(WiFiEvent);

    SPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS);
    if (!SD.begin(SD_CS)) {
        Serial.println("SDCard MOUNT FAIL");
    } else {
        uint32_t cardSize = SD.cardSize() / (1024 * 1024);
        String str = "SDCard Size: " + String(cardSize) + "MB";
        Serial.println(str);
    }

    pinMode(NRST, OUTPUT);
    digitalWrite(NRST, 0);
    delay(200);
    digitalWrite(NRST, 1);
    delay(200);
    digitalWrite(NRST, 0);
    delay(200);
    digitalWrite(NRST, 1);


    ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE);
}


void loop()
{
    if (eth_connected) {
        testClient("baidu.com", 80);
    }
    delay(10000);
}

      
      







Als ich diese Skizze zum ersten Mal sah, fragte ich mich: "Was wollte der Hersteller dazu sagen?" Der einzige Zweck dieser Skizze ist es zu zeigen, dass diese Technologie im Prinzip funktioniert. Das ist sicherlich gut, aber wie geht es weiter? Was tun mit all dem, ohne Dokumentation, Beispiele oder eine vernünftige Antwort des Herstellers zu haben?



Die Kampagne stellt sich heraus, dass die Antwort von LILYGO darin besteht, das Programmieren zu lernen und Software selbst zu erstellen (oder nach vorgefertigter Firmware zu suchen, obwohl dies kein Sport ist).



Schnittstellen und Ping



Für Netzwerkprofis (und diejenigen, die sich ihnen angeschlossen haben) möchte ich einige Worte über die Arbeitsgeschwindigkeit über Wi-Fi- und Ethernet-Schnittstellen und deren Reaktionsfähigkeit sagen. Die Tests wurden in einem unbelasteten Gigabit-Netzwerk durchgeführt, der Geräuschpegel der Wi-Fi-Reichweite wurde nicht speziell gesteuert.



Der erste Screenshot ist ein Ping des Controllers über die Wi-Fi-Schnittstelle. Minimum 24 ms, Maximum 105 ms, Durchschnitt 67 ms.



Bild



Die zweite Möglichkeit besteht darin, den Controller über die Ethernet-Schnittstelle zu pingen. Minimum 0 ms, Maximum 9 ms, Durchschnitt 2 ms.



Bild



Wie Sie sehen können, ist der Ping über kabelgebundenes Ethernet erheblich geringer als über WLAN (was erwartet wird). Ob diese Zahlen gut oder schlecht sind, überlasse ich den Lesern, selbst zu beurteilen, ich bin für meine Zwecke sehr zufrieden mit ihnen.



Testen



Es ist nicht ernst, ein System wie T-Internet-POE an Skizzen zu testen, die den vom Hersteller vorgeschlagenen ähnlich sind. Daher wurde zum Testen des Controllers eine spezielle Version von AMS verwendet, die speziell für diese Karte angepasst wurde. In Anbetracht der Tatsache, dass dies ein Server ist, der vollwertiges HTML, CSS, Javascript, Ajax, Grafikdateien und Bibliotheken verwendet, weist der erfolgreiche Betrieb eines solchen Servers auf T-Internet-POE auf eine ordnungsgemäß entworfene Hardware und die Möglichkeit seiner Verwendung in hin echte Projekte.



Hinweis: Die Tests wurden an einer internen, nicht öffentlichen Version von AMS für T-Internet-POE durchgeführt. Die Veröffentlichung und Verbreitung dieser Version ist nicht geplant, möglicherweise erfolgt sie später nach entsprechenden Verbesserungen.



Test 1. Führen Sie den AMS-Server auf T-Internet-POE aus



Das Starten von AMS auf einem neuen Controller mit einem neuen Chip und einer neuen Netzwerkschnittstelle ist keine triviale Aufgabe, aber mit dem richtigen Ansatz und Verständnis für Ihre Aktivitäten wird alles möglich.



Pfosten Nummer 1



Während dieser Arbeit tauchten die "Schwärme" des T-Internet-POE-Controllers auf, und als erstes stellte sich heraus, dass der Controller sich weigerte, zu blinken, wenn eine microSD-Speicherkarte eingesetzt wurde. Nichts hilft - weder das Ersetzen des USB-Anschlusses noch das Einschalten von einem separaten Gerät, noch das Drücken von Tasten oder das Ersetzen der Karte - der Controller weigert sich hartnäckig, mit einer eingelegten Speicherkarte zu blinken.



Es ist schwierig, einen Fehler einer bestimmten Instanz oder einen generischen Defekt aller T-Internet-POE-Controller (mit einer Instanz zur Verfügung) zu sagen. Wir können nur feststellen, dass das Problem zu 100% wiederholbar und reproduzierbar ist.



Was bedeutet das für uns? In der Praxis bedeutet dies, dass der T-Internet-POE-Controller tatsächlich keinen Kartenleser hat - ein Kartenleser, der die Firmware des Controllers blockiert, ist kein Kartenleser, sondern ein Fehler.



Was ist zu tun? Sie müssen lediglich die 1,5 MB SPIFFS verwenden, die auf dem ESP32-Modul verfügbar sind. Ja, das ist nicht sehr viel, aber im Prinzip sind 1,5 MB Speicher für ein IoT-Gerät in den meisten Fällen mehr oder weniger akzeptabel.



Pfosten Nummer 2



Ok, wir haben den Kartenleser aufgegeben, jetzt müssen wir uns mit SPIFFS anfreunden. Es scheint, dass die Aufgabe einfach und sogar vertraut ist, aber hier stehen wir vor einem Hinterhalt: Aus irgendeinem Grund weigert sich das Dienstprogramm ESP32FS, auf diesem Controller (in dieser Konfiguration) normal zu arbeiten. Das Verschieben von Dateien in den ESP32-Modulspeicher führt zu einem nachfolgenden Fehler beim Mounten der SPIFFS-Festplatte.



Hmmm ... Wenn es normalerweise nicht möglich ist, Dateien (Server) auf eine SPIFFS-Festplatte zu übertragen, gibt es nur einen Weg: Initialisierung der Schnittstelle über eine serielle Verbindung und anschließende Übertragung von Dateien auf eine SPIFFS-Festplatte über die Webschnittstelle. Die Methode ist natürlich nicht sehr praktisch, hat jedoch keinerlei Einfluss auf das Endergebnis - die Serverdateien wurden erfolgreich auf die SPIFFS-Festplatte übertragen.



Ich lasse die Beschreibung des Anpassungsprozesses des Codes für den neuen Controller weg, da dies das Kompilieren einer Anthologie wie einer vollständigen Sammlung von Werken von VILenin erfordern würde, und beginne sofort damit, die Tatsache des erfolgreichen Betriebs des AMS-Servers auf dem T zu demonstrieren -Internet-POE (und damit die Funktionsfähigkeit des T -Internet-POE).



Laden der Seite über die Wi-Fi-Schnittstelle.



Bild



Laden der Seite über die Ethernet-Schnittstelle.



Bild



Der Geschwindigkeitsgewinn beträgt natürlich etwa das Vierfache zugunsten von Ethernet. Hier müssen Sie auch berücksichtigen, dass es sich um nicht optimierten Code handelt und dass sich die Ergebnisse nach Durchführung der entsprechenden Arbeiten erheblich verbessern sollten.



Bild



Serverbetrieb über Ethernet-Schnittstelle am LILYGO TTGO T-Internet-POE ESP32 LAN8270A.



Test 2. Arbeiten an zwei Schnittstellen



Hier muss ich ein bisschen Mythenbrecherarbeit machen. Im Internet gibt es anhaltende Gerüchte, dass der gleichzeitige Betrieb von Wi-Fi und Ethernet auf einem Bündel von ESP32 und LAN8270A unmöglich ist. Dies ist nicht der Fall - der AMS-Server funktioniert hervorragend auf zwei Schnittstellen gleichzeitig und bedient Anforderungen über Wi-Fi und Ethernet perfekt. Es gibt keine Probleme mit dem Einfrieren oder Neustarten von ESP32.



Bild



Dies ist bereits ein interessantes Ergebnis, das verlockende Perspektiven eröffnet: Da wir über einen eigenen Server verfügen, können wir den Dienst der Schnittstellen auf beliebige Weise verwalten, beispielsweise über WLAN, um einige Websites mit einem Inhalt zu bedienen, und über Ethernet - andere Websites mit anderen Inhalten. Im übertragenen Sinne, um einer Großmutter über Ethernet eine Website mit kulinarischen Rezepten und über WLAN eine Website mit ausgewählten Artikeln von TSB an einen Enkel zu geben.



Test 3. Verbot einer der Schnittstellen



Versuchen wir nun, die Idee, verschiedene Schnittstellen vom Webserver zu bedienen, in die Praxis umzusetzen. Versuchen wir beispielsweise, einen Denial-of-Service für Verbindungen über eine der Schnittstellen (Ethernet) zu implementieren.



Bild



Ein Client, der über eine Ethernet-Schnittstelle mit unserem Controller verbunden ist, hat einen Denial-of-Service erhalten.



Schnittstellenredundanz



Die Idee der Schnittstellenreservierung ist an der Oberfläche und erfordert die Implementierung. Es gibt viele ähnliche Szenarien, z. B. haben Sie einen IoT-Controller, der über Ethernet mit einem lokalen Netzwerk verbunden ist. Im Notfall stellt der Controller automatisch eine Verbindung zum Backup-WLAN-Router her und setzt seine Arbeit fort, wenn die Kabelverbindung unterbrochen wird.



Netzwerkrouting



Mit zwei funktionierenden Netzwerkschnittstellen können Sie Pakete im Netzwerk nach Belieben weiterleiten. Niemand stört sich daran, dem Wi-Fi- und Ethernet-Routing-Schema Datenrouting über nRF24 oder LoRa oder über ein anderes drahtloses Netzwerk hinzuzufügen. Somit können Sie jeden Router für Ihr IoT-System erstellen.



Nun, und wie oben erwähnt, gibt es viele weitere interessante Anwendungsfälle für einen Controller mit zwei Netzwerkschnittstellen.



Ergebnisse



Lassen Sie uns nun diese kleine Forschung zusammenfassen: Trotz einiger Pfosten und Kinderkrankheiten mochte ich im Allgemeinen den LILYGO TTGO T-Internet-POE ESP32 LAN8270A-Controller - er ist ein hervorragendes Werkzeug zum Erstellen von IoT-Systemen, insbesondere wenn Sie über die entsprechenden Qualifikationen verfügen und dies nicht tun ohne Vorstellungskraft und kreative Herangehensweise an Ihre Arbeit.



Vor- und Nachteile von LILYGO TTGO T-Internet-POE ESP32 LAN8270A.



Vorteile:

  • Es klappt!
  • Komplette integrierte Wi-Fi + Ethernet + POE + GPIO-Lösung
  • Gute Arbeit ohne Einfrieren und Neustarten (beim Testen wurden keine Probleme festgestellt)
  • Möglichkeit der gleichzeitigen Arbeit an zwei Schnittstellen


Minuspunkte:

  • Völliger Mangel an Dokumentation, Beispielen und Erklärungen
  • Relativ hohe Einstiegsschwelle
  • Kinderkrankheiten und kleinere Schwärme bei der Umsetzung



All Articles