Board Support Package esp32 modifizieren - wie?

Ich benutze das KC868-A8 board. Es ist als NodeMCU-32S Teil des esp32 Board Support Packages von Espressif.

Um den I2C nutzen zu können (für Relais und Digital Input) muss folgendes geändert werden:

There is one more small but important point here: in the basic version of the NodeMCU-32S I2C board, the interface is tied to pins 21 and 22, and in our Kincony KC868-A8 controller these are pins 4 and 5. Accordingly, in the file
\hardware\espressif\esp32\variants\nodemcu-32s\pins_arduino.h
need to change the old definition
static const uint8_t SDA = 21;
static const uint8_t SCL = 22;
to match our KC868-A8
static const uint8_t SDA = 4;
static const uint8_t SCL = 5;
otherwise, neither the relay nor the digital inputs of the controller will work.

Auf GitHub habe ich das Header File pins_arduino.h gefunden.
Nur - wie kann ich die Änderung meiner Arduino Entwicklungsumgebung 'beibringen'?
(IDE 2.3.2)
Wo sind diese Hardware Libraries auf meinem Windows System zu finden?
... und wie kann ich sie so ändern, dass die IDE die Änderung erkennt?
Dank und Gruß
Matthias

C:\Users\ dein Namen \AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\variants\nodemcu-32s


öffnen, ändern abspeichern, IDE normal starten, ich habe wie man sieht die 2.0.9 Core Version

Eine Sicherung pins_arduino.h.ori kann sich später als nützlich erweisen :wink:

1 Like

Notfalls kann man in der Not den neu einspielen.

Ich halte das für den falschen Weg!
Die Dateien sollte man nur ändern, wenn sie kaputt sind.

Besser:
Beim Wire.begin(SDA,SLC) mitgeben.

1 Like

Wow vielen Dank für die prompte Antwort!
Und geholfen hat es auch!

Eine Sicherung pins_arduino.h.ori kann sich später als nützlich erweisen :wink:
Na klar - erst eine Kopie machen und dann das original ändern!

Der Nachteil diese Lösung ist allerdings, dass beim Upgrade der IDE oder des BSP für den ESP32 die Änderung 'futsch' ist und !!man daran denken muss!! diese wieder nachzuimplementieren.
Besser ist es eine Lösung im code zu implementieren.
der Ansatz:

Besser:
Beim Wire.begin(SDA,SLC) mitgeben.
geht leider nicht.

Ich füge hier das Beispielprogramm hinzu:

/*

Kincony KC868-A8

Relays example

*/

#include <Arduino.h>

#include <PCF8574.h>

#define I2C_RELAYS_ADR 0x24

#define I2C_SDA 4

#define I2C_SLC 5

PCF8574 pcf(I2C_RELAYS_ADR);

void setup() {

Serial.begin(115200);

Serial.println("Start Kincony KC868-A8 Relays example…");

pcf.pinMode(P0, OUTPUT);

pcf.pinMode(P1, OUTPUT);

pcf.pinMode(P2, OUTPUT);

pcf.pinMode(P3, OUTPUT);

pcf.pinMode(P4, OUTPUT);

pcf.pinMode(P5, OUTPUT);

pcf.pinMode(P6, OUTPUT);

pcf.pinMode(P7, OUTPUT);

Serial.print("Init PCF8574… ");

if (pcf.begin()){Serial.println("Ok");}

/*

* so geht es nicht!

* PCF8574 kennt nicht die methode begin (SDA,SLC))

* if (pcf.begin(I2C_SDA,I2C_SLC)){Serial.println("Ok");}

*/

else {Serial.println("Error");}

}

void loop() {

pcf.digitalWrite(P0, HIGH);

Serial.print("Relay #"); Serial.print(P0); Serial.println(" ON");

delay(50000);

pcf.digitalWrite(P0, LOW);

Serial.print("Relay #"); Serial.print(P0); Serial.println(" OFF");

delay(50000);

}

Doch! Ich sehe kein Wire.begin() bei dir.
Exakt das habe ich gestern mit einem ESP32-C3 und einem LCD durchgezogen!

Und das hat beim ersten mal geklappt.
Obwohl die C3 als I2C Verweigerer bekannt sind.

Ich halte Libs, die selber ein Wire.begin() im Bauch haben für falsch programmiert!
Eben weil sie jede Einstellung die man vornimmt wieder rückgängig machen.

Also nochmal mein Vorschlag:

  1. Wire.begin() mit den Pinangaben in setup()
  2. Wire.begin() aus der Lib entfernen
  3. glücklich werden.

Ich habe die Änderung im Headerfile rückgängig gemacht.
(Hatte ja eine Kopie :wink:)
Dann:

Wire.begin() mit den Pinangaben in setup()

Eingefügt und geht!

Wire.begin() aus der Lib entfernen

Habe ich nicht verstanden - aber das Ergebnis zählt!
Soweit vielen Dank!

p.s.
Hat jemand einen Tipp wie man die IDE beim übersetzen beschleunigen kann?
Die CPU Belastung liegt bei 3% - was steht denn da 'auf der Bremse'?

RAM, und Laufwerk(Festplatte) , es werden nur kleine Dateien verarbeitet.
Wen noch eine HD im Rechner ist dann gegen SSD tauschen, wo bei, bei SATA 2 steigt die Geschwindigkeit nicht so Rasant, jedoch wen man Windows Nutzt ist der schneller benutzbar "Oben" wie mansche sagen.
Im Allgemeinem lasen sich Compiler zeit gerade der vom ESP, hat ja viel Kleinkram zu übersetzen, überprüfen, bis der an die Lib kommt.