Großes OLED-Display am HaniMandl anschließen

Der Bienen-Bastler hat hier demonstriert wie man ein großes OLED-Display (parallel zum kleinen auf dem Heltec-OLED) anschließen kann:

Etwas mehr Details gibt es auf dem Kanal DIY in der Imkerei:

Und in der zum Video gehörenden Datei https://raw.githubusercontent.com/Freddy3108/HaniMandl-3.0/main/HARDWARE/Displaymodifikation.pdf

Hintergrund für die Modifikationen: Umstellen auf I2C

Das verwendete 2.42-Zoll-OLED unterstütz zwar SPI und I2C als Schnittstelle standardmäßig ist es aber auf SPI eingestellt. Da die HaniMandl-Software / der Heltec das Display per I2C anspricht, müssen die Widerstände so umgelötet werden, dass SPI de- und I2C aktiviert wird. Ggf. muss noch die I2C-Adresse angepasst werden.

Für das Display oben bedeutet das:

  • R4 (4,7 kΩ) entlöten
  • den bisher unbesetzten R3 mit einem 4,7 kΩ-Widerstand besetzen oder eine Brücke löten
  • den bisher unbesetzten R5 mit einem Tropfen Lötzinn überbrücken
  • den bisher unbesetzten R7 mit einem 4,7 kΩ-Widerstand besetzen (der von R4 wenn der das Entlöten überstanden hat :-)

2021-01-22 11_26_35-2021-01-22 11_25_20-61oB6K57ccL.AC_SL1000.jpg (JPEG-Grafik, 986 × 547 Pixel)2 -

Die notwendigen Modifikationen werden auch auf dem silk screen des displays angedeutet, jedenfalls stehen da die betroffenen Widerstände (ohne Wert-Angaben). Daher vermute ich, dass R7 die I2C-Adresse anpasst (falls das so ist, könnte das auch per Software geändert werden wenn man nur ein externes OLED betreiben möchte und nicht das auf dem Heltec parallel zum großen).

Verwendetes Display

Das in den Videos verwendete Display ist ein DollaTek 2.42-Zoll-128X64-OLED

  • Größe: 2.42 Zoll
  • Auflösung: 128 x 64 px
  • IC: SSD1309

Man kann auch andere OLEDs dafür verwenden. Wichtig ist, dass das größere OLED ebenfalls 128 x 64 px wie das kleine auf dem Heltec hat. Falls nicht, muss man ggf. kräftig am code schrauben!

Weitere Infos

unter SPI/I2C OLED display - Hardware - Axoloti Community

Source code

Probleme

Beim Heltec ist ein OLED des Typs SSD1306 verbaut, hier wird ein OLED mit einem SSD1309 IC verwendet, ggf. rühren hier auch die im zweiten Vdieo beschriebenen reset-Probleme.

Test wäre hier den HaniMandl-Code entsprechend zu ändern und zu schauen, ob es mit der Änderung besser wird, s. U8G2-Parameter für Heltec-OLED

A post was merged into an existing topic: HaniMandl im (Bewegt-)Bild

Die initiale Motivation in den Videos vom Bienen-Bastler und DIY in der Imkerei war vermutlich die eigentliche Hardware, d.h. das Heltec-Board und ursprüngliche HaniMandl-Software ohne Modifikationen weiter zu verwenden.

Ein paralleler Betrieb am Heltec Wifi Kit32 von zwei Displays ist auch nur mit der Umstellung des zweiten OLEDs auf I2C möglich. Zwei Displays sind als proof of concept mal ganz nett, im praktischen Betrieb allerdings unnötig,

Alle großen OLED-Displays die ich in den letzten Tagen recherchiert haben werden default per SPI angesprochen. Vermutlich ist es für viele einfacher den Software-Bus im HaniMandl-Code von I2C auf SPI umzustellen als SMD-Teile umzulöten?

Im aktuellen Code wird das Display über

// OLED fuer Heltec WiFi Kit 32 (ESP32 onboard OLED)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 15, /* data=*/ 4, /* reset=*/ 16);

initialisiert, die U8g2-lib kann aber auch SPI, siehe das Setup-Tutorial und die constructor reference-Doku:

Weil wir gerade dabei sind, können wir gleich das IC von SSD1306 auf SSD1309 umstellen: u8g2setupcpp · olikraus/u8g2 Wiki · GitHub

Bei mir funktioniert z.B. V-SPI mit

U8G2_SSD1309_128X64_NONAME0_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 26, /* reset=*/ 27);

Am H-SPI hat nur Soft-SPI funktioniert:

U8G2_SSD1309_128X64_NONAME0_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 14, /* data=*/ 13, /* cs=*/ 15, /* dc=*/ 26, /* reset=*/ 27);

Im Konstruktor geht auch SSD1306 statt SSD1309, beim kurzen Test bisher sind mir noch keine Unterschiede aufgefalen.

Jetzt noch checken, ob wir überhaupt noch die notwendigen pins übrig haben, SPI braucht ein paar mehr as I2C – ok passt! … und, ob die oben verwendeten sich mit denen in der HaniMandl-Software beißen. Dann suchen wir uns mal freie raus:

U8G2_SSD1309_128X64_NONAME0_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18, /* data=*/ 4, /* cs=*/ 15, /* dc=*/ 21, /* reset=*/ 16);

Hallo Clemens,
je nachdem wo du das Display her hast kommen die von mir beschriebenen Problem im Video.
lässt sich aber über eine Masseleitung angebracht an einem der 4 großen Lötpad an denen das eigentliche Display angebracht ist lösen.
In dem zweiten Video https://youtu.be/wCSN43YhlPM beschreibe ich wie man das Programm auf einem ESP32 WROOM ohne kleines Display zum laufen bekommt. Alles ist in dem PDF beschrieben bzw. sind die Schaltpläne hinterlegt. In der Software ist dann ein Hardwarelevel 3 hinterlegt der für den recht günstigen ESP32 WROOM angelegt wurde. In dem Github Ordner GitHub - Freddy3108/HaniMandl-3.0: HaniMandl mit großem Display am HELTEC Modul oder HaniMandl auf dem ESP32WROOM32 mit großem Display mit allen STL Files für die Gehäuse, Servohalter, Waage
findet man auch STL Datein für diverse Gehäuse für den HaniMandl und die Waage.
Der Bienen Bastler hatte wohl das Glück ein nicht soooo günstiges Display zu erwischen :slight_smile:
Habe nun schon 4 Teile Aufgebaut mit den recht günstigen ESP’s und den günstigen Display’s und alle laufen ohne große Probleme.

Grüße
Freddy

1 Like

@Freddy3108 du sprichst das Display in deinem angepassten code auch per I2C an und musst dafür die Widerstände auf dem OLED umlöten oder hast du ein OLED gefunden, das ohne Umlöten per I2C läuft?

Daher dachte ich wir sparen uns die Umlöterei und verwenden im code gleich SPI statt I2C. :-)

Hardware habe ich da, ich teste nachher mal welche Parameter für ein unmodifiziertes OLED funktionieren, jetzt erstmal Raubtierfütterung, die kids meckern gerade schon. :-)

Support für andere Boards als den Heltec haben @Andreas und Sascha schon angefangen: Multiboard support by amotl · Pull Request #21 · ClemensGruber/hani-mandl · GitHub da wäre der nächste Schritt das zu mergen und den ESP32 als dev board mit externem Display ebenfalls zu supporten. Vielen Dank für deine Anregung dazu!

Wenn du die SPI verwenden willst musst du mehr als nur 2 Leitungen mit dem Display verbinden das Display ist zwar ein SSD1309 läuft aber mit dem SSD1306er treiber.
Du kannst auch nur die Widerstände mit Lötzinn überbrücken, allerdings können dann schon ein paar andere Phänome auftauchen. Die Widerstände sind nur Pullup-Widerstände die zum Beispiel Körperspannungen abfangen. Es geht auch nur mit Lötpunkten.
Wenn Sascha und Andreas schon angefangen haben können sie gerne meine Eingaben verwenden. Ich habe noch die Kontroll-LED mit eingebaut, die beim Heltec ja schon auf dem Buzzer-Pin liegt.
Oder einfach melden :slight_smile:

1 Like

Cool wäre es tatsächlich, wenn wir weitere Verbesserungen in einem gemeinsamen code haben. Wenn du den Code von GitHub - ClemensGruber/hani-mandl: HaniMandl ist ein halbautomatischer Honig-Abfüll-Roboter. einfach forkst und zukünftig dort in deinem fork Änderungen vornimmst, ist es einfacher, die Änderungen wieder auf eine gemeinsame code base zurückzuführen.