CShark / usb_dmx

A simple four port USB-DMX ArtNET-Node
GNU General Public License v3.0
14 stars 1 forks source link
artnet artnet-node dmx dmx-interface stm32 usb

USB ArtNET Interface

This project is a USB ArtNET interface with four ports, based on the STM32G484. It will register itself as an Ethernet Card using the CDC-NCM protocoll to be automatically recognized by most operating systems (except Windows 10, which needs some manual configuration). It will then bind the ArtNET-implementation to a configurable IP on that virtual ethernet card. The device can be configured either using ArtNET commands for software that supports this, using a web interface on the device and it can optionally be extended to include a display module for configuration directly at the device.

Schematic

The project uses an STM32G484RE, but should work with any STM32G4xxRE variant. The ports are controlled by a MAX3440E each, which will provide some ESD protection in addition to the TVS-Diodes. The device will draw around ~150mA, which is easily delivered by USB2.0 ports. Galvanic isolation was omitted because it needs too much space and because it is not recommended for the transmitting ports of DMX-Devices anyway (although it is recommended for receiving ports, but not mandatory).

PCB

The PCB is designed as a four layer board, as with this small size the price was acceptable. The pcb was designed with a TEKAL 31.29-case from TEKO in mind, but any case with at least 100x100mm will work. placing three ports at the rear and one port beside the usb port at the front of the case. The display module is completely optional and is designed to slot into the mainboard and is secured with an additional screw from the front. It is then connected using a 10-pin ribbon cable.

BOM

The total cost for this device is currently aproximately 90€. Assembly takes around 6 hours, including soldering the boards, CNC the covers and soldering / crimping the connectors. You can save money by printing your own case (25€), finding a cheaper STM32G4xxRE variant at your local dealer (11€), finding cheaper XLR connectors (5€) and skipping on the display module (5€).

Mainboard (~40€) | Amount | Type | Value | Footprint | |-|-|-|-| | 4 | Capacitor | 1μF | 0603 | | 7 | Capacitor | 100nF | 0603 | | 2 | Capacitor | 20pF | 0603 | | 1 | Capacitor | 10nF | 0603 | | 1 | Capacitor | 4.7μF | 0603 | | 8 | TVS Diode | | SMA | | 1 | USB-C Receptacle | | | | 1 | FFC Connector | | 1x10, Pitch 1mm | | 4 | Terminal Block | | 1x3, Pitch 2.54mm | | 1 | Pin Header | | 1x3, Pitch 2.54mm | | 1 | Jumper | | 1x2, Pitch 2.54mm | | 2 | Resistor | 5K1 | 0603 | | 1 | Resistor | 4K7 | 0603 | | 4 | Resistor | 130 | 0603 | | 8 | Resistor | 560 | 0603 | | 1 | Switch | | Through Hole, Height 6mm | | 1 | Switch | | Through Hole, Angled, Height 6mm | | 1 | DIP-Switch | | Through Hole, 2x4, Pitch 2.54mm | | 1 | ESD Protection | ESDALD05UD4 | SOT23-6 | | 1 | Linear Regulator | AP2112K-3.3 | SOT23-5 | | 4 | Transceiver | MAX3440E | SOIC-8 | | 1 | Crystal | 25MHz | HC49 | | 1 | μC | STM32G484RE | LQFP64 |
Display Board (~5€) | Amount | Type | Footprint | |-|-|-| | 1 | OLED-Display | 0.96" with I²C and SSD1306 compatible driver | | 1 | FFC Connector | 1x10, Pitch 1mm | | 2 | Resistor | 4K7 | 0603 | | 4 | Switch | Through Hole, Height 10mm | | 1 | FFC Cable | 1x10, Pitch 1mm, Length ~100mm, Type B (opposing-side contacts) |
Mechanical parts (~40€) | Amount | Type | Specs | |-|-|-| | 1 | Case | TEKO TEKAL 31.29, or any case that takes Eurocard-sized PCBs (100x100mm) | | 4 | XLR Connector | An individual mix of Female and Male XLR 3- and 5-Pin connectors, depending on your needs | | 9 | Screws | M2, Length 15mm, Countersink | | 9 | Nuts | M2 | | 1 | Acrylic Window | 15mm x 25mm | | 1 | Spacer | M2, Length 6mm | | 1 | Mainboard PCB | | | 1 | Display PCB | |

Here are two lists on digikey that include all necessary components, except for the mechanical parts and the oled-display. It does contain four XLR-Connectors though.

Firmware

The firmware is completely custom, only based on CMSIS (no HAL) and supports the important parts of the ArtNET protocol. Which port is an input and which an output can be set using the dip switches, but later be overwritten using either ArtNET commands, the WebUI or the display menu. The device also has a reset button to reset the configuration for when things go completely wrong. If the device is completely bricked it can be put into bootloader mode using a jumper on the mainboard.

The device supports mDNS and is always reachable using artnet.local in addition to its ip-address. The WebUI allows configuring each individual port with all the settings that ArtNET-Commands also support. You can also change the ip-configuration of the device and its internal minimal DHCP-Server, as well as clearing all settings, rebooting the device and switching the device into DFU/Bootloader mode to flash a new firmware.