[0.15] Wireless Signaling (via railway network)
Posted: Tue May 30, 2017 6:41 am
After some experimentation, I've successfully managed to send 1 bit of information via Factorio rail network - without using wires.
Essentially, for as long as there's a railway connection between two points, information can be transmitted.
Just slowly. And in small amounts.
Setup is actually quite simple:
I. Transmitter station. It needs to be disabled most of the time. When you need to send a signal, enable the station for 40-50 ticks and disable again.
II. Receiver station. It can be located anywhere. A railway connection must be available to Transmitter station (i.e. a train must be able to path), but not necessarily in the other direction.
III. Antenna train. It's placed on Receiver station, and has orders to move between Receiver and Transmitter stations continuously.
Since Transmitter station is disabled most of the time, the Antenna train will stay on Receiver. However as soon as Transmitter is enabled, train starts moving, and that can be detected at the Receiver station. After 40-50 ticks the Transmitter is disabled again, and the Antenna train immediately returns back to Receiver station, getting ready to receive the next signal.
Best results have been achieved with 1-0-1 Antenna train, as it's "back-and-forth" cycle is the shortest.
In the Receiver corner, note how the exit to the main track is blocked by two signals: first is used to detect the Antenna train movement, second is set to block on "Anything=1", which is always true, preventing the Antenna train from actually leaving anywhere in case of any mistakes in signal setup.
Testing train is doing a loop between two stations for illustration purposes. The exit from the bottom station is covered by a wire-controlled signal, which is blocked with "Yellow=0" condition. In other words, the train can only leave the station when Antenna train has started moving and turned the signal at Receiver exit to yellow. This creates the effect of testing train being "summoned" from the Transmitter station.
Obviously, this can be used for other purposes as well, not just train summoning.
Obviously since it's possible to send a single bit, it's also possible to send arbitrary amounts of information using this system. Transmitter setup is actually quite compact - since no train ever arrives to the Transmitter stations, a bunch of them can be packed quite densely onto a single rail appendix. Receiver setup has a larger footprint, but nothing extraordinary. And once you have several trains, there are different methods to pack information with them:
1. Activating transmitter stations in different order. This provides for N! possible values (where N is total number of transmitter/receiver station pairs).
2. Using different intervals between station activations (Morse principle). Provides for (N-1)*M possible values (where M is number of different intervals).
3. Keeping transmitter stations active for different periods of time (Morse principle again). Provides for N*M possible values.
Of course coding and decoding that data might be a bit complicated. But in a community that made a video player, I'm fairly optimistic.
Essentially, for as long as there's a railway connection between two points, information can be transmitted.
Just slowly. And in small amounts.
Setup is actually quite simple:
I. Transmitter station. It needs to be disabled most of the time. When you need to send a signal, enable the station for 40-50 ticks and disable again.
II. Receiver station. It can be located anywhere. A railway connection must be available to Transmitter station (i.e. a train must be able to path), but not necessarily in the other direction.
III. Antenna train. It's placed on Receiver station, and has orders to move between Receiver and Transmitter stations continuously.
Since Transmitter station is disabled most of the time, the Antenna train will stay on Receiver. However as soon as Transmitter is enabled, train starts moving, and that can be detected at the Receiver station. After 40-50 ticks the Transmitter is disabled again, and the Antenna train immediately returns back to Receiver station, getting ready to receive the next signal.
Best results have been achieved with 1-0-1 Antenna train, as it's "back-and-forth" cycle is the shortest.
Testing Setup Screenshot
On the screenshot, we can see Transmitter station in the appendix at top left corner, and Receiver station in a larger appendix in the bottom right corner. Two combinator setups are located at Transmitter station: first will generate an X=1 signal for 1 tick periodically, second will convert that signal to a prolonged (50 ticks) Green=1 signal, which is used to enable the station. That's not necessarily the most optimal combinator setup though, just the one I cobbled together for testing purposes.In the Receiver corner, note how the exit to the main track is blocked by two signals: first is used to detect the Antenna train movement, second is set to block on "Anything=1", which is always true, preventing the Antenna train from actually leaving anywhere in case of any mistakes in signal setup.
Testing train is doing a loop between two stations for illustration purposes. The exit from the bottom station is covered by a wire-controlled signal, which is blocked with "Yellow=0" condition. In other words, the train can only leave the station when Antenna train has started moving and turned the signal at Receiver exit to yellow. This creates the effect of testing train being "summoned" from the Transmitter station.
Obviously, this can be used for other purposes as well, not just train summoning.
Testing Setup Blueprint
The main advantage of this system is that it works on any distances for as long as there's a railway connection. There's no need to extend the circuit network across the entire map if you only want to send a couple bits worth of information.Obviously since it's possible to send a single bit, it's also possible to send arbitrary amounts of information using this system. Transmitter setup is actually quite compact - since no train ever arrives to the Transmitter stations, a bunch of them can be packed quite densely onto a single rail appendix. Receiver setup has a larger footprint, but nothing extraordinary. And once you have several trains, there are different methods to pack information with them:
1. Activating transmitter stations in different order. This provides for N! possible values (where N is total number of transmitter/receiver station pairs).
2. Using different intervals between station activations (Morse principle). Provides for (N-1)*M possible values (where M is number of different intervals).
3. Keeping transmitter stations active for different periods of time (Morse principle again). Provides for N*M possible values.
Of course coding and decoding that data might be a bit complicated. But in a community that made a video player, I'm fairly optimistic.