The Heltec WiFi LoRa 32 (V3.1) Nightmares begin

I have recently acquired two Heltec WiFi LoRa 32 (V3.1) Boards and I’m just trying to get them to work. I am using the Arduino IDE 2.3.2 and I’ve downloaded the “Heltec ESP32 Series Dev-boards” v3.0.0 board package. Now there are multiple Problems:

-The OLED Display appears to not be working anymore / never has been.
After plugging in the board with it’s factory settings everything worked fine… the OLED turned on and displayed a short startup sequence with the Heltec logo and so on.
Then I tried uploading my own sketch with the Adafruit_SSD1306 library and the Display didn’t even bother showing any signs of life. I’ve tried scanning for the i2c connection with another sketch… turning “Vext” to LOW and HIGH… using other absurd pins ChatGPT gave me… but nothing seems to work.

-Another issue with the entire concept of the v3 is that there is little to no proper documentation. I haven’t yet found out with what sketch the boards come out of the factory… the pinout is dramatically worse than the one from V2, showing no actual pin descriptions just seemingly random letters… Many links to schematics and other resources don’t work… the schematic and so on.

-Another thing about the schematic: what are the x’s behind pins 29-25 supposed to mean? Are they just not connected or are they used in a different part of the board and yes then why are they not named properly?!?!

The sketch I’ve uploaded should turn on the build-in white LED (which so far is the only thing I’ve managed to achieve), then print Hello World on the OLED and in the loop cycle through the (apparently) remaining 13 pins and powering them on and of again.

#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <Adafruit_GFX.h>

int pins[] = {2, 3, 4, 5, 6, 7, 19, 20, 33, 34, 38, 45, 46};

Adafruit_SSD1306 display(128, 64, &Wire1, 21);

void setup() {
Serial.begin(115200);
Wire1.begin(17, 18);

//Light on
pinMode(35, OUTPUT);
digitalWrite(35, HIGH);

//Vext ON
pinMode(36, OUTPUT);
digitalWrite(36, LOW);

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)){
Serial.println(“SSD1306 init. failed!”);
while(1);
}

display.clearDisplay();
display.setTextSize(2);
display.setCursor(0,0);
display.print(“Hello World”);
Serial.println(“It should have Printed hello world by now”);
display.display();

pinMode(pins[0], OUTPUT);
digitalWrite(pins[0], HIGH);

while(!Serial.available());
digitalWrite(pins[0], LOW);
Serial.println(“Continuing…”);

pinMode(pins[1], OUTPUT);
pinMode(pins[2], OUTPUT);
pinMode(pins[3], OUTPUT);
pinMode(pins[4], OUTPUT);
pinMode(pins[5], OUTPUT);
pinMode(pins[6], OUTPUT);
pinMode(pins[7], OUTPUT);
pinMode(pins[8], OUTPUT);
pinMode(pins[9], OUTPUT);
pinMode(pins[10], OUTPUT);
pinMode(pins[11], OUTPUT);
pinMode(pins[12], OUTPUT);

/for(int i = 0; i < 12; i++){
pinMode(pins[i], OUTPUT);
}
/
}

void loop() {
for(int i = 0; i < 12; i++){
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0,0);
display.print(pins[i]);
display.display();
digitalWrite(pins[i], HIGH);
delay(1000);
digitalWrite(pins[i], LOW);
delay(1000);
digitalWrite(pins[i], HIGH);
delay(1000);
digitalWrite(pins[i], LOW);
delay(1000);
}
}

Please help it is very late and the only thing I can think of right now is:
“Heltec… more like HellTec” because this hardware can only come from the depths of hell.

1 Like

Heltec does generally use the first I2C bus for the display. I don’t really see why you couldn’t use the second one, but you could try using the first [default] Wire to see if that fixes anything. For what it’s worth, I have used the Adafruit SSD1306 library in the past, but I generally use the ThingPulse library these days, defining the display (using the default I2C bus):

SSD1306 display(0x3c, SDA_OLED, SCL_OLED);

I don’t have any v3.1 boards, but all of the boards I get these days, including the last batch of V3 boards, come loaded with the relevant factory test sketch (available through the IDE Examples), which I have been able to successfully reload when required.

I’ve just seen another post from someone having trouble in an environment that includes the v3.0.0 board package (which I have not yet used), so there might also be a problem there.

Did anything ever come of this?

I think in the adafruit config.lib you have to uncomment out the correct display you are using. I am not by my computer for a few days. But if you are still having problems. I’ll look at the config I used.