Hintergrund
- Heltec manchmal schwierig verfügbar bzw. werden verschiedene Versionen und Kopien verkauft.
- wenn man ein großes OLED verwenden möchte braucht man das onboard-OLED des Heltec auch nicht.
Verwendetes Board: AZDelivery ESP32 Dev Kit C V4 NodeMCU
- Quelle: https://www.az-delivery.de/en/products/esp-32-dev-kit-c-v4?_pos=2&_sid=7bc9bf3fb&_ss=r
- pinout: https://cdn.shopify.com/s/files/1/1509/1638/files/ESP_-_32_NodeMCU_Developmentboard_Pinout_Diagram.jpg?4479111012146266271
- Fritzing-Part
– Fritzing Part of an ESP32 - parts help - fritzing forum
– FZPZ-Datei direkt: https://forum.fritzing.org/uploads/default/original/2X/8/8d99adbb2e8f966178bdb46f5cffa7bd72ce2c2a.fzpz
Plan
- Display-Bus von I2C auf SPI ändern
- ansonsten Hardware-Pins möglichst wie beim Heltec verwenden, damit am code nicht zu viel geändert werden muss
Empfehlungen Pins beim ESP32: ESP32 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials
OLED pin connection: SSD1306 based OLED connected to Arduino · jandelgado/arduino Wiki · GitHub
SPI statt I2C fürs OLED
Diese Anschüsse habe ich für das 2.42" OLED von DiyMore verwendet, das default SPI spricht, für I2C müssten zwei, drei Widerstände / Brücken umgelötet werden, s. Großes OLED-Display am HaniMandl anschließen
Test-wirings
ESP32 SPI
OLED H V HaniMandl
------------------------------
CS 15 5 15
DC 26 26 21
RES 27 27 16
SDA 13 23 4
SCL 14 18 18
VCC 3.3V
GND GND
Die ersten beiden Spalten sind pin-Zuordnungen, die ich mit der U8g2 getestet habe und die funktionierten, mit der Verwendung von SW_SPI in der Lib ist man anscheinend flexibel in der Pinauswahl. Mit Hardware-SPI wäre das anders, da wird in der lib SDA und SCL (clock / data) nicht mehr als Parameter verwendet und man muss die default-Pins von V-SPI nehmen!
Bisher verwendete pins beim Heltec mit dem aktuellen HaniMandl-Code:
// Rotary Encoder
outputA = 33
outputB = 26
outputSW = 32
// Servo
servo_pin = 2
// 3-fach Schalter (HARDWARE_LEVEL == 2)
switch_betrieb_pin = 23
switch_vcc_pin = 19 // <- Vcc
switch_setup_pin = 22
vext_ctrl_pin = 21 // Vext control pin Heltec V2
// Taster
button_start_vcc_pin = 13 // <- Vcc
button_start_pin = 12
button_stop_vcc_pin = 14 // <- Vcc
button_stop_pin = 27
// HX711
hx711_sck_pin = 17
hx711_dt_pin = 5
// Buzzer und LED
buzzer_pin = 25
// OLED
clock = 15
data = 4
reset = 16
Finales Ergebnis fürs SPI-OLED
Das könnte funktionieren:
// HaniMandl
// ggf. pin 16 noch tauschen, da beim WROVER der fürs externe SPI RAM verwendet wird
U8G2_SSD1309_128X64_NONAME0_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18, /* data=*/ 4, /* cs=*/ 15, /* dc=*/ 21, /* reset=*/ 16);
Schaut etwas unübersichtlich aus, Ziel bei der Verdrahtung war aber die ursprünglich vom Heltec genutzten pins auch hier zu verwenden, um am code möglichst wenig ändern zu müssen.