Introduction: ESP32 and Radio Lora 10x More Powerful!

About: Do you like technology? Follow my channel on Youtube and my Blog. In them I put videos every week of microcontrollers, arduinos, networks, among other subjects.

Can you imagine a 1W Radio LoRa that is 10 times more powerful than the traditional 0.1W ones? Well today I’ll introduce you to the E44-TTL-1W module, which is exactly this. This model has a transistor in the output that amplifies its signal, extending its reach. We will configure this module for use with an MCU or PC, and create an example of communication between the computer and an ESP32.

However, it’s important to note that power isn’t everything, folks. A friend told me that with his 500 milliwatt amateur radio, he could reach in Japan. Power helps of course, but it’s not everything.

Step 1: E44-TTL-1W

The E44-TTL-1W is a 1W wireless transceiver module with LoRa spectral scattering technology. It operates at 900 ~ 931MHz, and is based on the RFIC SX1276, which is imported, an original Semtech, with available transparent transmission, and at the TTL level.

The advantages of these modules are that they are more concentrated on power density and feature better anti-interference performance.

The module has the function of encryption and data compression.

The data compression function decreases the transmission time and the probability of interference, while improving transmission reliability and efficiency.

This module is TX RX, basically. It has control and power pins, but it is turned on in the UART. We can say that this model drastically simplifies communication with LoRa.

One detail is that it is not LoRaWAN within the chip, but instead, a proprietary LoRa protocol from YBT.

In the image below, we can see a STM8L151G that uses little current, as well as the famous SX1276.

Step 2: E15-USB-T2 V1.2

We have the module on the left side of the image, which visually looks like a flash drive. It will be connected to the computer. On the right, we have the schematic that shows each pin of this device.

Step 3: Characteristics

1. LoRa

High-reliability. Extremely low possibility of being intercepted.

2. Ultra-low power consumption

It supports WOR (wake on radio) to reduce overall power consumption.

3. Fixed transmission

The module can communicate with other modules working on different channels and addresses.

4. Broadcast transmission

Setting the module address to 0xFFFF enables communication with other modules on the same channel.

5. Forward Error Correction (FEC)

In the event of sudden interference, it is possible to correct the interfering data packets proactively, so that the reliability and bandwidth are improved.

6. Sleep Mode

When the module works in sleep mode (mode 3), it is available for configuration, but not for transmitting and receiving. (6μA)


It has an integrated watchdog. When an exception occurs, the module will restart after 0.107 seconds and continue working in-accordance to the previous parameters.

8. Parameter saving

The parameters will be saved after setup and will not be reset when off.

Step 4: Pin Definition

Step 5: Modes of Operation

Step 6: Configuration

To enter configuration mode, we need to place the E15-USB module with the pins indicating Sleep mode. To do this, disconnect the indicator jumpers from pins M0 and M1, as shown in the image below.

Download the RF Setting program through the link below:

RF Setting V3.45

In image we see the configuration screen using the RF Setting program

Step 7: We Will Now See How to Configure Our Module:

1. Open the RF Setting program.

2. Select the COM port corresponding to the module.

3. Click OpenPort to gain access.

4. Now click GetParam to get the parameters saved in the module.

5. Modify the parameters according to your needs. (Main: UartRate, Address, and Channel)

6. After modifying the parameters, click SetParam. The data is now saved in the module.

7. Click ClosePort to end the configuration with the module.

If you want to reset the default settings, just click on Preset.

Step 8: How to Use

After the settings are completed, we can now use our E44-TTL-1W module for communication with either a MCU (microcontroller) or a PC.

To use the PC, simply connect the E44-TTL-1W module to the E15-USB module, as shown below.

Step 9: On a PC

Remember that for use in the computer, we configure the mode through the pins of the E15-USB module. The figure below shows how to connect / disconnect the jumpers for each mode.

Step 10: On an MCU

To use with a microcontroller, just make the connections shown on the figure.

Step 11: Example

We will now show an example of how to control the LEDs and a Buzzer of an ESP32 through the computer. The commands will be sent by a terminal, and the ESP32 will receive them through the radio LoRa.

Step 12: Operation

The PC sends data through the Serial to the module, which transforms that data into radio frequency LoRa, and then sends it. The module receives the data via radio and sends it to the ESP32 via the Serial.

Step 13: Settings

The two E44-TTL modules must be configured as shown in the image.

Step 14: On a PC

After connecting the E44-TTL-1W module to the E15-USB module, place it in the computer and use A terminal for Serial communication. For example, the termite.

Step 15: In ESP32

We will create a program that will check the commands to control the LEDs or the buzzer when receiving data from the LoRa radio.

Step 16: Library

Add library "TM1637Display".

Access the link and download the library.

Unzip the file and paste it into the libraries folder of the Arduino IDE.

C: / Program Files (x86) / Arduino / libraries


For this project, I created the following command protocol for control:

Step 18: In ESP32

We include the library responsible for communication with the display and initialize the display on the pins we define.

//Biblioteca responsável para comunicação com o display de 7 segmentos
#include <TM1637Display.h> // Module connection pins (Digital Pins) #define CLK 14 #define DIO 13 const uint8_t PIN_BUZZER = 23; const uint8_t PIN_LED1 = 22; const uint8_t PIN_LED2 = 21; const uint8_t PIN_LED3 = 19; const uint8_t PIN_LED4 = 18; //Inicializa o display nos pinos definidos acima TM1637Display display(CLK, DIO); String data = ""; int counterReceive = 0; String idMCU = "MCU_1";

In Setup, we set the brightness of the display, and move on to the Loop.

void setup() {
Serial.begin(9600); //configura o brilho do display com valor máximo display.setBrightness(0x07); display.showNumberDec(0); configurePins(); } void loop() { if(Serial.available()) { while(Serial.available()) { data+=(char); } data.replace("\n",""); if(data.equals("CHECK")) { Serial.println(idMCU+" OK"); counterReceive++; //imprime no display o valor lido display.showNumberDec(counterReceive); } else { parserData(); counterReceive++; //imprime no display o valor lido display.showNumberDec(counterReceive); } data = ""; } }

Step 19: ParserData

In this step, we proceed with the parser of the received data and verify the commands related to the LED and the Buzzer.

//faz o parser dos dados recebidos para identificar o comando
void parserData() { char command = data[0]; // Serial.print(command); if(command == 'L') { uint8_t led = data[1]-'0'; uint8_t value = data[2]-'0'; configureLed(led, value); } else if(command == 'B') { uint8_t value = data[1]-'0'; digitalWrite(PIN_BUZZER, value); } else if(command == 'A') { uint8_t value = data[1]-'0'; allLeds(value); } }

Step 20: ConfigureLED

Set the connection or disconnection of the LED according to the value passed.

void configureLed(uint8_t led, uint8_t value)
{ switch(led) { case 1: digitalWrite(PIN_LED1, value); break; case 2: digitalWrite(PIN_LED2, value); break; case 3: digitalWrite(PIN_LED3, value); break; case 4: digitalWrite(PIN_LED4, value); break; default: break; } }

Step 21: AllLeds & ConfigurePins

With AllLeds, we will set the value passed to all the LEDs at once. Also, we will set the mode of the pins as output.

void allLeds(uint8_t value)
{ digitalWrite(PIN_LED1, value); digitalWrite(PIN_LED2, value); digitalWrite(PIN_LED3, value); digitalWrite(PIN_LED4, value); } void configurePins() { pinMode(PIN_BUZZER, OUTPUT); pinMode(PIN_LED1, OUTPUT); pinMode(PIN_LED2, OUTPUT); pinMode(PIN_LED3, OUTPUT); pinMode(PIN_LED4, OUTPUT); }

Step 22: Files

Download the files: