Full-Duplex Network



  • I'm working on a sensor network (similar to MySensors) for Arduino Pro Mini and a RPi (using nrf24l01+ and a websockets gateway for a future web app).

    When I found out about this site I already had invested a lot of my time doing this, but I relate myself a lot with this project.

    Today I want to share my latest experience with full duplex networks. I'm using 2 nrf24l01+ radios for each node: one for writing (TX) and another to read (RX):

    Level 0 Node : (0)      Radio1: RX, Channel A | Radio2: TX, Channel B
    Level 1 Nodes: (1-5)    Radio1: RX, Channel B | Radio2: TX, Channel A
    Level 2 Nodes: (n1-n5)  Radio1: RX, Channel A | Radio2: TX, Channel B
    

    There are several (theoretical) advantages in using this:

    • with 2 different channels the collision rate between messages is smaller.
    • dedicated radios for RX and TX means no delay in switching between radio listening and writing.
    • smaller delay/lag between action request and event occurrence .
    • better overall speeds.
    • better reliability(?)

    I'm just starting to get my first results with this approach using only 2 nodes (for now). I'm using RF24 library from TMRh20 (thanks for the help! πŸ˜‰ ) but I never got these kind of speeds [www.youtube.com/watch?v=mODflsK1Ab0], probably because of some differences in physical/environment conditions. I got lower speeds, so, instead of absolute values, I can claim around 50% increase in transfer rate speeds and even better improvement in round-trip time between 2 nodes.

    I don't have a large network (yet) to verify improvements in a busy networks, but either way, it's not easy to assess the real benefits of a full-duplex network.

    I would like to hear your feedback and suggestions about this... Do you think the benefits will be worth the extra radio or am I just wasting time on this? Is this something that may be considered in MySensors?

    Here are some pictures of the my nodes with custom pcb for wiring both radios:

    image.jpg
    IMG_20141204_083033.jpg IMG_20141204_082937.jpg IMG_20141204_083059.jpg


  • Hero Member

    I am wondering if with a setup as you point out above you can really have full duplex in real life scenarios.

    The two antennas are very close together and I think the isolation is less than 10 dB. The architecture of the receiver is that it has a wide-band LNA so suppose you are receiving a signal at -70 dBm and the other radio is transmitting at 0 dBm. With 10 dB antenna isolation that means it couples in at -10 dBm.

    The -10 dBm (although on a other frequency) will clip the wide-band LNA so that you will no longer be able to decode the -70 dBm wanted signal anymore.

    I can claim around 50% increase in transfer rate speeds and even better improvement in round-trip time between 2 nodes.

    I am surprised... What kind of distance is there between the two nodes?



  • I am surprised... What kind of distance is there between the two nodes?

    about 5 meters with 1 wall between.

    what do you think should be the minimum distance between them in order to avoid that kind of interference? any particular orientation between them that should be better?


  • Hero Member

    @sfam You're not getting all kinds of MCU interference with those radios being so close?



  • Most of my tests were done connecting arduino and radios with jumper wires... so probably most of the time the radios were a few centimeters apart. This design with custom pcb has only a few days...

    Now that you both mention possible interference between them, I did notice a reduction the maximum range, but not writing failures or other issues... when in range, all worked smoothly!

    what you think minimum distance should be? if interference issue is solved, what you guys think about this?


  • Hero Member

    @sfam:

    what you think minimum distance should be?

    Hard to say, I do not know what is the radiation pattern of the antennas and orientation can make a big difference.

    The best thing you can do is either accept the reduced range or experiment moving the antennas out of each other and changing their orientation relative to each other.

    Still a nice idea to make a full-duplex link. Do you have any special plans with it?



  • @daulagari said:

    Still a nice idea to make a full-duplex link. Do you have any special plans with it?

    Main goal is speed and reliability.

    Speed will allow better real-time interaction. When someone hits "lights on" button, they expect it to turn on instantly. Reliability, because they expect it to work every time!

    I'm just trying to make the most out of these networks. Most of my nodes won't be battery powered, so the extra power consumption is not an issue. The same goes for the cost of an extra radio per node.

    I'll do more tests regarding distance and orientation between radios.


  • Hero Member

    Main goal is speed and reliability.

    Speed is no goal for me me using MySensors, I see one second reaction time as no problem.

    Reliability is I think everybody cares about and for that it can be good to use/scan multiple frequencies as the 2.4 GHz band can be quite crowded.

    I'll do more tests regarding distance and orientation between radios.

    That would be good; if you come to some conclusions it would be great I you can share them.



  • this will never ever make good result with this so close together hooked modules they kill the HF of each other...



  • I am building a similar full duplex network...and I am having problems with two nrfs at a single node ... can you help me with the code ?



  • I solved it ...was quite easy ... thanks anyway... I'll post the code soon since it is not on web till now..



Suggested Topics

55
Online

11.4k
Users

11.1k
Topics

112.7k
Posts