This repository contains the current ESP32-S3 experiments for a LoRa link and an OLED display. It includes two ESP-IDF applications, an Arduino transmitter, and a Wokwi simulation configuration.
This ESP-IDF application is an OLED bring-up test. It configures an SSD1306-
compatible display on I2C, using SDA on GPIO18, SCL on GPIO17, reset on GPIO21,
and address 0x3C. It initializes the display, clears the framebuffer, draws
HELLO and ESP32-S3 with a small built-in 5x7 font, refreshes all eight OLED
pages, and then remains alive in a FreeRTOS task loop.
The display test currently confirms the basic I2C and OLED initialization path; it is separate from the LoRa receiver application.
This is the main ESP-IDF application for the LR1121 radio on the EoRa-HUB- 900TB board. The ESP32-S3 communicates with the radio over SPI2 using:
- SCK: GPIO9
- MOSI: GPIO10
- MISO: GPIO11
- NSS: GPIO8
- BUSY: GPIO13
- DIO1: GPIO14
- RESET: GPIO12
The firmware resets the LR1121, waits for the BUSY signal, selects LoRa packet mode, configures the radio, and starts continuous reception. It polls DIO1, reads the IRQ status, retrieves received data from the LR1121 buffer, filters non-printable payloads, and prints text packets to the serial console.
The current radio configuration is 868.125 MHz, bandwidth 125 kHz, spreading
factor 9, coding rate 4/5, a 12-symbol preamble, a 0x1212 sync word, and a
maximum payload of 255 bytes. A local E80 transmission test is currently
enabled and sends E80_TEST every five seconds before returning to receive
mode. See lora_receiver/README.md for the detailed
status and open validation points.
This Arduino sketch drives an E220 module through SoftwareSerial on RX GPIO2
and TX GPIO3. It opens the USB serial console at 9600 baud, opens the E220 link
at 9600 baud, and sends HELLO every five seconds. It is a simple external
transmitter used to validate the radio link; its radio configuration must match
the LR1121 settings.
diagram.json contains a minimal ESP32-S3 board connected to the Wokwi serial
monitor. wokwi.toml points Wokwi to the hello_world firmware artifacts after
the project has been built locally.
The repository currently provides:
- A compiling ESP-IDF OLED test application.
- A compiling ESP-IDF LR1121 receiver with SPI, reset, BUSY, DIO1, RX buffer, IRQ handling, and serial diagnostics implemented.
- A basic Arduino E220 transmitter that sends periodic test messages.
- VS Code tasks for building, flashing, and monitoring both ESP-IDF projects.
- A portable ESP-IDF launcher that detects a local installation through
IDF_PATHor the standard~/.espressiflocation.
Hardware interoperability, final radio parameter confirmation, RSSI/SNR reporting, and automated hardware tests remain to be completed.
- ESP-IDF installed and configured on the test machine
- Espressif ESP-IDF VS Code extension (optional for terminal commands)
- Python 3.10 or newer
The .vscode/run-idf.sh launcher is intended for macOS/Linux. It uses
IDF_PATH when it is set. Otherwise, it automatically searches for an ESP-IDF
installation in ~/.espressif. For an installation in another location, set
IDF_PATH in the terminal before running a VS Code task.
On Windows, use the ESP-IDF terminal provided by Espressif or the tasks generated by the ESP-IDF extension.
- Clone the repository and open its root folder in VS Code.
- Install and configure ESP-IDF for the local machine.
- Run
Tasks: Run Task. - Choose
Hello World: buildorLoRa receiver: build, then the matchingflash and monitortask to flash the board.
The serial port is requested when the flash task starts. build/ directories
are generated locally and must not be committed.