HaniMandl: ESP32 Dev Kit statt Heltec Wifi Kit 32

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

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.

1 Like