Anyone have any luck getting the heltec wifi 32 v3 running and displaying things

all i can get running is a bunch of errors i have this in the captive portal

  sda: GPIO17
  scl: GPIO18

display:
  platform: ssd1306_i2c
  model: "SSD1306 128x64"
  address: 0x3C
  update_interval: 5s 

the error logs says basically the display isnt working…
and i cant find very much info on these particular devices

[18:43:00][E][i2c.arduino:199]: Recovery failed: SCL is held LOW on the I2C bus

also has anyone tried using bard for coding, pin lookup, errors, ect.
it has helped a few times

Well, that error typically says you have your wiring wrong (SCL pin is grounded)…
I also saw this on fried components, though

its brand new and if i upload the heltec demo firmware to it it works fine i know my code is flawed so im really wondering if anyone can write a captive portal that works better then my trash lol

Have the same issue with my Heltec Wifi Kit v3. This is because the i2c bus is busy and need to restart before initialising the display. so my try was to use the on_boot funktion.

on_boot:
priority: 1000
then:
- logger.log: “Resetting Display…”
- output.turn_on: display_reset_pin
- delay: 50ms
- output.turn_off: display_reset_pin
- delay: 3s # Wartezeit, bevor das Display initialisiert wird

output:

  • platform: gpio
    id: display_reset_pin
    pin: 21 # Pin des Reset-Pins

with this the display will be refreshed. and if you try to run your code with the display test like this:

display:

  • platform: ssd1306_i2c
    model: “SSD1306 128x64”
    address: 0x3C
    reset_pin: 21
    update_interval: 15s
    lambda: |-
    it.print(0, 0, id(font1), “Hello to Youuuu”);

font:

  • file: “fonts/TPF Quackery.ttf”
    id: font1
    size: 8

and remove the on_boot function and the output and the display show your text. buuuuuut… if you reboot your esp via the reset button, the complete configuration will no longer work, until you flash the on_boot funktion again…
Is there a simpler way ?

I found the solution. You need to multiuse the rst_pin 21. Here is my test:

esphome:
name: test
friendly_name: Test
on_boot:
priority: 1000
then:
- logger.log: “Resetting Display…”
- output.turn_on: display_reset_pin
- delay: 20ms
- output.turn_off: display_reset_pin
- delay: 30ms

esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino

Enable logging

logger:
level: DEBUG

Enable Home Assistant API

api:
encryption:
key: “your key”

ota:

  • platform: esphome
    password: “your password”

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

i2c:
sda: 17
scl: 18
frequency: 700kHz
scan: True

output:

  • platform: gpio
    id: display_reset_pin
    pin:
    number: 21
    mode:
    input: True
    inverted: True
    allow_other_uses: True

display:

  • platform: ssd1306_i2c
    model: “SSD1306 128x64”
    address: 0x3C
    reset_pin:
    number: 21
    allow_other_uses: True
    mode:
    output: True
    update_interval: 15s
    lambda: |-
    it.print(0, 0, id(font1), “Hello to You”);

    • file:
      type: “fonts/arial.ttf”
      id: font1
      size: 8

with this code my Heltec Wifi Kit V3 Display shows the text.

1 Like