loading

As a lighting technician, I often find myself having to run cables across walkways, to moving props or simply to places that are awkward to run a wire. Wouldn't it be nice to have a wireless solution? While there are many commercial units available using various protocols, they are either expensive or unreliable.

My Solution for Wireless DMX

When I first saw the cheap ESP8266 modules a year ago, I decided that I'd try to build a cheap DIY Artnet to DMX node. This Instructable will walk you through building your own.

New: v1.2.0 Available

If you have already followed this Instructable, head to step 10 for details of the latest stable version: v1.2.0. Note that this Instructable assumes you are using v1.0.5 as it was the current version at time of writing.

v2.0.0 beta Available

If you are looking for the latest and greatest firmware, head to step 11 for details on v2.0.0 which is currently in development. Once it is finished, I'll do a write up so make sure you follow me here and on my Github

ESP8266

The ESP8266 is a super cheap but powerful WiFi chip designed to bring IOT to hobbyists. It has a fast processor, more RAM and flash memory than most Arduinos and a (small) selection of GPIOs that support a few different protocols. It is available in a variety of formats and I prefer the ESP8266 07 model as it has an external antenna. The ESP8266 is also compatible with the Arduino IDE: https://github.com/esp8266/Arduino and I use this as it's very familiar and thus easy.

Artnet and DMX

Artnet is a protocol that allows DMX to be sent over a standard IP network. This protocol is supported by pretty much every modern lighting console or software (paid and free). Read more here.

DMX is the industry standard protocol for controlling professional show and DJ lighting - it is based on the RS485 protocol. Each DMX universe can have up to 512 channels and each channel has a value from 0 - 255. Read more here.

Applications

Pro lighting (moving props, trade shows, across walkways....), DJ Lighting, christmas lighting.... Pretty much anywhere that you wish to minimize wiring, this unit will come in handy.

Step 1: ​Parts Required

ESP8266 - I used the 07 model but they're all pretty similar

PSU - I used a small USB power brick

Resistors - 2x 1K, 3x 390, 1x 750

Caps - I used 4x 100nF even though the schematic has 5. C1 isn't needed.

3.3V Reg - Can't remember what I used here - any 3.3V regulator will do. The ESP8266 needs 3.3V but doesn't use a huge amount of it.

Max485 - These chips produce the DMX output (they can also do input). We need 2 - one for each universe. They are 5V chips but seem to take the ESPs 3.3V logic without any issues. There is a 3.3V version available but I had these on hand and it works...

XLR sockets - I used 3 pin but the standard states 5 pin. You could use a single 5 pin for both outputs as Avolites loves to do. I use 3 pin as I have mainly cheap chinese lights with 3 pin, they are stocked more readily and they are a bit sturdier.

LEDs - I have 2 small blue LEDs, one for each DMX universe to show activity. They are optional but recommended.

Power Lead - I used an IEC inlet. They're readily available and allow the lead to be disconnected for easier storage.

Perf board, hookup wire, headers, project box, screws, glue.

Step 2: Schematic and Construction

I started with a bread board. If you plan to make modifications to my schematic, I'd recommend you do the same. I haven't included a photo as I forgot to take one and my breadboards are in use for a new project I'm working on. Check out my ESP8266 Breadboard Instructable for details on making the ESP8266 breadboard friendly and then hook up your components according to the schematic.

On your perf board, layout your components in a way that makes sense for the required wiring and that will fit in your case. I wanted the final unit to be as small as possible - this meant I did this step in conjunction with the case layout (next step) in order to make sure it all fits.

In the image, you can see 3x 4pin headers. The 2 at the top are DMX outputs and the 1 at the bottom is power and LED connections. The 2pin black header in the middle is the RX/TX for programming the ESP8266. Note that the RX pin has a voltage divider (R5 & R6). This is because I use a 5V programmer (my Arduino Mega) and so I need to drop it to 3.3V so the ESP isn't fried. These resistors can be deleted if you have a 3.3V programmer.

I neglected to include reset or program buttons to save space and I didn't have any on hand. For reset, I simply cycle the power. To enable programming, I put a small loop of wire on the reset pin. I connect an alligator clip to the wire loop and then ground it to the DMX header's GND pin. Although this is a pain, I included OTA updates in software so it's only for the first flashing.

I have also chosen not to isolate the DMX lines because I was feeling lazy :) I also wanted to save on board space and keep the cost down (DC-DC converters are expensive). I would recommend optical and electronic isolation. I did this in my DMX LED strips Instructable and the same process would work here - just reverse the optoisolators as we're outputting here as opposed to input. You will need a DC-DC and an opto on each DMX output.

Step 3: Case Construction

I designed the case in conjunction with the circuit board in the previous step to ensure everything fit but used the minimum space.

I wanted all connectors on one side as it looks nicer and makes cable management easier. Because of this, the connectors were the very first thing I did. I drilled holes for the 2x XLRs, 2x LEDs and the antenna. I used a knife to cut the IEC hole. I stupidly used a female IEC connector when cutting the hole. It has a larger size than the male - hence all the hot glue around the IEC.

Once the holes are cut, I cut the pins shorter on the USB PSU to make it fit in the case. I drilled holes in the plug pins and attached wires - brown is live and blue is neutral (NZ/Australian standards).

Wire connectors to the XLRs (the blue cables).

Wire LEDs and power to a 4pin connector. This is all the black cables in the photos. I used an old USB cable for power. You can find schematics on Google but I used a multimeter to check the 5V and GND wires. Check the LED polarity - the cathode (short pin) connects to GND and the anode (long pin) connects to pin 2 or 3 of our connector. Some heat shrink will make everything look pretty and stop shorts.

Screw in the XLRs, clip/glue in the IEC, screw in your antenna, and hot glue the LEDs into their holes.

Slide the circuit board into place. I drilled a single hole through the case and the board for an M4 screw and nut. You could glue it if you prefer. This ensures it wont move around.

Finally insert the USB connector into the PSU. I put some hot glue on it to ensure it stays in place. Plug in your 3 headers and antenna.

Now it's time to flash our firmware....

Step 4: Flash Firmware

Connect Programmer

Connect your USB -> Serial adaptor. I use my Arduino Mega... on the Mega, simply short Reset to GND and connect megaTX -> espTX, megaRX -> espRX, megaGND -> espGND. Ensure you have a 3.3V serial - if it's 5V (as with the Mega) then use a voltage divider as shown on the schematic wiring page.

Hold the flashing pin 0 to GND - I use alligator clips as explained on the construction page.

Connect power (or press reset). Your device should now be in flash mode.

Get Files Needed

I use the Arduino IDE with the Arduino core for ESP8266 for coding and flashing the firmware. Install everything according to the instructions on their git.

Download my espDMX library to your Arduino IDE library folder. I wrote this library to output 2 universes of DMX using interrupts to ensure precise timing. The DMX output has a refresh rate of approximately 44Hz - the maximum you can get with a full 512 channels. When looking at the output with an oscilloscope, it is picture perfect on both outputs. I used the timings from Ujjal's DMX512 Pages. The library is heavily based on the hardware serial library from the core files linked above. The hardware serial library was a bit bloated for this purpose and didn't utilize hardware interrupts - hence why I modified it to suit. In the future, I may enable receiving DMX but I doubt it - I see no use case for this.

Download my esp8266_artnetnode_dmx code to your projects folder. You can use the bin file provided and flash OTA for the latest updates. OTA updates means no compiling of code is required. More on OTA later.

This Instructable is based on version v1.0.5 but I'd recommend using the current latest release. See the last step more info.

Flash Firmware

Open ESP8266_ArtNetNode_DMX.ino in the Arduino IDE.

In the Tools menu, choose Generic ESP8266 Module.

Set the settings according to the image above. Note that the flash size needs to be set according to the size of your chip. Use the CheckFlashConfig example (under File > Examples > ESP8266 in Arduino IDE) to check your chip size. The first number is the total flash chip size. The SPIFFS number is how much to assign to the file system - we don't use the file system so it doesn't matter what this number is. If your flash size is smaller than 1M then I'd recommend making the SPIFFS smaller to allow more space for our program.

Select your USB -> Serial programmer under Port.

Click the upload arrow. If the library and core files are correctly installed, it should compile and flash without too much fuss.

Settings

Most of the settings are done via the web browser. I'll go over this in the next step.

The LED pins are set in firmware. They default to pins 12 & 13 but you can change them if you want.

Troubleshoot

There are 2 define statements commented out at the top of ESP8266_ArtNetNode_DMX.ino

Uncomment #define VERBOSE to have the device spit out information about what is happening at any given time via serial0 (the serial port you have already connected via USB -> serial above). This will disable one of your DMX outputs and display wifi passwords in plain text so make sure it's disabled before deployment!

Uncomment #define LOAD_DEFAULTS to clear any settings and reload factory defaults. Make sure you comment this line out and reflash or you cant change any settings - each time the device starts, it'll clear them all.

Step 5: Settings

Connect to WiFi Hotspot

When you first start the device, It will attempt to connect to the WiFi network defaultSSID (which I doubt exists). If it can't connect within 30 seconds, it will start a hotspot. The hotspot is nodeName_XXXX (nodeName by default is artNetNode and XXXX is a random number). Connect to this hotspot using the password artNodeXXXX (XXXX is the number from the hotspot SSID).

Settings Web Page

Point your browser of choice to the settings page. If you connect via the hotspot, the address of the web page will be 2.0.0.1 (or 192.168.4.1 on older versions) but if the ESP has connected to your WiFi then use it's IP address (look at your router if it's DHCP assigned or use a static address you've assigned).

At the top of this page, you will see the MAC address. Use this to allow your device on a MAC filtered network (this is highly recommended).

Next is the Node Name. Change this to anything (less than 30 characters) to make the device easy to identify in your lighting software. It will also change the WiFi hotspot name - password stays the same however.

Next is your WiFi settings. Enter the SSID and password of your show network.

Hotspot timeout is the delay before the hotspot is started (when the WiFi network wont connect). The hotspot only starts when the device is power cycled, not if the WiFi connection drops after being connected.

Now for the Artnet settings. Subnet is your Artnet subnet, not to be confused with your network subnet. Set the required universe addresses - these can be the same if you want both outputs to be the same.

IP Settings allows you to see the current IP settings (DHCP by default). You can set static addresses if you wish. Artnet networks should run in the 10.0.0.0 or 2.0.0.0 ranges but will work on others.

Certain settings can be saved and will take immediate effect such as changing the Artnet settings. Other settings need a reset (IP and nodeName). Use the buttons provided to do this.

Firmware Update

The last item on this page is the firmware info and update box. This allows you to easily see which firmware version the unit is running and upload a new version via WiFi. Uploading new firmware will terminate all DMX output and stop responding to artnet until complete. Occasionally it fails so check the expected firmware version is displayed after an OTA update.

In order to produce the OTA binary, select Export compiled Binary from the Sketch menu of the Arduino IDE. This will create a .bin file in your project directory.

OTA Fails

If you find the OTA constantly fails, the WiFi wont connect or the hotspot wont start, check the Flash Size setting in the Tools menu. If this doesn't match your chips flash size, it causes weird issues. Use the CheckFlashConfig example (under File > Examples > ESP8266 in Arduino IDE) to check you are using the correct settings.

Step 6: Let There Be Light!

By now, your device should be connected to your show WiFi network and you should be able to connect to the settings page. Now to setup the lighting console/software...

First, ensure your console is connected to the network with an IP in the same subnet range as your artnet devices. This should be the 10.0.0.0 or 2.0.0.0 ranges.

All lighting software is different in the specifics of how these settings are implemented but all follow the same basic principles... Set a certain universe of data to be output to a certain artnet port (set by the subnet and universe). This data can be multicast (sent to every device on the network) or unicast (sent to a specific device). I recommend using unicast as it has less network overheads so should perform better. Our espArtnetNode will receive either provided the subnet and universe settings match. It responds to ArtPoll requests so it should show up correctly in your lighting software of choice.

Jands Vista Setup

I use Jands Vista as my console of choice so I'll show screenshots of the process and explain where the settings are. You can download and try Vista for free (Mac and PC) - but it will do random blackouts if you don't purchase a channel dongle.

I'm assuming you have some lights patched already - I'm not going to cover this as Jands has a bunch of great tutorials on this and other basics available on their YouTube channel.

On the Vista, goto your Patch view and select Connect Universes in the top right of the screen. There will be a list of available outputs for any consoles or wings that are detected.

Your espArtnetNode should also be listed with 2 available ports. Assign which universe of data you want to send to each of the ports. This will setup a unicast artnet connection. As soon as this is done, the activity LEDs on your espArtnetNode should start flashing to indicate that DMX is being output.

You could also select Add Network Connection on the bottom left of the Connect Universe dialog. This will allow you to add an artnet broadcast port. Use the subnet and universe setting from your device. Now assign the data universe to the broadcast port. This will establish an artnet broadcast. Any devices on the network can be set to receive this subnet and universe of artnet data.

Plug It In

I'm pretty sure you've already figured this out.... Plug the DMX outputs into your light(s) of choice and take it for a spin. I'd highly recommend these awesome RGB LED strip controllers that I designed a couple of years ago. #shamelessPlug

Step 7: LED Status

This is an overview of what the 2 status LEDs do.

On power up, both LEDs will light to indicate the device has started. They will stay fully lit while the node attempts to connect the WiFi.

Once the hotspot timeout is reached (30 second default), the LEDs will alternate about twice per second. This will continue until a client connects to the hotspot. If a client connects, they both turn off. If no client connects within a minute, the device resets and it all starts again.

Once a WiFi network has been connected to, both LEDs will turn off until artnet data arrives.

When data starts arriving, the device buffers it. Once the first artnet packet is received, the device will start outputting DMX and the LED will flicker to indicate activity. A healthy artnet stream will have a constant flicker. Each output is handled separately.

A slow flash (about once per second) indicates that no new data is being received. This could indicate that the network has dropped, the console has stopped sending data, or simply that there isn't any new data. The device will output at least one full DMX universe each second to ensure devices remain stable and any new devices connected to the DMX chain will get the data needed.

Step 8: Troubleshooting

I have run into very few issues. If you find any, please let me know.

WiFi Wont Connect

The ESP8266 is 2.4Ghz B,G,N capable. I found it didn't like one network I tried it on but as that was so long ago, I can't remember specifics.

Triple check SSID and password. I plan to add a plain view switch for password entry to a future release.

Check your MAC is on the allowed list for your network.

Ensure the flash size is correct in Arduino IDE when compiling/flashing the firmware. See the flash firmware step for more details and the fix.

Hotspot Not Starting

Check your hotspot timeout setting (30 seconds by default). If it's really high, your hotspot could take hours to start.

Check the device isn't connecting to a WiFi network. If the WiFi set on the settings page is available, it will connect to this before starting the hotspot.

Ensure the flash size is correct in Arduino IDE when compiling/flashing the firmware. See the flash firmware step for more details and the fix.

OTA Not Working

Ensure the flash size is correct in Arduino IDE when compiling/flashing the firmware. See the flash firmware step for more details and the fix.

No DMX Output

DMX is only output when connected to WiFi and valid artnet packets are received. Once this happens, it will output at least 1 full DMX universe each second of the last received data.

Check your lighting console and artnet node have matching artnet settings. Also check the network settings to ensure they can talk to each other. Also check that you have a licence for the software that allows it to output data. Jands Vista will do random blackouts if you don't purchase enough channels.

If the LEDs show activity but there's no DMX output, check your Max485 chips have power and are wired correctly. Also check that the LED and DMX output match (i.e LED_A represents DMX_A, not DMX_B). It's easy to poke the LEDs into the wrong hole.

Step 9: Ideas for the Future

Web Settings

DONE - I plan to add a plain view switch for password entry to a future release.

I am also looking into using AJAX and JSON to save settings rather than submitting the entire page.

Stand Alone

DONE - I plan to add a stand alone mode where Artnet can be received by the device's hotspot. At present, setting the correct IP subnet is proving to be a challenge.

LCD Menu

I am currently developing an LCD menu for this device. It will consist of a small 128x64 LCD and either 2 or 3 buttons. The menu will allow local setting changes and display critical info locally, without the use of a laptop or phone.

The main issue I am having at present is debouncing the buttons. It is very difficult to do this in code as I want to maintain the precise DMX timing I currently have - receiving artnet packets and DMX output is the priority. When I get a bit more time, I will be looking into hardware debouncing. I am thinking of using a small AVR running a loop with software debouncing and then sending button states to the ESP - this is simple and I have heaps of small AVRs on hand. I could also use the AVR to run the LCD, taking the load off the ESP.

Store Scenes

With the large amount of flash storage available, I was thinking that storing scenes on the ESP would be a great idea. This would allow simple scenes or chases to be run without a lighting console being present. This would tie in with the LCD menu, allowing selection of scenes from the menu or web interface.

One DMX universe is 512 bytes so 2 universes would take 1K. I guess I could store 500+ scenes on the 1M flash available to me and more with the 4M versions of the ESP8266. This would allow some cool chases to be recorded.

DMX is 44Hz so 44K space would be needed per second. This would mean you could fit a chase about 11.5s long. You could also record every second or third packet to allow for longer chases.

Captive Portal

I plan to add captive portal code to the hotspot shortly. This will mean that you don't need to enter an IP address - you'll be automatically sent to the settings page when the hotspot starts. Obviously this wouldn't work when connected to a WiFi network as the ESP8266 wouldn't be the DHCP server.

Step 10: V1.1.x & V1.2.0 Update

Please note that I haven't fully tested this code and it may be buggy. Please give me feedback on your experience with the code and any suggestions.

How to Update

This version uses a slightly modified version of lwIP. If you wish to modify/compile/upload this using the Arduino IDE, see the details at the bottom of this page.

The easy option is to download v1.1.0.bin from my gitHub, head to your device's web settings page and do a firmware update from v1.0.5

New Features for v1.1.1

I finally found a bit of time to implement some of my ideas from the previous step. In addition to these changes, I have made a few tweaks behind the scenes. Check out my gitHub for details.

New Features for v1.2.0

After much fiddling around, I've finally managed to implement storing and recalling DMX scenes. This is achieved by saving all Artnet data into files using the SPIFFS system and is accessed via the web GUI.

Simply set a static look via your lighting console, goto the Stored Scenes page on the web GUI, type a name for the scene and click Save. You can then recall the scene, overwrite it with new values or delete it. This page will also show you the source of the DMX output, either Artnet or one of your scenes.

Depending on the channel count, you should be able to store about 200 scenes on a 1M ESP8266 with 256K SPIFFS partition. The web GUI will show you how much space is used.

Packet forwarding in hotspot mode allows you to set up once device in hotspot mode and have other nodes connect to it. This allows you to use multiple nodes without a separate WiFi AP/router.

Stand alone mode is toggled on using a check box on the web UI. It will only run a hot spot, allowing you to instantly connect to the device without waiting for it to attempt a WiFi connection. In this mode, you can send artnet directly to the device without the need for a wifi AP.

Updated web GUI adds the option for the stand alone mode. It also has a toggle to view the wifi password to make entering a new password less error prone. The help info is now hidden by default and can be toggled using question mark images.

Better IP settings in hotspot which are more in line with the artnet specs. By default, the device now has the IP of 2.0.0.1 when in hotspot or stand alone mode. You can also change the IPs to static when in stand alone mode.

Compile & Upload in Arduino IDE

Before you open your IDE, we need to modify one file. Goto the folder that your ESP core files are installed in and find these files:

tools/sdk/lwip/src/app/dhcpserver.c
tools/sdk/lwip/include/lwip/opt.h
tools/sdk/lwip/include/lwipopts.h

On my Mac, they're in ~/Library/Arduino15/packages/esp8266/hardware/esp8266/2.3.0-rc2/

Modify it according to this Pull Request and this Pull Request. Hopefully my commit will be merged into the lwIP master shortly and released in the next core files release.

Now open your Arduino IDE. In the Tools menu, select the board as Core Development Module. Set all your settings for flash size and speeds as we did in step 4. Make sure you select lwIP Variant: "Open Source (gcc)". This option will compile lwIP from source (which we modified above).

You should now be able to flash everything as normal.

I look forward to hearing feedback and suggestions on this new build.

Step 11: ArtNetNode V2

I have been hard at work on the newest version of this project. Check it out on my Github

What's New?

New libraries:

The new firmware has been re-done from the ground up. I wrote an all new ArtNet library which incorporates almost all of the ArtNet v4 features including address & port changes. The new library also allows for easy addition of an infinite number of ports - subject to memory usage.

In addition to the ArtNet library, I also re-wrote the espDMX library to add RDM support for both outputs of the ESP8266. This was very tricky due to the fact that the esp8266 only has one RX pin. This library automatically keeps track of the devices connected and notifies ArtNet clients of any changes (via the ArtNet library).

ArtNet v4

I've tried to fully comply to the ArtNet v4 spec where ever possible. This includes merging data in HTP or LTP from up to 2 IPs per universe and also obeying Merge Cancel requests. Status messages are also sent with artPollReply messages so that controllers can get some feedback and see the current state of the outputs.

sACN Support

I've had a lot of requests for sACN support. It is now available in beta5d.

DMX In

I've now added DMX input support. You can only have one input but the second port can be either DMX out or WS2812 control. RDM wont work on the second port when using DMX in as there is only the 1 RX port on the ESP8266.

RDM Support:

RDM builds on top of DMX and works along side it using the same equipment. It stands for Remote Device Management and allows you to monitor & change device settings without having to physically interact with the device. This is great on large rigs or when a fixture is in an awkward spot as you can change the address or check a sensor remotely.

https://en.wikipedia.org/wiki/RDM_(lighting)

WS2812(b) Support:

Addressable LEDs are great with many uses. With the latest firmware, you can control up to 1360 pixels (680 per output) using the same base hardware. The outputs are "hot swappable" meaning you can instantly change from DMX/RDM to WS2812 and you can even have one output of each if you desire.

Pixel FX:

I've made a basic FX engine, allowing you to control up to 1360 pixels using only 12 DMX channels.

Better & Faster Web UI:

The Web UI is now much richer for a better experience with style sheets designed for easier use on mobile, tablet and desktop screens. It also utilizes AJAX with JSON for all requests. This makes it a lot faster with less network & hardware resources used.

Coming Soon

Stored Scenes:

This is quite popular in my v1.2.0 firmware and will be coming to v2 shortly. It will be much improved allowing for chases, storing of Pixel FX and selection using the hardware button.

Support for non-WS2812 Pixels:

This may or may not happen. WS2812(b) is the most common tape. If you'd like this feature, consider making a donation and sending me a message so I can buy some for testing.

Latest Updates

Beta5 of my new firmware is now up for anyone wanting to try it. It will work with the hardware in this Instructable or you can make a few minor modifications to add RDM support. Schematics are on my Github.

Be sure that you read the readme as you need to ensure you flash the correct bin.

<p>Hello, and thanks for this instructable! This project has been many firsts for me...basic electronics, soldering, perfboards, etc. I've been learning a lot and really enjoying it! I've been working with my first build (ESP32 with v1.2.0) in my club and it works pretty well except for intermittent resets. At any given moment all of my fixtures will act like I just disconnected the DMX cable then after a few seconds go back to business as usual. It appears the ESP32 is resetting and I'm not sure why. I have read about a watchdog timer...could this be my problem? Also, I only used 4 caps leaving out C1 so maybe I have a stability issue? Any advice would be greatly appreciated. Thanks!</p>
<p>The code is for the ESP8266, not ESP32 - there are a few minor differences and device specific code that would need to be changed. I'd say that is your issue</p>
<p>My apologies I was incorrect. I have no idea why I said ESP32 in my original post...I actually used an ESP8266-12e. Since my original post I added C1, but I'm still getting random intermittent resets.</p>
<p>according to adafruit (huzzah uses esp12e) the most common reason the board restarts is a non reliable 5V supply(3.3V if you arent using huzzah), when you added C1 it stabalized the source some idk if this is it but maybe something to look into. let me know if you get it working.</p><p>maybe a higher value C1 that holds more charge? will stabalize it better.</p><p><a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/faq" rel="nofollow">https://learn.adafruit.com/adafruit-huzzah-esp8266...</a></p>
<p>Hello, and thank you very much for this great instructable, I&acute;m going to make this project and was wondering if I could use 2 pix outputs using ESP01 with v2, using TX with output 1 and GPIO02 with output 2, not using LEDS, RDM or DMX IN functions. Using &quot;The node_dmx_and_pix schematic is recommended as it allows for DMX with RDM &amp; also ws2812(b) strips by using the convert_max485_to_pix&quot; will allow what I&acute;m asking for? Thank you again for the support.</p>
<p>Not at present but I plan to do a WS2812 only version of the code that will do this.</p>
<p>Why show me dmxworkshop three times the same node?</p>
<p>I don't know. dmxWorkshop has a few weird issues. It does this to me also but I've used wire shark to see the network traffic and it all seems fine. This is a dmxWorkshop issue as opposed to my issue I believe.</p>
<p>Hi, very nice Project. But compile with arduino don&acute;t work with core development module. (make: *** [build/user_config.h] Error 1). What can i do?</p>
<p>I'm not sure what would cause this as there are so many variables.</p><p>I'd suggest trying to compile and flash a simple blink sketch first to check that your IDE is setup correctly. Also check you're using the latest version of the ESP8266 Core</p>
<p>All other sketches work. Only with your changes in Step 10 <em>(...select the board as Core Development Module. Set all your settings for flash size and speeds as we did in step 4. Make sure you select lwIP Variant: &quot;Open Source (gcc)&quot;.) shows the error.</em></p>
<p>I have build a smaller node with on universe. The Problem is to compile and upload with arduino.(see last post) And if i flash it without arduino the node lose all few minutes the Connection. And i can&acute;t see the node in dmxworkshop.</p><p>If i have a little bit more Money next time i will be donate your Project.</p><p>(sorry for my bad english)</p>
<p>That looks really cool.</p><p>I've answered your query below but I'm not sure how to fix it.</p>
<p>Hi mate, I'm wondering if in the latest version the NodeMCU can act as the RDM device, or does it just pass any RDM data on? The reason i ask is I have about 20 RGB floods that I've put nodeMCU's in and it would be nice for the desk to know to only send each light the channels it needs.</p>
<p>My code only implements the RDM discovery. All other RDM data is simply passed through the device. This could be added but would be a bit of an undertaking.</p>
<p>Hello, and so after a month, I installed everything in a case of aluminum and laid out a printed circuit board. I attach the files, all of a sudden, who wants to repeat. Thank you again for your work. I sent you some money for beer. It's good that I waited for the second version. It has a lot of new and interesting. It's a pity the LEDs do not show the indication of the input data on ports A and B, as it was in the first version, this is not enough. Work with ws2812 tried on several programs, I noticed that sometimes it can slow down the output of data. It would be interesting to look at the source code, which changed in comparison with the first part. Well, except for those nodes where the support WS2812, RDM, and DMX input is enabled naturally. I also create DMX devices, but I do 8-bit AVR.</p>
<p>That looks really good. I'm glad it seems to be working for you. Thanks for the donation - it's much appreciated.</p><p>Unfortunately I've been flat out with a new job for the past 3 weeks so this project has been very slow going. I will be releasing the source in the next couple of days for contributors to give me feedback on so keep an eye on your inbox.</p>
Question/Problem. Somewhat new to the ESP 8266. <br><br>I've tried both 1.2.0 and 2.0.0, with triple checking everything, but the DMX rate seems to be stuck at about 3HZ. Any ideas what this could be? Changing channels, number of channels, type of fixture and using adifferent ESP's has not helped. Thank you.<br>
Problem solved. For anyone else with similar issues, I was connected to a network that has approximately 40 active clients. and my QOS was giving artnet least priority. Hope this helps someone in the future.
<p>I'm glad you got it sorted.</p><p>I would avoid using a router with other traffic on it for this very reason. Most routers will have UDP packets way down on their priorities.</p><p>There are heaps of cheap WiFi APs &amp; routers and it's definitely worth getting for these projects where timing is critical. </p>
<p>I'm new to all this. Are the Resistors, Caps and Reg needed if using a single NodeMCU or Huzzah board? Also, how would you hook up a ws2812b strip to this using a NodeMCU or Huzzah board? Would I connect the strip directly to the board or would they still have to connect to the <em>Max485? </em>This looks to be the most comprehensive tutorial I've found so far. Thank you!</p>
<p>Not all of the components are required, especially if you're using one of those dev boards (I use the NodeMCU for prototyping). The 3.3V voltage regulator is also not needed as it's on the dev boards already.</p><p>If all you want is the ws2812, look at the schematic on my github - there is one for just ws2812 called node_pix_only_v2.png. With a dev board, the only resistors you'll need are R3 &amp; R4 - the rest are already on your dev board. You don't need the Max485 chips for this.</p><p>If you want DMX, you'll need all the resistors &amp; caps on the right side of the schematic around the Max485. Then to use ws2812 strips using this schematic, use the convert_max485_to_pix.png schematic. This will also allow you to have a much greater distance between the esp8266 &amp; your pixel strip.</p><p>The main thing with the esp8266 is power supply. If the power is not stable, it'll have issues. That's why I go a bit overboard with caps - and as they're cheap, I usually do anyway. I normally put a couple to filter/smooth the incoming power and then put 1 cap per IC. I find this, along with a decent PSU, eliminates any power related issues.</p><p>I hope that answers your questions and I look forward to your feedback.</p>
<p>Which wattage of 470 resistor is required for a 1 meter/60 led strip?</p>
it doesn't matter as it won't be dissipating much power. whatever you have is fine
<p>I've switched to trying to use Jinx! Here's the settings I have for the output devices http://i.imgur.com/C2sdALC.png and here are the patch settings http://i.imgur.com/Y52UMQs.png. It will only ramp up quickly from green to yellow to white when I select &quot;Start Output&quot;. Any thoughts?</p>
<p>Thanks so much for the reply! I have a few other questions. Is node_pix_only_v2.png for 2 strips (A and B)? I also don't know what a programming header is :(. And will this setup work with having 10+ led strips with 1 ESP8266 per led strip?</p>
<p>node_pix_only_v2.png still has an output A &amp; B - there's just no Max485 which means it wont do DMX.</p><p>The programming header is simply where you attach a programmer - usually a USB-&gt;UART dongle. It isn't needed in the physical sense - you can just connect your programmer to these points in the circuit using temporary clips of some sort. Once you've flashed the firmware the first time, you shouldn't need to use this anymore as you can use the Web UI to update the firmware.</p><p>And you can use 1 ESP per strip if you'd like but this device can output to more strips which will be cheaper. This device can handle 680 pixels per output so depending on your strips, you could potentially have 9 strips per ESP (5m x 30 pixels per metre -&gt; 4.5 strips is 675 pixels per output).</p><p>I hope this helps and look forward to hearing your feedback and experiences with it :)</p>
<p>Great thanks! I've got the firmware on the esp266 and Vista recognizes the unit when I give it power (so exciting!) Now my issue is that only the first light will randomly show green or white if I fiddle with the color/brightness options. I've added a 470 1/4 watt resistor to the data line. Power and ground are attached to the corresponding pins on the NodeMCU.</p>
are you running in 12 channel Pixel FX mode? if you are then make sure you set the widths for the shapes.<br>If not, make sure you've got 3 channel fixtures (RGB or GRB) patched and that they're patched correctly starting at address 1
<p>I'll have to go back and watch their video series because I don't know what Pixel FX mode is :/. I couldn't find a video specific to hooking up custom lengths of LED strips in vista. Also not sure how to access the esp8266 wifi settings after it's set up to connect to the console network. 2.0.0.1 doesn't bring up the settings screen now. So sorry for all the noob questions. I seriously appreciate you helping me out!!!</p>
<p>Hallo,</p><p>I'm planing to make a design with an ESP06 Module and your software.</p><p>Because the ESP06 has no GPIO05 used in your software to change direction i wanted to know if it is possible to use an other pin for this function (e.g. GPIO15 or one of the LED Pins and change the one LED to GPIO15)?</p><p>Thanks a lot!</p>
<p>I'm not sure why manufacturers can't break out the same pins on each version - it's a bit annoying.</p><p>If you use the ESP01 firmware, it will put the direction on the TX1 (GPIO2) pin but you'll only have port A. Alternatively, if you don't want the DMX in or RDM functions, just tie the direction line HIGH. This should allow you to use it for now.</p><p>I am nearing the release of source code - only scene storage to add. I will try to add a compile option for the ESP06 when I've got things a bit more finalised or you'll be able to do so when it's released. If you want it before the public release, I'm giving it to donators a couple of weeks before then.</p>
<p>Hi there,</p><p>excellent work, mtongnz! </p><p>This is my little Version. I was so amazed about it being so small, it had to be Acrylic :-) Running V2 beta4 in the moment. Happy tho hear about the DMX input, will try it soon. </p><p>Dear mtongnz, is there any chance to get the V2 source ? </p><p>I'd like to fiddle with it a bit, adding Status Leds etc.</p><p>Greetings from Hamburg/ Germany,</p><p>Jochen</p>
<p>Hey Jochen,</p><p>I've already replied to you in private but thought I'd put it here for everyone else.</p><p>The v2 source code will be released when I consider the code to be finished. At this stage, it looks like that will be at the end of March. People who donate or support the project will receive the code before the public release as a special thankyou.</p><p>A donation link is on my github if you'd like to support me. So far, donations have allowed me to purchase more ws2812 strips &amp; a bigger PSU for testing. I have also used donations to help fund the first batch of prototype PCBs which will be arriving in a few weeks.</p><p>For those who cant afford to donate or don't want to, that is completely fine. You can get early access to the code also if you provide assistance in other ways such as making CSS themes, feature testing &amp; bug reports.</p><p>I hope everyone enjoys using this device as much as I've enjoyed developing it. After the public release, there will be a new Instructable to show off the new features and to demonstrate how to build it from scratch.</p><p>Thanks for your continued support.</p>
<p>beta5d is now on my github.</p><p>It adds sACN support and also the ability to upload a custom CSS so you can change the look of the config page.</p><p>I look forward to seeing some of the designs people come up with and, as always, make sure you send me some feedback.</p>
<p>V2 beta5 is now out - now with DMX input! </p><p><a href="https://github.com/mtongnz/ESP8266_ArtNetNode_v2">https://github.com/mtongnz/ESP8266_ArtNetNode_v2</a></p><p>Give it a go and send me some feedback. I love hearing people's thoughts on issues and feature requests.</p>
<p>Once again, thank you very much for your work. It is interesting to many. We expect new opportunities. Very interesting chases and effects. Regards! Vadim</p>
<p>Glad you enjoy it. I'd love some suggestions on FX to implement.</p><p>I kinda stole the ideas for the ones I made from the Adafruit Neopixel library examples :) I have deliberately left a lot of space on the FX select channel so I can add more in the future.</p>
<p>Hello, Thank you for a wonderful project and what you do. This device makes it easy. Made is on the breadboard, but the body is placed in a short time. Unfortunately no enticing RDM devices. But I'm interested in the work of the test LED string. And assistance in dealing with LED display. We do not think to use Atmega 8, as a link with ESP8266 and the LED display on the controller SSD1306, encoder, and LEDs indicating the status of the outputs. Also, it would be possible to apply two-color LEDs for indicating the output (transmit / receive). And also control the direction of flow on the MAX485. And use one of the GPIO ESP8266 signal CLIK, and then expand the ability to connect the LEDs to the WS2801. Sorry for my English, I use Google translator.</p>
<p>I have no immediate plans to add LCD support. It will add cost to the device and also use valuable clock cycles.</p><p>For the LEDs, I am planning to eventually use WS2812 LEDs for the status LEDs. They can be purchased in a 5mm form factor which I think would be perfect.</p><p>If you look at the V2 beta I'm currently working on, the MAX485 does have direction control utilised. Beta5 which I have just uploaded has support for DMX/RDM output, DMX input &amp; WS2812 control.</p><p>I don't think I'll use an AVR with this project - I don't feel it is necessary. The ESP8266 is fast enough and has heaps of RAM. I have recently received a few ESP32s so I may port it to that in the future.</p><p>I do like the looks of the WS2801 - they seem much easier to control than the WS2812. Unfortunately my budget is very tight and I have to prioritize my purchases. If you are really keen on them, feel free to make a donation so I can buy some - my paypal link is on my github.</p>
<p>So beta4 of my new firmware is now up for anyone wanting to try it. It will work with the hardware in this Instructable or you can make a few minor modifications to add RDM support.</p><p>Check it out here:</p><p><a href="https://github.com/mtongnz/ESP8266_ArtNetNode_v2">https://github.com/mtongnz/ESP8266_ArtNetNode_v2</a></p><p>Be sure that you read the readme as you need to ensure you flash the correct bin.</p><p>This firmware adds support for RDM and also ws2812. New in beta4 is the ability to reset the default settings on boot via a button and also Pixel FX which allows you to run up to 1360 ws2812 pixels from only 12 DMX channels.</p>
<p>I'm not sure if this is a bug or intentional, but with v1.20 I have no dmx output if connecting to a unit after timeout. It only works if 'standalone' is enabled in the web settings. I have built 3 of these into different lights, sometimes I use them all together (1 unit always create a hotspot) and apart from a bit of latency they work very nicely (ip forward). But sometimes I use them separately. The way it is now, I'll have to go into web settings first &amp; enable 'standalone' before it'll work. I know it doesn't sound a big problem, but for people that aren't aware of it (I occasionally hire out my lights) it seems though the isn't functional. Is this a bug?</p>
It's not a bug, but a feature. Most people will either want it stand alone or connecting to a hotspot. It is stated somewhere I'm sure :)<br>The hotspot is only to change settings and will timeout if you don't connect within a few minutes and then it'll reconnect to the Wi-Fi. <br>This is so if your Wi-Fi goes down, the unit will reconnect rather than doing nothing.<br>In the new beta, it is more clearly written on the settings page. It will also only start the hotspot when the device starts, not on losing a connection.<br>If you wanted, you could modify the code but I think this is the best way to have it.<br>Thanks for the feedback
<p>Ok, sorry I thought it was a bug. Now that you've explained it to me, it does make a lot more sense the way it is now. I won't be tampering with any code. Thanks for the update. And well done on adding RDM!! Btw: am I correct that in order for me to use RDM I need to change the circuit slightly? If so, please point me to a schematic. Thanks again for your help.</p>
<p>RDM requires the RX portion of the Max485 to be connected. Schematic and firmware are on my github: </p><p><a href="https://github.com/mtongnz/ESP8266_ArtNetNode_v2/">https://github.com/mtongnz/ESP8266_ArtNetNode_v2/</a></p><p>The code is not yet released as it's still in beta but the firmware is available for an OTA update. It will also handle ws2812b LED strips - the code is still in early testing (in the beta3 branch)</p>
<p>&quot;Up to 1360 ws2812(b) pixels - 8 full universes&quot;</p><p>If you can a little explaining to do. I do not understand .I see the PIX-A can to take out 680 pixels as well as a PIX-B. Am I right?</p>
<p>Yes. 680 pixels per port = 1360 total. This will use 8 universes of data</p>
<p>&quot;This will use 8 universes of data&quot;</p><p>Can you explain that a little?I do not understand.</p>
<p>8 universes of DMX data.</p><p>1 DMX universe can have a maximum of 512 channels. Each LED pixel uses 3 channels - red, green and blue. 3chan * 170pix = 510 channels or pretty much 1 universe. This means that 4 universes will give us 4 * 170 = 680 pixels. The new node firmware allows for 2 output ports with 680 pixels (4 universes) per port which equates to a total of 8 universes of data.</p><p>Have a read on wikipedia to learn more about DMX and Artnet:</p><p><a href="https://en.wikipedia.org/wiki/DMX512">https://en.wikipedia.org/wiki/DMX512</a></p><p><a href="https://wiki.openlighting.org/index.php/ArtNet">https://wiki.openlighting.org/index.php/ArtNet</a></p>
<p>Why there are two bin? ESP-01 and one for long?What's the difference? Why did you do that for'd ESP-01?To see ESP01 bin no PORT. Well, ESP 01 has a port GOIO2.I think ESP01 PORT-A can be output only a PORT-B and input and output.</p>

About This Instructable

27,032views

102favorites

More by mtongnz:ESP8266 Artnet to DMX ESP8266 Breadboard DMX LED Strips 
Add instructable to: