DMX512 setup issue, no data on Transceiver input

Hii all

I’m trying to setup andyboeh’s DMX512 extension, I’m stuck with implementation because I can’t see any data coming out of assigned GPIO. DMX uses a break signal. that one I can see every about 100us on GPIO04 with the Scope, but no data.

Any hints?
Thanks,
Regards,
Mike

Hardware is a ESP32-S3-DevKitC

Log output with simple debug on UART shows me:
[D][uart_debug:114]: >>> 00:0F:17:FF:FF:2D:00

I have two RGB lamps configured, so that makes sense for me.

Configuration:

uart:
  id: uart_dmx_bus
  baud_rate: 250000
  debug:
  tx_pin: 
    number: GPIO04
    allow_other_uses: true # For ESPHome >= 2023.12.0
  stop_bits: 2

dmx512:
  id: dmx
  uart_id: uart_dmx_bus
  # enable_pin: GPIO06
  tx_pin: 
    number: GPIO04
    allow_other_uses: true # For ESPHome >= 2023.12.0
  uart_num: 1

output:
- platform: dmx512
  channel: 1
  universe: dmx
  id: pool_left_red
- platform: dmx512
  channel: 2
  universe: dmx
  id: pool_left_green
- platform: dmx512
  channel: 3
  universe: dmx
  id: pool_left_blue
- platform: dmx512
  channel: 4
  universe: dmx
  id: pool_right_red
- platform: dmx512
  channel: 5
  universe: dmx
  id: pool_right_green
- platform: dmx512
  channel: 6
  universe: dmx
  id: pool_right_blue

light: 
  - platform: rgb
    name: "Pool Light Left"
    red: pool_left_red
    green: pool_left_green
    blue: pool_left_blue
    icon: mdi:spotlight
    default_transition_length: 1s
    gamma_correct: 0
    restore_mode: RESTORE_DEFAULT_ON

  - platform: rgb
    name: "Pool Light Right"
    red: pool_right_red
    green: pool_right_green
    blue: pool_right_blue
    icon: mdi:spotlight
    default_transition_length: 1s
    gamma_correct: 0
    restore_mode: RESTORE_DEFAULT_ON

ESP32-C3 variant is untested and will probably not work. I do not have any ESP32-C3 so I can’t help here, sorry.

Ok, but configuration is correct I guess?

I don’t know, I don’t have any RISC-V ESP32.

What I found out:

  • use esp-idf instead arduino, then data is transmitted
  • decode looks good for the 2 fixtures, when the first RGB is set to red and the second fixture is off, I can see the following HEX decodes on my oscilloscope: 00 FF 00 00 00 00 00 (first 00 is start code)
  • when I use manual control of RS485 transceiver enable (like DMX mute), color changes will be taken over at the time of enabling, but not when still enabled and new data is transmitted

I looks like the “break” and the “MAB” will not work correctly, I can’t see this with the oscilloscope before the data will be sent. Furthermore, the default timing values for the break and MAB are at minimum according to specification.

So the point now is, that I have no break and MAB signal on DMX bus.

Any ideas apreciated…

Generating the Break Signal is SoC-dependent. On the ESP32-IDF platform, it is generated by calling uart_set_line_inverse, delaying and inversing the line polarity again. This requires knowing your hardware serial ID (see esphome-dmx512/components/dmx512/dmx512esp32idf.cpp at 8df21020881ad1c61fe9fecd11cf105b703e8e94 · andyboeh/esphome-dmx512 · GitHub), that’s why the paramter uart_num needs to be set correctly.

Thanks Andy
I had a look in the code and the ESP32-S3 Spec. For my case, the UART ID has to be 0,then it works with the ESP-IDF Framework.
Regards
Mike