[Help] Circular LED Matrix for Railroad Signal Post

Hello, I'm new to the forums and new to Arduino as a whole. I'm aware that the use of an Arduino can accomplish what I'm looking for but I need some help from you guys in terms of how to get it done. Basically I need to display different light signals on a signal post (think of it like a traffic light except with more combinations instead of just a simple red, yellow, and green). I've attached the two types of signals I want to display.

The pictures attached show two types of signals from two different railroads; the double head with multiple lights is from Amtrak and the triple head with single lights is from NJ Transit [NJT].

My plan is to make one signal post with three circular heads to avoid making two separate posts for the two types of signals. Each head will be filled with a circular LED matrix so that I can show both types of signals; ie: to display an Amtrak signal, a specific set of LEDs in the matrix would light up. To display an NJT signal, the entire circular head would light up.

How would I go about getting this started? Thank you in advance, anything helps.
Screen Shot 2019-07-28 at 7.01.41 PM.pngScreen Shot 2019-07-28 at 7.02.58 PM.png

Screen Shot 2019-07-28 at 7.01.41 PM.png

Screen Shot 2019-07-28 at 7.02.58 PM.png

Screen Shot 2019-07-28 at 7.02.58 PM.png

Screen Shot 2019-07-28 at 7.01.41 PM.png

How are you at making things?

Maybe some version of this:

https://www.aliexpress.com/i/32642833881.html?spm=2114.12057483.0.0.1b0b31f9KC9QFe

I'm good at 3D modeling things, I can follow instructions pretty well especially when they're visual. But yes, I'd like to create something like a 10-15" circular head

“10-15” circular head”

Is this for a model train?

larryd:
“10-15” circular head”

Is this for a model train?

No, this is for studying purposes in order to be able to recognize and verbally call out signals as they are presented, thus the 10-15" circular head size

The image offered in post #1 could be one of the actual lights in the matrix.

These can be made any colour.

However, simple LEDs might be best, i.e. Red and Green

The software would be simple to write depending on what you need.

To start, see this discussion by Robin2, planning and implementing:

https://forum.arduino.cc/index.php?topic=261445.0

Imgur

I was looking to make something more along the lines of the image above; basically an array of RGB LEDs spaced about 2mm apart

That will certainly blind everyone.

larryd:
That will certainly blind everyone.

Haha, yes it may seem like that but the real signal heads used in the field are much brighter and have to be visible from at least 500'-1000' away depending on the setting. That's why I'm opting for a 10" circular head as the signal post will be mounted outdoors to simulate real world viewing (during heavy rain, sleet, snow, fog, etc). I figure at least a 10" head with some bright LEDs would be viewable from a minimum of 100' in the right conditions.

Anyways, I'd like to know how I'd be able to control that matrix to display the two types of signals I mentioned above. Basically I'd want the entire head lit up for the NJT type and only specific parts for the Amtrak type. Would it be as simple as wiring up all the LEDs to power/arduino and controlling them? Sorry if I'm asking obvious questions, just need to be pointed in the right direction to get this project going. Thanks

V4D3R:
Anyways, I'd like to know how I'd be able to control that matrix to display the two types of signals I mentioned above.

first you have to take a hardware design decision, what LED's you will use.
If you decide for some kind of Neopixels, WS2812, APA106 ... it might get easier because they can be daisy chained.
Than lay your chain in your picture
Now you can number each LED from 0 .. 400 (just guessed)
Having a number for each LED you can design the pattern of your signs, adressing each lighted LED with a specified color. You might end up with a big array of numbers, each element containing LED & color.
E.g. a struct

keep in mind that you will need huge amount of RAM and/or Flash to store these pictures in your microcontroller.

Honestly - I wouldn't do this project with separate pixels.
Either I would

  • use this simple module from post #1 or
  • or search the largest neopixels module I could find
  • or an old 4 to 3 monitor driven by a PC/raspberry. 4 to 3 should give you a fair chance to mask a circle in your desired size.
  • Or even a 16 to 9 in portrait format could be used for 2 vertically aligned circles...

Want to stick to using LEDs and not monitors, how would I go about adding more RAM to the arduino? The LED I'm planning on using is a push through version based on neopixels WS2812 in order to have RGB through each individual bul

Seems like a lot of your LEDs would be in positions that would never be used, unless you have other plans for the device.

keep in mind that you will need huge amount of RAM and/or Flash to store these pictures in your microcontroller.

Presumably there will just be circular groups of LEDs lit up in solid colors to simulate the real signs, so I wouldn't think it would be necessary to store the entire pixel pattern for each image. You could have an array that gives the pixel positions for each "circle" that needs to be lit up, then another small array that gives the desired color pattern for each pattern that needs to be displayed on the sign.

For the two types of signals shown, the NJT variant will utilize all of the LEDs. However, later on the signal post will be used for other railroads signals as well since railroad signals aren’t federally governed and there are many color/position combinations across the nation (USA). I just want to start out by using the two types mentioned above (Amtrak & NJT). I’m looking for an outline on how to get this done before I start so I know exactly what I need to do

Approximately how many LEDs per sigh?

V4D3R:
how would I go about adding more RAM to the arduino?

frankly spoken: you not at all. Choose an appropriate micro controller with enough resources for your project.

Start with a small prototype on an Uno. You will get experience and you can calculate how much memory you will really need.

you could have an array that gives the pixel positions for each "circle" that needs to be lit up,

that was my idea also. Nevertheless, he will need to store each ligthed LED, given the examples I estimate around 50 per small circle. Plus some color information. Multiplied by the maximum amount of circles, multiplied by the total number of patterns...

noiasca:
fevertheless, he will need to store each ligthed LED, given the examples I estimate around 50 per small circle. Plus some color information. Multiplied by the maximum amount of circles, multiplied by the total number of patterns...

The example sign has a total of 13 different small "circles", a few of those appear to be in the same position on both the top and bottom sign, so possibly could be reduced to 9. With 50 LEDs per circle, a 2-dimensional array of integers giving the pixel positions would be at most 13 * 50 * 2 bytes = 1300 bytes, and could be stored in program memory. If the real sign has a fixed color for each circle, then for each light pattern you only need to store whether the circle is lit or not, so a 16-bit value can store that information using each bit to represent a circle, and storing the actual color information separately. I don't have time to research it at the moment, but I'm sure someone has found a way in either fastled or adafruit neopixel to use the same led buffer for multiple strings of pixels, so you could also same some memory doing that, since this sign is very unlikely to need to be updated at extremely rapid intervals.

For now I’d say around 1,800 (600 per head and 3 heads total)

I posted two days ago about making a railroad signal post using a circular matrix. I made some graphics in order to convey the plan easier so more people can help out with how I'd go about this. Attached is a revised matrix (still a 10" circular head but with WS2812B SMD LEDs instead and with a lower count), an NJT type signal and an Amtrak type to show how I'd like to have the heads lit.

Layout:

NJT Type Signal:

Amtrak Type Signal:

I'd like to know how the three heads would be wired to the Arduino and basically how to program them for my requirements. Thank you.



(updated with img tags by moderator)

Wasn't sure if the images uploaded in the post so here's a download for the post layout.


(posted with image tags by moderator)