How to achieve full duplex transmission using esp32 and ebyte e34-2g4d20d

Done some Internet searching ?

If 'time division duplex' was practical for voice comms using low cost tranceiver modules, you would think its been done lots of times before.

Please keep us up to date with your progress.

And of course, since the Ebyte modules are serial based a good place to start would be to link two Arduinos by a standard UART port and first have the full duplex voice working over that link.

No idea how difficult that would be, has it been done before ?

I am sure it won't be that hard since we were able to achieve half duplex voice voice stream with NRF24l01. at the moment, I am having trust issues with ebyte so I am not sure if it would be best for my team to continue with their hardware. We are currently sourcing for a half duplex long range transceiver with a bandwidth well above NRF24l01 power amplifier variant.

Will surely update you before we delve into any serious work.

This can be found in their datasheet. as per their datasheet, e34 can transmit at approximately 2km and with a bandwidth of 2M/b. they also said it supports file transfer and full duplex transmission(which is technically false).
They have provided nothing besides what they have in their data sheet. they do not even have a half duplex arduino library for e34-2g4d20d, we had to create one for our use case. We have however asked them if they do have any other transceiver actually capable of full duplex transmission but they haven't answered yet.

In the licence free ISM bands ant at legal powers, good luck with the search.

This might be a manufacturer to avoid, especially considering that they clearly misrepresent the product.

2 Likes

Hello @srnet and @paul_kd7hb so we decided to purchase ebyte's half duplex 5km variant and we have chosen to use both on a single esp32 mcu using two of it's three designated hardware serial(UART) pins. the goal here is to use both ebyte transceiver for full duplex transmission, one for tx and the other for rx on a single esp32 board. When I first implemented this, and tried to initialize it, I had only garbled characters popping up on my Arduino serial monitor. So after I resolved this issue by reassigning the hardware serial pin using Serial1.begin(57600, SERIAL_8O1, 4, 2); I had I was able to initialize only one of both transceivers connected to the esp32 the second transceiver has refused to return any initialization data.

below is my codes:

#include "HardwareSerial.h"
#include "EBYTEE34Lib.h"

//Definning pins
#define txPIN_RX 16   // Serial2 RX (connect this to the EBYTE Tx pin)
#define txPIN_TX 17   // Serial2 TX pin (connect this to the EBYTE Rx pin)
#define txPIN_M0 18    // D19 on the board (possibly pin 19)
#define txPIN_M1 19   // D18 on the board (possibly called pin 18)
#define txPIN_AX 5   // D5 on the board (possibly called pin 5)

#define rxPIN_RX 4   // Serial2 RX (connect this to the EBYTE Tx pin)
#define rxPIN_TX 2   // Serial2 TX pin (connect this to the EBYTE Rx pin)
#define rxPIN_M0 14    // D19 on the board (possibly pin 19)
#define rxPIN_M1 27   // D18 on the board (possibly called pin 18)
#define rxPIN_AX 12   // D5 on the board (possibly called pin 5)


EBYTEE34Lib txTransceiver(&Serial2, txPIN_M0, txPIN_M1, txPIN_AX);
EBYTEE34Lib rxTransceiver(&Serial1, rxPIN_M0, rxPIN_M1, rxPIN_AX);


void setup() {
  // Initialize the serial ports
  Serial.begin(9600);
  Serial1.begin(57600, SERIAL_8O1, 4, 2);
  Serial2.begin(57600, SERIAL_8O1, 16, 17);
  txTransceiver.init();   
  txTransceiver.SetUARTBaudRate(UDR_9600);  
  txTransceiver.SaveParameters(PERMANENT);
  txTransceiver.PrintParameters(); 

  Serial.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

  rxTransceiver.init();   
  rxTransceiver.Reset();                                                        // Inicializa a comunicação e obtem todos os parâmetros do módulo
  rxTransceiver.SaveParameters(PERMANENT);
  rxTransceiver.PrintParameters();    
}


void loop() {
  // put your main code here, to run repeatedly:

}

I suspect it's because I reassigned a pair of the Hardware Serial pin. Any push in the right direction would much help thanks.

Does that library documentation actually allow two copies to exist in one program?

I had the same concern too but I never really checked. However, our e34 library was built from this e32 library "E32 Library link"

please have a look to see if the it might support multiple instances of the library. If not, a push at any online material that could help improve the library to enable it to support multiple instances of the transceiver would really help.

Did you disable the code for the device that worked to see if the second device would now respond?

Okay, I could try that. I presume you want us to determine if the second one failed due to config/connection issue or library issue.... Will do that and revert soonest.

Thank you!

Yes, that is called detective work. Discover who is being bad, Also know as program debugging.

1 Like