nRF24L01, Help me choosing the right wireless module

Hello,

I am new to Arduino and I think what I am trying to achieve a fairly simple data transaction.

what I'm trying to do is have one pc connected to one master Arduino mega and have seven wireless slave Arduino nanos to send flex sensor value to their master simultaneously. so it would be one master receiver and 7 slaves transmitters.

I've been looking at nRF24L01, but it seems like it only allows to have 6 as the maximum number of slaves.

Please let me know if there's any suggestion on other modules or on how connecting 7 slaves to the master.

have seven wireless slave Arduino nanos to send flex sensor value to their master simultaneously.

Do you really mean you want to have seven transmitters all transmitting at exactly the same time and being received by one receiver ?

You make no mention of the distances involved, how far apart the transmitters and receiver are ?

They are going to be positioned next to each other

Do the slaves have to send at precisely the same time, or could you do it sequencially?

if with a slight delay, receiving the value sequencially would do.

Actually, I am thinking the maximum distance between the slaves will be 7 meters. I am building some sort of flex sensor controllers

Have a look at this Simple nRF24L01+ Tutorial.

Wireless problems can be very difficult to debug so get the wireless part working on its own before you start adding any other features.

The examples are as simple as I could make them and they have worked for other Forum members. If you get stuck it will be easier to help with code that I am familiar with. Start by getting the first example to work

It includes an example for a master and 2 slaves that can easily be extended to a larger number of slaves.

...R

Didn't look at Robin's reference, but with multiple slaves, you need to poll them sequentially - one after the other - so that they respond only when the master invites them.

This is the only way to ensure reliability, not only of reception but of timing accuracy since if you permit slaves to contest, you will be completely unsure of their eventual success.

Paul__B:
Didn’t look at Robin’s reference, but with multiple slaves, you need to poll them sequentially

That’s what it does.

There are situations where that is not very practical but then a more complex solution is required so let’s leave that until we hear from the OP.

…R

Paul__B: Didn't look at Robin's reference, but with multiple slaves, you need to poll them sequentially - one after the other - so that they respond only when the master invites them.

This is the only way to ensure reliability, not only of reception but of timing accuracy since if you permit slaves to contest, you will be completely unsure of their eventual success.

I disagree.

You have to account for disturbed or missing packets anyway, because that is an inherent property of a shared medium. Collisions between 'slaves' just add to that problem.

You can not guarantee any transmisssion, but you are able to detect a successful transmission.

Whandall: You can not guarantee any transmisssion, but you are able to detect a successful transmission.

IMHO if a system can use polling it makes the management much easier.

...R

Robin2:

You can not guarantee any transmisssion, but you are able to detect a successful transmission.

IMHO if a system can use polling it makes the management much easier.

Master/slave and listener/talker architectures are governed by the quoted fact.

Retries can be configured to minimize multiple collisions, one could write code to software retry if that this still does not work.

There are many ways to skin a cat.

Why does the system need to be wireless? The distances are not great.

Why nrf24? Did you consider other types of wireless communication, e.g. WiFi or Bluetooth?

What function is the Mega performing? Simply relating data from an nrf24 receiver to the pc?

I would suggest as an alternative to use esp8266 devices such as Wemos mini. These could communicate directly with the pc over WiFi.

Whandall: You have to account for disturbed or missing packets anyway, because that is an inherent property of a shared medium. Collisions between 'slaves' just add to that problem.

Then why do you disagree? Polling necessarily requires that polls are acknowledged before the next slave, but prevents collisions.

Paul__B: Then why do you disagree? Polling necessarily requires that polls are acknowledged before the next slave, but prevents collisions.

That scheme blocks the whole system if one slave fails.

Polling does not solve the problem of collisions, it only prevents the slaves from colliding, which is not a problem if the data rate is moderate.

Whandall: That scheme blocks the whole system if one slave fails.

Not necessarily. Retry count. Or just keep on cycling.

What policy you implement all depends on the relative importance of getting every slave response against how quickly. The point remains - polling is the most time (and overall) efficient method in a fixed system where all slaves will be similarly active.

"Moderate" generally means less than 30% of bandwidth.

Whandall: That scheme blocks the whole system if one slave fails.

I really think you are being disingenuous. You know perfectly well that a non-blocking system of polling is easy to devise.

...R

Robin2:
I really think you are being disingenuous.

No, I’m not. I was commenting

Polling necessarily requires that polls are acknowledged before the next slave

which blocks if the polled node is failing.

Whandall: which blocks if the polled node is failing.

I think you are being too literal. The absence of an acknowledgement just lets the master know there is a problem. How it reacts to that is in the hands of the programmer. Moving on to the next slave is not complicated.

...R