ELRS open source project address https://github.com/ExpressLRS/ExpressLRS/
ELRS firmware configurator https://github.com/ExpressLRS/ExpressLRS-Configurator/
It is assembled using modules (ESP32 master + E28 radio), with guaranteed quality and effect, and easy to make. -----Simple version v0
supports OLED display, RGB indicator light, 2507 cooling fan. -----v1.3, v2
support 5-way button joystick ------v1.3, v2, v3
support TFT IPS color screen, support backpack function -------v3
V0 Simple version launcher Suitable for all ages with few
components Just a few modules are easy to make.
There is an RGB light to check the status: power, refresh rate, WiFi mode, frequency binding mode, etc.
Suitable for opentx and EDGETX open source systems, no need for fancy screen display and buttons, because the parameters can be adjusted remotely
without fans, E28 is not too hot, stick a heat sink of about 12X14mm, passive heat dissipation can suppress the power within 250mw.

Step
1. First adjust the DC step-down module to 3.45V (then apply tape on the back to insulate it), and switch E28 to select the external antenna.

3. Solder the ESP32 module, 3216 tantalum capacitor 10uf, 10k resistor, and boot button.
You can use a 10-yuan "PTC heating station/LED desoldering station" for soldering: pre-tin the pad with a soldering iron (apply flux paste if possible), place the components one by one, move the PCB to the heating station and heat it for a while until the tin melts and the soldering is done. The victory of the hand-clumsy party
4. Flash the firmware with the USB TTL serial port tool (CH340) and connect to the PCB board:
TTL transmitting PCB
TX---------RX
RX---------TX
3.3V-------3.3V
GND-------GND
Note that the serial port tool must be 3.3, don't connect 5V! ! !
5. Press and hold the BOOT button to connect to the computer USB port.
Select the target DIY_2400_TX_ESP32_SX1280_E28 in the ground station and use the UART flashing method. No need to change the pin definition of any source code.
Check the parameters and the frequency password and click Start.
After the prompt is successful, disconnect all connections, then weld the B2541 socket, RGB light, DC buck module, E28 module, and connect the IPEX1 adapter and 2.4G antenna to E28.
Tips: You can use WiFi to flash the machine in the future.
6. Install the STL printed shell, insert the RC remote control, turn off the built-in RF radio frequency, turn on the external RF CRSF protocol, download the elrx lua file to the remote control and open it to see if the recognition is successful.
For non-OpenTX and EdgeTX open source remote controls, you can also check the RGB indicator on the transmitter: rainbow color change = starting, red flash = RF chip/module not detected, orange flash per second = not connected to the remote control or non-crsf protocol, green double flash = WiFi update, blue double flash = Bluetooth analog joystick, single color always on = connected to the receiver, single color breathing light = not connected to the receiver.
V1.3 OLED screen first experience, external camera parameter adjustment board control
2021.12.07
initial verification version, ELRS 2.0 will be released when the design is adapted to directly support the OLED function of the default firmware.
The OLED module is directly plugged in, and the female header used is welded on the board to connect with the OLED. The female header must not be higher than 7mm. Use the corresponding high-frequency head shell print file V1.3 in the attachment.
Later, this version was used to successfully verify the joystick control function, through the external camera parameter adjustment board.

The production process refers to version V0
[v1.3 Use an external camera parameter adjustment board to adjust the screen parameters: use the firmware provided in the attachment (without the frequency password), or modify the target file and compile your own firmware (recommended). ]
For a while, the joystick used GPIO25, and now it is 35, so after the parameter adjustment board is connected, if the buttons don’t work, try both firmwares.
To use the joystick function, you need to modify the following files based on the official one:
src/include/target/DIY_2400_TX_ESP32_SX1280_E28.h
1. Add the enable button function at the beginning
#define HAS_FIVE_WAY_BUTTON
2. Define the ESP32 GPIO pin used by the joystick button
#define GPIO_PIN_JOYSTICK 35
3. Set the voltage divider value in each direction of the five-way joystick
// The external camera parameter adjustment board of the V1.3 board uses this
/* Joystick values {UP, DOWN, LEFT, RIGHT, ENTER, IDLE}/
#define JOY_ADC_VALUES {2839, 2191, 1616, 3511, 0, 4095}
V2 version Integrated OLED and buttons
2022.01.18
Separately design the upper PCB board, integrated OLED 0.96 4-pin I2C module direct plug, integrated 5-way button joystick.
The high-frequency head shell modeling has been completed.
It has not been fully verified and will not be released for the time being. Subsequent pit filling
V3 version IPS color screen + button + backpack + fan fully integrated
2022.03.18
See the attachment for full set of information download
Features:
Modular assembly E28, ESP32, DCDC voltage regulation, single-sided integration.
Cool color screen, 5-dimensional button, backpack function, cooling fan, RGB light.
Simple shell is easy to print, and the screen button fan is fixed on the transmitting motherboard.
1. ESP32 module, ESP32-WROOM UE without antenna is recommended, or ESP32 U and other 32 modules with the same interface are all OK. If you use a pcb antenna, you need to cut it off.
2. Ebyte e28 2g4m27s RF module, lora modulation signal, SX1280 chip. You need to replace the resistor to use an external antenna and cut the pcb antenna.
3. The extended display board is plugged into the transmitter board through a 1.27mm female row to reduce the complexity of the shell.
4. 0.96-inch TFT color display with a resolution of 160x80, supports plugging in bare screen 8P and welding bare screen 13P.
5. The 5-way button controls the screen, and the high-frequency head can be externally powered by USB, which is convenient for non-open source remote control.
6. The launch board and expansion board are basically single-sided layout, which is convenient for welding with a ten-dollar "LED desoldering station" to reduce the difficulty of production.
7. The cooling fan can be fixed on the launch board and not higher than the bottom box space to reduce the complexity of the shell.
8. JR socket B2541BW is not easy to buy. You can consider buying 2.54 offset pin female headers (5p, the extra ones can be cut), which have been designed with corresponding pads. When buying female headers, pay attention to the plastic height not exceeding 7.1mm, otherwise the contact will be poor.
9. Thanks to AXIS for promoting color screens. The boot interface temporarily uses his pictures.
10. The 5-dimensional buttons use voltage divider resistors 5K, 5K, 10K, and 20K (5K can be equivalent to 2 10K stacked high). According to the schematic diagram, the values obtained by voltage division are 1/3, 1/2, 2/3, 4/5, 0, and 1. According to the pin sequence 16342- and *4096, the values of 'up, down, left, right, and middle' are 1365, 3276, 2048, 2730, 0, and 4095.
11. The simple shell is easy to print.
12. The external interface 1.25 socket can be connected to an external 5-24v power supply, and the external input Sport remote control signal can be used to lead to the tx rx flash port. (Newly added in v3.2 version)
Note:
1. First adjust the DC step-down module to 3.45V (then apply tape on the entire back for insulation), switch E28 to select the external antenna, and cut the pcb antenna.
2. The external power supply is recommended to be greater than 7V.
3. High frequency head fan cooling fan 25x25x7mm, mounting hole 20x20mm fixed to the launch board, the fixing method is up to you. Note that the blades cannot touch the E28 and the shell.
4. Flash the launcher, solder the minimum necessary components ESP32 module, 3216 tantalum capacitor 10uf, adjacent 10k resistor, boot button, three 100 ohm resistors. (Short circuit must be tested after soldering) Use USB-TTL tools (ch340g, etc.), connect according to the instructions on the bottom, press boot and connect to the computer.
5. You can flash the ordinary DIY E28 firmware on the ground station first, and then enter wifi to flash the TFT color screen firmware I provide.
6. If only the middle button of the 5-dimensional button is effective, please remove it and rotate it 180 degrees for soldering, because different manufacturers may swap the 5-pin com ground with the 2-pin cent. When desoldering the SMD module, insert a thin razor blade when the soldering iron heats the pins, and the pins can be separated one by one.
7. The backpack function on the back of the launch board needs to be flashed with 01f before soldering ESP32 to communicate with 01f.
8. If the RGB light does not work, consider rotating it 180 degrees to mark which foot is facing the upper left. To be compatible with different pin definitions.
9. When soldering, open the corresponding html file to view the placement of components.
For a TFT screen using a plug-in cable, the thickness of the two PCB boards should be 1.6mm;
JR bottom box inner height 17-stud 4.5, available height 12.5; - Button height 2mm (1.5mm including the screen) - Upper PCB board, i.e. expansion board 1.6mm - 1.27 pin row plastic 1.7mm - 1.27 row mother plastic height 4.6mm - Bottom pcb launch board 1.6mm = 1mm Reserve the gap between the screen and the upper cover of the box.
If a soldered TFT screen 13p is used, because the cable occupies the space at the bottom of the screen, it is recommended that the PCB thickness is 1.2mm and the 1.27 row mother plastic height is 4.3mm. To use the joystick function, you need to modify the following files src/include/target/DIY_2400_TX_ESP32_SX1280_E28.h
based on the official one 1. Add the enable button function at the beginning #define HAS_FIVE_WAY_BUTTON 2. Define the ESP32 GPIO pin used by the joystick button #define GPIO_PIN_JOYSTICK 35 3. Set the voltage divider value for each direction of the five-way joystick // The V3 version of the TFT expansion display board has five-dimensional buttons (5k5k10k20k voltage divider) using this / Joystick values {UP, DOWN, LEFT, RIGHT, ENTER, IDLE}*/ #define JOY_ADC_VALUES {1365, 3276, 2048, 2730, 0, 4095} Voltage divider value calculation method: The joystick is connected to 3.3V through a 10K resistor to obtain a reference voltage. Measure the joystick - GND voltage reading V when pressing different direction buttons, V / 3.3 x 4096 = values.