Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Routeur connecté ethernet (version non officielle W5500)
#41
(11-01-2025, 06:24 PM)michy a écrit : => voir pour traiter le cas ou l'on à pas réussit a obtenir d'IP avec un module Ethernet détecté, (câble débranché ...), [ça démarre en wifi AP après un gros délai]

Bonjour,

J'ai baissé le timeout à 5 secondes.

J'ai actualisé la 1ère page avec les nouveaux diagrammes. Les sources sont à jour et j'ai ajouté les binaires.

André, est-il possible d'inclure le code dans la v14 ? C'est transparent pour ceux qui utilisent le wifi. Il suffit de chercher Rj45 pour retrouver les ajouts / modifs (Solar_Router_V13_03_ethernet.ino, Server.ino, MQTT.ino)

Merci.
Répondre
#42
C'est dans la liste des évolutions.
Patience...Tout cela prend beaucoup de temps.
André
Répondre
#43
Bonjour,

Voici les changements à apporter à la V14.11 pour pouvoir supporter les modules W5500

ligne 456:
Code :
// ajouts W5500
#define RJ45_CS  21  // SPI gpio pin number or (Default is SS    5 for ESP32)  
#define SCK_PIN  15  // SPI gpio pin number or (Default is SCK  18 for ESP32)
#define MOSI_PIN 12  // SPI gpio pin number or (Default is MOSI 23 for ESP32)
#define MISO_PIN 39  // SPI gpio pin number or (Default is MISO 19 for ESP32)
#define DHCP_TIMEOUT 5000
// fin ajouts W5500

W5500Driver driver(RJ45_CS);
//EMACDriver driver(ETH_PHY_LAN8720, 23, 18, 16);

ligne 723
Code :
  if (ESP32_Type == 10) {
    Serial.println("Lancement de la liaison Ethernet");  //Ethernet (avant Horloge)
    SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN, RJ45_CS);  // affect gpio used by SPI3 device
    Ethernet.init(driver);
    WiFi.begin("dummy");
    byte mac[6];
    WiFi.macAddress(mac);
    mac[0] = 0xDE;
    mac[1] = 0xAD;
    mac[2] = 0xBE;   
    Serial.printf("Adresse mac ethernet: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    Ethernet.setHostname((const char *)hostname.c_str());
    //Ethernet.hostname(hostname);
    if (dhcpOn == 0) {  //Static IP
                        //optional
                        //Adresse IP eventuelles
                        //optional
      Ethernet.begin(mac, local_IP, primaryDNS, gateway, subnet);
      delay(100);
      Ethernet.begin(mac, local_IP, primaryDNS, gateway, subnet); //On s'y prend 2 fois. Parfois ne reussi pas au premier coup
      delay(100);
      StockMessage("Adresse IP Ethernet fixe : : " + Ethernet.localIP().toString());
    } else {
      Serial.println("Initialisation Ethernet par DHCP:");
      if (Ethernet.begin(mac, DHCP_TIMEOUT)) {
        StockMessage("Adresse IP Ethernet assignée par DHCP : " + Ethernet.localIP().toString());
      } else {
        Serial.println("Failed to configure Ethernet using DHCP");
        delay(1);
      }
    }

Attention toutefois, avec le code que j'avais proposé le routeur passait en mode wifi si le module ethernet n'était pas détecté ou le câble réseau n'était pas connecté. Ce n'est pas le cas avec le code d'André: soit vous avez une configuration ethernet exclusive, soit vous avez une configuration wifi exclusive.
Répondre
#44
Bonsoir, en v14.11 je ne comprends pas l'erreur de compilation. Si quelqu'un a une idée ! PB de déclaration ?? Merci pour votre aide

D:\Arduino_Jean\v14_11\Solar_Router_V14_11\Solar_Router_V14_11.ino:462:8: error: conflicting declaration 'int8_t RXD2'
  462 | int8_t RXD2 = -1, TXD2 = -1;  //Port serie
      |        ^~~~
In file included from C:\Users\tallo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-gpio.h:29,
                from C:\Users\tallo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal.h:75,
                from C:\Users\tallo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Arduino.h:36,
                from C:\Users\tallo\AppData\Local\arduino\sketches\3F92CAD8EA7412E4F9E09ED87DD8133B\sketch\Solar_Router_V14_11.ino.cpp:1:
C:\Users\tallo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\variants\wt32-eth01/pins_arduino.h:43:22: note: previous declaration as 'const uint8_t RXD2'
  43 | static const uint8_t RXD2 = 5, RXD = 5;
      |                      ^~~~
D:\Arduino_Jean\v14_11\Solar_Router_V14_11\Solar_Router_V14_11.ino:462:19: error: conflicting declaration 'int8_t TXD2'
  462 | int8_t RXD2 = -1, TXD2 = -1;  //Port serie
      |                  ^~~~
C:\Users\tallo\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\variants\wt32-eth01/pins_arduino.h:42:22: note: previous declaration as 'const uint8_t TXD2'
  42 | static const uint8_t TXD2 = 17, TXD = 17;
      |                      ^~~~
D:\Arduino_Jean\v14_11\Solar_Router_V14_11\Solar_Router_V14_11.ino: In function 'void InitGPIOs()':
D:\Arduino_Jean\v14_11\Solar_Router_V14_11\Solar_Router_V14_11.ino:1314:10: error: assignment of read-only variable 'RXD2'
1314 |    RXD2 = RX2_[pSerial];              //Port serie
      |    ~~~~~^~~~~~~~~~~~~~~
D:\Arduino_Jean\v14_11\Solar_Router_V14_11\Solar_Router_V14_11.ino:1315:10: error: assignment of read-only variable 'TXD2'
1315 |    TXD2 = TX2_[pSerial];
Répondre
#45
Bonjour,

Ça te le fait uniquement quand tu utilises mon code ? Avec le code initial pas de problème ?
Si ça te le fait également avec le code initial, merci de poster dans "Routeur Photovoltaïque" et pas dans ce sujet ni cette rubrique réservée aux évolutions.
Répondre
#46
Désolé pour la mauvaise place, je vais poster dans la bonne rubrique. Sinon oui avec le code original
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)