Since most transmitters and receivers are sold in very specific bandwidths (usually 434 Mhz, 315Mhz) there is little you can do to avoid having to broadcast multiple signals together. There is a way to detune sensors and using perfect antennas to increase resonance, but this is not an optimal solution.

I will describe a stochastic way that you can reduce noise. It’s stochastic because it doesn’t *always* work, but it *works most of the time*! That’s good enough for most of us! The principle is simple. Say you have two sensors that can be triggered at the same time. If you give the sensors a random delay there is a higher probability that they won’t send data at the same time depending on the delay.

This can be formalized to get the exact probability for an optimal case. Suppose that you tell each sensor that it can choose any of 12 “blocks” of time to transmit the signal. The probability that both sensors will transmit at the same time will be 1/12, so collisions only happen 8.3% of the time. Not so good. Now suppose you allow each sensor to choose any *six* of the 12 blocks. You’ll be able to transmit successfully as long as *one block* from each sensor is not overlapping. They won’t overlap as long as you don’t have each sensor transmitting on the same set of six blocks. This will happen 1 / (12 choose 6) = 1 / 924 times, which is is ~0.1% of the time for two sensors. Pretty good!

You run into a problem with the above if you use more sensors. Say, now, you have *three* sensors instead of two. Instead of having to avoid only one set of collisions (sensor 1 & 2), now you have 3 sets of collisions (sensor 1 & 2, sensor 2 & 3, sensor 1 & 3, essentially 3 choose 2). Also you can’t have each use six blocks, because then you will guarantee a full collision. Instead, you can allot each sensor 4 of the 12 possible blocks. Now the collision probability becomes 1 / (12 choose 4) * (3 choose 2) = 0.6% of the time. Still very good!

It turns out that the subset of blocks that each sensor can use is optimized by using the total number of blocks / maximum possible colliding sensors. How many blocks then should you use? It’s best to use as few as possible because each block could take 100’s of milliseconds to seconds, and you would have long lags in your signal. If you graph the above (assuming three maximal possible colliding sensors) you can see that the collision probability percentage decreases almost exponentially as you increase the number of blocks. Even with *three* colliding sensors, if you use 12 blocks (maybe 80ms/block would make this about ~1 second) you still can transmit without collisions 99.5% of the time and the transmission will will only take ~1 second! Fantastic!

Now, to be honest, I haven’t tested this. But I will be building such a network in the near future and posting about it when it works (or doesn’t)!

Also, if this little shpeel sounds very familiar, please let me know where I can find more info! I’m sure it exists somewhere, but it doesn’t hurt to derive things oneself.

## Recent Comments