3
\$\begingroup\$

I am thinking of a system where 10 or so peripherals need to receive 30-50B of data every 50-ish milliseconds (each peripheral gets unique data). The total throughput required might not be huge (6-10kB/s) but the problem lays in the number of devices which need to receive the data.

I've looked into using BLE but even though the total throughput lies well within the maximum possible ~35kB/s, what I want is not possible due to the hard limit of 20ms Connection Intervals. Another solution I considered is using a simple RF transmitter and RF receivers which all listen to it simultaneously. I'd have to manually take care of error correction etc but I would not have to worry about switching between the receivers which takes precious time. A problem with that would also include the inability to have two of such systems deployed near one another without the risk of the transmitters talking over one another.

So what other solutions are available to me?

\$\endgroup\$
  • \$\begingroup\$ How would a receiver indicate to the transmitter it has a data error? What would then happen? Does the data include payload and address and preamble bits? \$\endgroup\$ – Andy aka Jan 5 '16 at 15:52
  • 1
    \$\begingroup\$ You might be able to use BLE as a beacon, there isn't a connection you just throw data out for all to hear. I'm not sure on the specifics (hence comment not answer) but something to look into \$\endgroup\$ – Gorloth Jan 5 '16 at 15:53
  • \$\begingroup\$ @Andyaka - it wouldn't. In this case missing a piece of data every now and then would not hurt the system, as long as the receiver knows the received data was invalid. \$\endgroup\$ – Sanuuu Jan 5 '16 at 16:00
  • 2
    \$\begingroup\$ @Sanuuu In that case, you don't need point-to-point and can go for a broadcast solution which may be faster and more simple. \$\endgroup\$ – JimmyB Jan 5 '16 at 16:15
2
\$\begingroup\$

I suspect that using nRF24L01+ transceivers would solve this for you. Theoretically good for 1 or 2Mbps, less acknowledgements and some packet overhead and you should still be able to sustain over 100kbps of user data without any dramatic effort.

\$\endgroup\$
  • \$\begingroup\$ NRF24L01+ would definitely be capable, I was going to recommend them. \$\endgroup\$ – whatsisname Jan 6 '16 at 5:51
  • \$\begingroup\$ Thanks, I think those would work well, especially with the added bonus of relatively low cost per unit! \$\endgroup\$ – Sanuuu Jan 11 '16 at 14:15
2
\$\begingroup\$

You could take a look at the IEEE 802.15.4 protocol. There are lots of transceivers out there. This would allow you to transmit all device data for all peripherals in one packet every 50ms (on air time for a packet like this will be <1ms). Assuming that you don't need a mesh network, this could work nicely for you and minimize latency.

IEEE 802.15.4 radios use CDMA, so they will not stomp on each other when transmitting in the same RF space.

Without a mesh network, you'd be running a star configuration with the "master" at the center of the hub and your peripherals acting as points on your star.

Good luck - sounds like a fun project.

\$\endgroup\$
2
\$\begingroup\$

Get a simple 433 MHz transmitter and a few of receivers, send a data preamble, then an address then the data then a couple of byte CRC. If you need to send data to specific receivers then embed address and data into one long stream intersperced with CRCs so that the right receiver knows what it's looking for. In other words develop a simple protocol and buy some cheap TX and RX and you should be in business. 433 MHz may not be allowed in your country but there will be a frequency that is.

\$\endgroup\$
  • \$\begingroup\$ As I said in my original question - I've considered this solution and deemed it not appropriate because of crosstalk when more than one transmitter is being used. \$\endgroup\$ – Sanuuu Jan 6 '16 at 9:45
  • 1
    \$\begingroup\$ You can easily extend this to two systems by either using a different frequency band or having the two transmitters respect each other's time usage. \$\endgroup\$ – Andy aka Jan 6 '16 at 9:48
  • \$\begingroup\$ Time - the transmitter would need to be working pretty much continually with the data rate I need so time usage splitting would not be feasible. Also, I'd rather use the same hardware in all systems I build, so manually selecting different freq for the transducers would not work. \$\endgroup\$ – Sanuuu Jan 6 '16 at 10:09
  • \$\begingroup\$ Go for twice the data rate or find ways to reduce the payload data. As an aside both are sensible things to do anyway. \$\endgroup\$ – Andy aka Jan 6 '16 at 11:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.