HELP DMX Signal via ESP32 Wifi and Artnet

Hi there, I have been banging my head for two weeks at this and I can not figure it out. I lack the basics I assume.

For an art-installation I want to an ESP32 controller with wifi (This one AZ Delivery Node MCU CP2102
[TTL zu RS-485] with this TTL to RS485 module (https://www.amazon.de/gp/product/B07DK4QG6H/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1)
to listen to DMX data on the wifi and send it into the DMX decoder

I am trying and trying different libraries etc. etc. but can not get anything to work.
i.e. I used this library Artnet wifi and tested the debug examples to see if any signal was getting through AND to test if any signal is beeing received via wifi. But no matter what I try, the just confirmes the connection to wifi and then nothing.

To generate the DMX signal I am using Resolume Arena. I would be open to use anything else if that is the issue of course... I can not even test if there is data beeing streamed as I don't know how. But it is so simple to setup that I highly doubt that it is the issue. (I have set resolume to use just one LED with three channels and to send to a specific ip adress. "Subnet 0, Universe 0)

Maybe my issue is so fundamental that I can not even get to the signal part yet. ...

The wireing:
ESP32 controller
5v --> RS485 VCC
GND --> RS485 Ground
G12 --> RS485 Data Input !!! <-- was in a tutorial, but I don't know how to check if the pin is even right?

RS485 controller
RE and DE are wired to VCC to set the module to send the data
DE pin to ESP32 --> possibly wrong pin
VCC --> ESP32 5V
B --> DMX decoder D-
A --> DMX decoder D+
GND --> DMX Decoder GND and ESP32 GND

Code on the ESP32 (i tried all examples etc.)

/*
Example, transmit all received ArtNet messages (DMX) out of the serial port in plain text.

Stephan Ruloff 2016,2019
https://github.com/rstephan
*/
#include <ArtnetWifi.h>
#include <Arduino.h>

//Wifi settings
const char* ssid = "XXXX";
const char* password = "XXXX";

WiFiUDP UdpSend;
ArtnetWifi artnet;

// connect to wifi – returns true if successful or false if not
bool ConnectWifi(void)
{
  bool state = true;
  int i = 0;

  WiFi.begin(ssid, password);
  Serial.println("");
  Serial.println("Connecting to WiFi");
  
  // Wait for connection
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (i > 20){
      state = false;
      break;
    }
    i++;
  }
  if (state) {
    Serial.println("");
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(IPAddress(WiFi.localIP()));
  } else {
    Serial.println("");
    Serial.println("Connection failed.");
  }
  
  return state;
}

void onDmxFrame(uint16_t universe, uint16_t length, uint8_t sequence, uint8_t* data)
{
  bool tail = false;
  
  Serial.print("DMX: Univ: ");
  Serial.print(universe, DEC);
  Serial.print(", Seq: ");
  Serial.print(sequence, DEC);
  Serial.print(", Data (");
  Serial.print(length, DEC);
  Serial.print("): ");
  
  if (length > 16) {
    length = 16;
    tail = true;
  }
  // send out the buffer
  for (int i = 0; i < length; i++)
  {
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  if (tail) {
    Serial.print("...");
  }
  Serial.println();
}

void setup()
{
  // set-up serial for debug output
  Serial.begin(115200);
  ConnectWifi();

  // this will be called for each packet received
  artnet.setArtDmxCallback(onDmxFrame);
  artnet.begin();
}

void loop()
{
  // we call the read function inside the loop
  artnet.read();
}

Any help is extremely greatly appreciated.

  • My main goal is to get at least ANY DMX signal from the ESP32. (can even be manual at this point)
  • Secondary of course is to see that it receives DMX signals over wifi ... but let us start simple


Split the project into smaller parts. Then make them one run one at the time.
Schematics would be appreciated.

Hey, Railroader.
Thanks for the reply. I'll create a shematic asap.

I can not split it into smaller parts actually. This is the smallest it could get since it should be actually super duper simple already. it is just one ESP32 that works as Arena Net node.
But i actually fail at sending out ANY dmx signal somehow.

Hey, as requested I have made a quick schematic.

Basically it would be super easy. On the ESP32 is the wifi library and the Artnet library. It is listening to DMX data on my wifi and transmitting it to via the TX pin to the RS485 module that modulates it to a dmx signal. The software Resolume arena is broadcasting DMX packets over my network.

But the libraries somehow don't get to work. Maybe i miss some super basic thing.

Hey,

I have not found the issue yet and had to progress on the hardware side. (cleanup and dressing is on the TODO next.
everything is 98% finished and is working on the hardware side at least. But so far no DMX signal no control.

Is there anyone who is using Artnet or WLED on an ESP32 to put out DMX signals?
I very much would love any hints and advice on trouble shooting this. It must be a super simple issue that is causing this.

Here are some progress pictures, in case it helps to understand what I am trying to do.
These are the containers that are being lit. Or supposed to beeing lit.

Worst case I would use a normal Arduino nano and hard code a dmx signal that is looping through colors.


Hey @Avion32 tell me more about your project because I have some questions.
However I realized an Artnet Node based on ESP8266 and here's my code.

It's mainly based on:
https://robertoostenveld.nl/art-net-to-dmx512-with-esp8266/

Hi @Avion32
I cant go into detail at the moment, tied up with other projects... but I managed to get DMX output from an ESP32 using WLED, it already supports DMX input "out of the box", and compiling a custom WLED (following guidelines on DMX - WLED Project ) you can get it to output DMX via a max485 module.

My goal was to use an ESP32 as a DMX recorder of sorts, using WLEDs many featured palettes, presets and effects. You should also then be able to use the already featured DMX input as well.

The input (streaming from a computer/controller over WIFI using ARTNET/sACN) works real good, just made a huge project work this way.

But the output... I only got it to work once and have not been able to replicate it. Still very interested in getting this to work, so I thought I'd tip you off, and see if you get futher with it :slight_smile:

Hey @tacmonkey

Sorry for the late reply. I was offline for a bit.
I just came back to this as now it is time to finish it.
The installation and large setup and all is all ready and functioning.
I have build 60 high power LED arrays for IBC containers and did all the electronics and cabeling etc. The DMX decoder has a test feature build in so I was able to test if everything works in general. Now I need a DMX Signal :wink:

I have reached out to Stefan Rulof GitHub - rstephan/ArtnetnodeWifi: Arduino library for a Art-Net-Node (artnet) over WiFi, handle DMX data and response to Poll requests. Runs on ESP8266, ESP32, WiFi101 and WiFiNINA devices. and he said I should just use the "DMX Send Example". (The one I have been trying to get working all along)
The code looks extremely simple thanks to his library.

The terminal of the exp32 only states successfull wifi connection but then nothing more.

I think my biggest issue right now is that I don't know how to trouble shoot this.
I am using resolume Arena to broadcast a dmx signal on the wifi but I don't know If it really broadcasting or if that is already the issue.

Or if the issue is on the esp32 side.

Do you have a compiled version of the Wled still there? Would love to test that out!
Thanks a lot !

Hey, I have gotten one little bit further with the help of Stefan Rulof (ArtnednodeWifi
It seems that I am getting a signal out but the decoder does not recognize it as DMX signal.
Or it is too weak or too scrambled or ....

Here is my probed scope picture. There is quite a lot of overlay / fluctuation. Could that be wrong baud rate? Or is the voltage too low? (3.8V) Or am I missing something?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.