Hello :v
I am working on a project that requires me to convert Artnet packets to DMX.
I am only entering the whole mcu prototyping phase so forgive me for asking stupid questions.
I have seen some artnet nodes that take for example 1 RJ-45 as artnet input and can output 8 DMX universes.
I haven't seen any pcb design for a solution like this and I also searched for it on the internet before posting, but I am either bad at searching or I don't know.
By using simple logic that one ethernet port is connected parallel to each ethenet chip (for exaple W5500 from WIZnet) then an MCU (for example ATmega 328p) that is connected with SPI to receive the artnet packets with some magic libraries (I am planing to use the ArtNet library and the RS485 library - I have already done that with one universe so now I am trying to scale things up) and a MAX485 chip to send the DMX signal to the first slv device and so on.
The project started with a mega2560 and simply receiving and sending universes when they come (the working prototype) then I wanted to work with timers to precisely time the dmx sending but I realize it would be better to split it for multiple arduinos for easier servicing - one mega dies = 4 universe dies and I want to design the system to be modular in a way that each module can be removed and replaced - also I still don't understand timers and its cheaper to buy 4 ATmega 328p :v they will be also used for a cheap DMX receiver anyway.
The thing is I have zero clue if I am right and if I am then how to handle the codebase? Should every chip be initialized with the same IP adress and MAC so its like the devices are acting as one?
How to design it to be half-duplex so the chips won't be able to send any unnecessary data back to a network switch? Like collision solving.
Or how much splitting the signal is too much?
If you have done something similar I would love to see how you handled it or please point me into a direction where I can find more info on what I am trying to achieve ;-;
No. An IP network does not allow multiple nodes with the same IP address.
Just use a hub, or more plausibly a switch with enough ports to connect all your network devices to. Each device should have its own MAC and IP. Whatever master/server sends data to your Arduino clients should map the 'universes'/'channels'/etc to the devices in accordance of how they are connected to the physical hardware. E.g. if Arduino 1 controls universes 1 through 4, have the server/master send only commands for univ. 1-4 to Arduino 1. Etc.
A hub or switch will handle collision problems; a switch is a better choice in this regard, but since traffic will be low, a hub will also work OK here. However, hubs are a bit 1995, so I wouldn't go out and purchase one today. Switches are cheap and easily available.
You could split an ethernet connection but given the availability of affordable switches there's no point in doing so.
A much easier solution is to have your single Arduino control all 16 universes and ensure that your electronics are designed in such a way that your Arduino doesn't die. They generally don't, unless maltreated severely. They're in fact quite reliable, as most contemporary electronics are, as long as you observe some simple design rules.
Trying to split out the application into several Arduino boards is only recommended if there are compelling reasons to do so, since experience shows that things get very complicated if you try to do so. It's of course possible, but since you're just starting out with microcontrollers, stick to a single Arduino at first and get that to work. Then if/when you bump into some hard limit, see how and if you should expand. Usually this expansion is more sensibly done by picking a more capable Arduino/microcontroller than to add Arduinos.