Kann ich auch das Heltec "WiFi Kit 32" in der neuen Version V3 verwenden?

Danke @Beegood_2000, dass du auch dabei bis und herzlich Willkommen bei hiveeyes!

Display pins

Die erste Änderung, die wir machen müssen sind die pins des OLEDs, bisher steht im code

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);

Leider hat es Heltec nicht mal geschafft die neuen / geänderten pins des Displays einfach zugänglich auf die pinout-Grafik (s.o.) zu schreiben. :-( Einzig der reset-Pin hat es als ausgeführten Pin geschafft, er ist mit OLED_RST / GPIO21 vermerkt, die anderen SCL (clock) und SDA (data) sucht man vergebens und sie sind in der neuen Version V3 auch nicht mehr ausgeführ. Hier hilft ein Blick in die pin definition file (oder in @Beegood_2000’s posting oben :-). Hat man die Heltec-Boards in der Arduino-IDE installiert findet man unter C:\Users\[your-user-name]\AppData\Local\Arduino15\packages\Heltec-esp32\hardware\esp32\0.0.7\variants\wifi_kit_32_V3 die Datei pins_arduino.h u.a. mit diesen Angaben:

static const uint8_t Vext = 36;
static const uint8_t LED  = 35;
static const uint8_t RST_OLED = 21;
static const uint8_t SCL_OLED = 18;
static const uint8_t SDA_OLED = 17;

Damit können wir unseren U8g2-Code für das OLED wie folgt updaten:

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 18, /* data=*/ 17, /* reset=*/ 21);

Welchen code hast du denn verwendet? Ich habe gerade Probleme mit dem Arduino ESP32 Core 2.0.x, wundert micht, dass der code bei dir compiliert hat.

hani-mandl-master.zip von GitHub - ClemensGruber/hani-mandl: HaniMandl ist ein halbautomatischer Honig-Abfüll-Roboter.
Sprich müsste deine neueste Version sein…0.2.9 . Im Boardmanager gab es eine Version (WiFi32 V3). Allerdings nur bei Windows. Auf meinem Linux Computer komme ich da nicht dran… Version bei Windows IDE 2.0.3
Ich habe mich durch diese Diagramm gehangelt: https://resource.heltec.cn/download/WiFi_Kit_32_V3/HTIT-WB32_V3_Schematic_Diagram.pdf Ganz eindeutig finde ich es als Laie nicht, aber im Bild Mitte Unten glaube ich die GPIOs zu erkennen.

Die die Pinout Darstellung ist - wie Clemens bereits schreibt - etwas verkürzt. Die Heltec Versionen V3 und V2 haben zwar das gleiche Pin-Layout, d.h. die Position der Pin-Durchführungen hat sich nicht geändert, jedoch wurde der Chipsatz verändert, was dazu führt, dass die einzelnen GPIOs unterschiedlich belegt sind. Ich orientiere mich daher lieber an der schematischen Darstellung.

1 Like

Aber Hallo, das Bild hast du doch mit Photoshop gemacht, oder? :wink:
Im Ernst, mir ist der Unterschied zu meinen Versuchen nicht klar. Du benutz doch die gleiche Code Version und die Bibliothek von Oliver, oder?

Hallo Kasimir, ich benutze den Sketch Abfuellwaage Version 0.1.3

Hallo Beegood, leider klappt es auch mit der Version nicht. Gibt es einen Grund warum du keine Neuere nimmst?
Jetzt fällt mir nur noch die Frage ein, ob du die Arduiono IDE verwendest und wenn ja, auch hier die Frage nach der Version. Danke!

1 Like

Wer ist Oliver? / Welcher Oliver. :-)

Das ist die offiziell von Heltec verlinkte Schematik. Etwas verwirrend finde ich hier, dass es LoRa-pins gibt, obwohl das board kein LoRa-Modul hat und es in der Vergangenheit auch Verwechslungen zu Board aus der Serie mit LoRa gab.

Ich meinte, ob du die gleiche Bibliothek für das Display nimmst.
olikraus · GitHub)/u8g2
Beim Code hatte ich mich bisher mit der Version Abfuellwaage Version 0.2.9 versucht.
Als Plattform benutze ich Arduino IDE 2.0.3

1 Like

Bei mir compiliert (mit Warnungen, läuft aber durch) der aktuelle code auf master (v0.2.9) nur mit dem Arduino ESP32 core 1.0.6, mit dem 2.x-er core nicht.

Nun habe ich versucht den Heltec V3 als ESP32 Dev Module anzusprechen, das geht aber nicht, Hochladen wird quittiert mit:

A fatal error occurred: Invalid head of packet (0x47)

Wenn ich den Heltec V3 als board auswähle (board installieren, falls es bei euch nicht auftauch), bringt der seinen eigenen ESP core mit (vermutlich >2) und ich habe Compilierungsfehler.

D.h. ich werde jetzt erst mal versuchen den aktuellen code oder besser gleich den im develop-Branch (v0.2.12) etwas upzudaten und den mit ESP core 2.x lauffähig zu bekommen … stay tuned!

[edit] Ich habs mir es jetzt erst mal etwas einfacher gemacht und die compiling errors auf Standard gesetzt, war von einer früheren debug session noch auf Weitere.

Nun compiliert der code mit Wifi Kit 32(V3) als board und lädt den code auch hoch, allerdings bleibt – wie oben berichtet – das Display dunkel.

Wir haben im code für die alte Version (V1 / V2) pins verwendet, die momentan (V3) komplett anders belegt sein können, daher müssen wir an die weiteren Pins ran:

Nun habe ich so gut wie alle pins neu zugeordnet – ich habe das erst einmal vorläufig gemacht, muss nochmal checken, ob die so passen – und es läuft eigentlich ganz passabel (Servo habe ich noch nicht angeschlossen):

Zwischenfazit: Die neue Verison V3 des “WiFi Kit 32” von Heltec funktioniert generell als HaniMandl-Basis, allerdings müssen der code und die physikalischen Anschlüsse geändert werden.

1 Like

Welche GPIOs nehmen wir jetzt?

Neben real world testing :-) habe ich bisher bei der Zuordnung von ESP32-pins zu Hardware immer einen Blick auf

geworfen. Dort ist gut dokumentiert, welche pins z.B. beim booten toggeln und so schon einmal eine Servo unintendiert ansteuern oder welche pins anderweitig belegt sind oder nur inputs sind … Die Doku ist allerdings für einen ESP-WROOM-32 o.ä. jedenfalls wird dort z.B. GPIO 34, 35, 36, 39 als INPUT ONLY gekennzeichnet, was bei unserem board nicht sein kann, da die onboard LED (s. pinout-Grafik oben) an GPIO 35 hängt.

Laut WiFi Kit 32 (V3) – Heltec Automation > [weiter unten auf tab datasheet klicken] > [scrollen zu Tabelle 1.1] ist bei unserem neuen board ein ESP32 S3 verbaut, während die V2 einen ESP32-D0 hatte.

Also RTFM für den S3, https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf ab Seite 18 und auch GPIO & RTC GPIO - ESP32-S3 - — ESP-IDF Programming Guide latest documentation … tbd

GPIOs für V2 vs. V3

Heltec V2 Heltec V3 Anmerkung
// Rotary Encoder
const int outputA 33 47
const int outputB 26 48
const int outputSW 32 26
// Servo
const int servo_pin 2 33
// 3x Schalter
const int switch_betrieb_pin 23 40
const int switch_vcc_pin 19 41 // <- Vcc
const int switch_setup_pin 22 42
// Vext controll
const int vext_ctrl_pin 21 36 // Vext control pin
// Taster
const int button_start_vcc_pin 13 7 // <- Vcc
const int button_start_pin 12 6
const int button_stop_vcc_pin 14 5 // <- Vcc
const int button_stop_pin 27 4
// Wägezelle-IC
const int hx711_sck_pin 17 38
const int hx711_dt_pin 5 39
// Buzzer - aktiver Piezo
static int buzzer_pin 25 2

wiring-Diagramme für den Heltec, Version 3

Externe 5V-Stromquelle

1 Like

Da ich dazu leider etwas unwissend bin, wie bekomme ich denn mein Heltec ESP 32 V3 zum laufen? Ich habe null Ahnung von Programmieren. Gibt es da evtl ein fertiges Programm fürs Arduino?

Hi Marci, bisher leider noch gar nicht! Wir sind gerade dabei den code bzw. die zu verwendenden pins auszutüfteln, ich denke in ein paar Tagen sollten wir etwas weiter sein und du kannst dann nachbauen.

Hallo Kasimir,

Die genaue Referenz auf die verwendete U8g2 Bibliothek findet sich hier:

Viele Grüße,
Andreas.

Es funktioniert auch mit der aktuellen U8g2-Version!

1 Like

Das kann ich bestätigen, zumindest auf meiner Maschine.

Workstation

Gegenprobe

Kurioserweise kompiliert die v2 Variante aber in einer anderen Umgebung, und die v1 schlägt fehl, also genau andersherum?

Environment                 Status    Duration
--------------------------  --------  ------------
heltec-arduino-esp32-1.0.6  FAILED    00:00:59.186
heltec-arduino-esp32-2.0.6  SUCCESS   00:01:04.815

CI: Add support for "Arduino core for the ESP32" version 2.0.6 · ClemensGruber/hani-mandl@1c7043a · GitHub

Vielen lieben Dank Clemens. Ich gedulde mich dann noch.

2 Likes

Heureka! Jetzt sehe sogar ich nicht mehr schwarz! (Arduino IDE, ESP32S3 Dev Modul) Der Code 0.2.9 wird kompiliert (nur Warnungen, keine Fehler) und hochgeladen. Das Display zeigt an, was es soll.
Danke für eure Geduld und Energie!

1 Like

Im ersten Versuch hat der Heltec V3 mit unserem modifizierten code (pin Zuordnung, s.o.) funktioniert, allerdings ist die Reaktionszeit von Display / Waage und auch Eingabe über rotary / Buttons deutlich träger, zäher als mit einem Heltec V2, die ich gerade parallel mit identischem code (0.2. 8 9) getestet habe. Allerdings ist der Heltec V2 schon etwas länger bespielt worden, kann sein, dass da ein anderer Arduino ESP32 core verwendet wurde. Ist in einem Gehäuse festgeklebt, daher komme ich zum Umprogrammieren nicht leicht ran. Den V3 mit einem core < 2.x zu testen geht aber nicht, da es da den ESP S3 noch nicht gab. Also weiter schauen, hatte mir das etwas einfacher vorgestellt.

Hallo Clemens, da möchte ich doch gleich mal eine Rückmeldung geben. Im Prinzip scheint es bei mir mit dem Code 0.2.8 zu funktionieren! Super!
Wenn ich allerdings versuche den Öffnungswinkel im Automatikmodus kleiner zu stellen, stürzt das Programm bei unter 41% ab und bootet neu. Kann allerdings auch an meinen fliegenden Verkabelungen liegen, oder es ist ein Bedienfehler meinerseits. Morgen werde ich das Ganze mal in ein Gehäuse einbauen und mich erneut versuchen.