many to one RF433mhz

I need to send data from at least 10 rf433 transmitter to one receiver… The transmitters are connected individually on a Attiny45, and the station that will contain the RX, is one Arduino Uno. For now, I have just one pair of this devices but for my project I need 10 transmitters. There will be interference? There’s a way to send all the data from the TX at the same time, or I’ll have to send it one by one? If the last one is the only option, how to do this control?
Basically, I need a network of these RF modules to send sensor data to my station connected to a Arduino.
Thanks for the help and sorry for my english…

Greetings from Brazil

All will send independently of the others, yes? So occasional corruption cannot be avoided. If each sends its data 2-3 times, and the data burst sent is not long, then the receiver can drop any corrupted messages or partial messages or messages that come in too long, and most of the time the data will be received ok. If you have a way to synchronize time between them all (say each gets time from its own GPS module), then you could coordinate sending - initial unit sends at 0 seconds, next at 1, then at 2,3,4,6,7,8,9, then back to 0 (10 seconds later) for the initial unit again. Or every 1/2 second, etc. or whatever rate your receiver can accept them.

Yes, they send data independently. I’ll find a way to try as you suggested about synchronize the time between the devices.

I thought about define different delay before sending the data for each Attiny45, this can work well?

For example:

#include <Manchester.h>;

#define TX_PIN 0
#define LED_PIN 1
#define MOTOR_PIN 2

float tension = 0;
int transmit_id = 42000;
int transmit_tension = 0;

void setup() {
  pinMode(LED_PIN, OUTPUT);

void loop() {
  tension = analogRead(MOTOR_PIN);
  transmit_tension = tension;

this is my transmitters code
if I define different delays for each transmitters, delay(100),delay(200)… etc. This can work?

I'll find a way to try as you suggested about synchronize the time between the devices.

That is nearly impossible without a wired connection, because the individual clocks drift. You need to plan on messages that collide and are rejected by error detection. VirtualWire does that for you.

VirtualWire does that for you.


So if i use VirtualWire, transmitting from 10 rf devices will not be a problem? I mean, using this library all the data can be sent simultaneous?

What kind of 433 transmitters so you have?

The easiest way to do what you want is to use 433 Transceivers, ie bi directional, and operate the system in a Master Slave relationship, so that the device thats receiving the data controls when the 10 transmitters send.

I have this:

Thanks for the help... But I'm really interested to use what I have, at least until I have no other options. In fact, I was thinking about to capture all the data in a certain time and send after elapsed another amount of time on each device. Maybe using the milli() function. I'm just finding some difficulties to program this, but I'm trying and I can post the results in a little while... If someone has another idea, please let me know. Anything will be helpful.

Thanks again to all that already helped me.

Your transmit code is too simplistic. Use Virtualwire/Radiohead to encode the message and send it, and to receive it and toss out corrupted messages.

So if i use VirtualWire, transmitting from 10 rf devices will not be a problem?

Not a big problem, if you plan for losing messages due to collisions.

It is not hard to see how to proceed. If a message takes 1 second to send, then in a 10 second interval 9 other transmitters could each send a message, if they were all properly timed.

However, the clocks will all drift so even if you start them off perfectly synchronized, that won't last and messages eventually will overlap.

Sometimes people send a burst containing multiple copies of the same message and hope one gets through. Obviously, that reduces the number of transmitters that can be active.

It depends on how you slice the time.