{"id":37651781,"url":"https://github.com/vpuhoff/lora-esp32","last_synced_at":"2026-01-16T11:34:39.246Z","repository":{"id":281160840,"uuid":"944393768","full_name":"vpuhoff/lora-esp32","owner":"vpuhoff","description":"This project implements a configurable LoRa communication system using either ESP32 or ESP32-S3 microcontrollers. It features a comprehensive web-based management interface for real-time monitoring, configuration, and logging. ","archived":false,"fork":false,"pushed_at":"2025-08-11T13:24:48.000Z","size":171,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-11T14:33:05.128Z","etag":null,"topics":["arduino","configurable","esp32","esp32-arduino","esp32-s3","lcd-display","lora","webapp","wifi"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpuhoff.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-07T09:17:12.000Z","updated_at":"2025-08-01T20:35:47.000Z","dependencies_parsed_at":"2025-03-22T18:29:42.367Z","dependency_job_id":"df2d2b4f-cada-4f44-ab6a-3cb91eb7c14f","html_url":"https://github.com/vpuhoff/lora-esp32","commit_stats":null,"previous_names":["vpuhoff/lora-esp32"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vpuhoff/lora-esp32","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpuhoff%2Flora-esp32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpuhoff%2Flora-esp32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpuhoff%2Flora-esp32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpuhoff%2Flora-esp32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpuhoff","download_url":"https://codeload.github.com/vpuhoff/lora-esp32/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpuhoff%2Flora-esp32/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","configurable","esp32","esp32-arduino","esp32-s3","lcd-display","lora","webapp","wifi"],"created_at":"2026-01-16T11:34:39.180Z","updated_at":"2026-01-16T11:34:39.239Z","avatar_url":"https://github.com/vpuhoff.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LoRa ESP32/ESP32-S3 Project with Web Interface\n\n## Description\nThis project implements a configurable LoRa communication system using either ESP32 or ESP32-S3 microcontrollers. It features a comprehensive web-based management interface for real-time monitoring, configuration, and logging. The system tracks packet delivery statistics, supports different WiFi operating modes, and provides visual feedback via LED indicators.\n\n* **Wiki:** [https://deepwiki.com/vpuhoff/lora-esp32](https://deepwiki.com/vpuhoff/lora-esp32/1-overview)\n\n## Stats\n![Alt](https://repobeats.axiom.co/api/embed/c7087f8d6372144d07c65d970e4d3a6bfc5a89fb.svg \"Repobeats analytics image\")\n\n\u003e **Important Note:**  \n\u003e Display functionality (ST7735S LCD) is enabled only on ESP32 boards. For ESP32-S3 boards the display is currently disabled **only because a second display is not available for testing yet**. This is a temporary limitation and may be revisited in future revisions.\n\n## Supported Hardware\n- **Microcontrollers:** \n  - ESP32 (DOIT ESP32 DEVKIT V1 recommended)\n  - ESP32-S3 [WeAct ESP32-S3-A DevKitC-1](https://mischianti.org/weact-esp32-s3-a-devkitc-1-high-resolution-pinout-datasheet-and-specs/?ysclid=m81uskhvyj967706428)\n- **LoRa Module:** [SX1278](https://www.semtech.com/products/wireless-rf/lora-connect/sx1278)\n- **Display:** ST7735S 1.44\" 128x128 LCD (SPI interface)  \n  *(Note: Only supported on ESP32 boards. For ESP32-S3 boards, the display is disabled only due to the lack of a second display for testing.)*\n- **Charging Module:** [TP4056](http://kungur.hldns.ru/pdf/TP4056.pdf)\n- **Battery:** [Nokia BL-4C](https://www.wildberries.by/catalog/16442322/detail.aspx)\n- **Case:** [3d printed](https://www.thingiverse.com/thing:6973923)\n- **Power Options:** \n  - USB power\n  - Battery power with TP4056 charging module (e.g., Nokia BL-4C)\n\n## Wiring\n\n### ESP32-S3 to LoRa SX1278\n| SX1278 | ESP32-S3 (GPIO) |\n|--------|-----------------|\n| 3.3V   | 3.3V            |\n| GND    | GND             |\n| NSS    | GPIO10          |\n| DIO0   | GPIO9           |\n| SCK    | GPIO12 (default SPI)  |\n| MISO   | GPIO13 (default SPI)  |\n| MOSI   | GPIO11 (default SPI)  |\n| RST    | GPIO14          |\n\n### ESP32 to LoRa SX1278\n| SX1278 | ESP32 (GPIO) |\n|--------|-------------|\n| 3.3V   | 3.3V        |\n| GND    | GND         |\n| NSS    | GPIO15      |\n| DIO0   | GPIO4       |\n| SCK    | GPIO18 (default SPI) |\n| MISO   | GPIO19 (default SPI) |\n| MOSI   | GPIO23 (default SPI) |\n| RST    | GPIO14      |\n\n### ESP32 to ST7735S LCD Display\n| ST7735S | ESP32 (GPIO) |\n|---------|-------------|\n| VCC     | 3.3V        |\n| GND     | GND         |\n| SCL     | GPIO18 (shared SPI SCK) |\n| SDA     | GPIO23 (shared SPI MOSI) |\n| RES     | GPIO17 (TFT_RST) |\n| DC      | GPIO16 (TFT_DC) |\n| CS      | GPIO5 (TFT_CS) |\n| BLK     | GPIO22 (TFT_LED) or 3.3V |\n\n*Note: There is no display wiring for ESP32-S3 as the LCD display is disabled on that platform.*\n\n## Features\n\n### Core Functionality\n- Automatic dual-way LoRa packet transmission with acknowledgment system\n- Dynamic statistics tracking (total packets, delivery success rate, RSSI)\n- Multi-core task management (LoRa operations on Core 1, Web interface on Core 0)\n- Configurable system parameters via web interface\n- Visual feedback via LED/RGB indicators for system status\n- LCD display for real-time information and status monitoring *(only on ESP32 boards)*\n- CPU and memory usage monitoring with detailed task statistics\n\n### LoRa Configuration\n- Adjustable Spreading Factor (SF7-SF12)\n- Configurable Bandwidth (7.8kHz to 500kHz)\n- Selectable Coding Rate (4/5 to 4/8)\n- Transmission power control (2-20 dBm)\n- Maximum transmission attempts setting\n\n### Web Interface\n- Six main sections: Dashboard, LoRa Status, Logs, Settings, Display, and System Monitor\n- Real-time statistics with visual graph of packet delivery success\n- Comprehensive system logs with adjustable detail levels\n- WiFi configuration supporting three modes: AP, STA, or AP+STA\n- Visual indicators for system status and packet delivery success\n- Display configuration and control options *(Note: Display settings affect only ESP32 boards)*\n- System resource monitoring and task statistics\n\n### LCD Display Interface\n- Multiple information pages with automatic scrolling *(available only on ESP32 boards)*\n- Welcome/logo page with version information\n- LoRa status page showing current configuration and statistics\n- WiFi connection status with signal strength indicator\n- System information page with memory usage and uptime\n- Recent log entries display\n- CPU monitoring page with task statistics\n- Status indicators (WiFi, LoRa, battery) in status bar\n- Information and error message pop-ups\n\n### Display Features\n- Adjustable brightness control\n- Power-saving display timeout\n- Auto-scroll functionality with configurable interval\n- Manual page navigation controls\n- Visual status indicators for WiFi and LoRa connections\n- Battery level indicator\n\n### System Monitoring\n- Real-time CPU usage statistics\n- Per-task CPU usage tracking with visual indicators\n- Memory usage and allocation monitoring\n- Dynamic stack usage monitoring for all tasks\n- Visual indication of resource-intensive tasks\n- Comprehensive task state monitoring (running, blocked, ready)\n\n## Required Libraries\n- [LoRa](https://github.com/sandeepmistry/arduino-LoRa) - LoRa module control\n- [Adafruit_NeoPixel](https://github.com/adafruit/Adafruit_NeoPixel) - RGB LED control\n- [WiFi](https://github.com/espressif/arduino-esp32/tree/master/libraries/WiFi) - Wi-Fi management\n- [LittleFS](https://github.com/lorol/LITTLEFS) - File system for ESP32\n- [GyverDB](https://github.com/GyverLibs/GyverDB) - Database storage\n- [GyverDBFile](https://github.com/GyverLibs/GyverDB) - File-based database\n- [SettingsESPWS](https://github.com/GyverLibs/Settings) - Web-based UI configuration\n- [GTimer](https://github.com/GyverLibs/GTimer) - For timing operations\n- [Adafruit_GFX](https://github.com/adafruit/Adafruit-GFX-Library) - Graphics library\n- [Adafruit_ST7735](https://github.com/adafruit/Adafruit-ST7735-Library) - ST7735 LCD driver\n\n## Espressif Framework Requirements\nFor proper system monitoring functionality, you need to install the Espressif framework:\n- Install Arduino-ESP32 using the [official Espressif documentation](https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-arduino-ide)\n- For ESP32 (non-S3), use the \"DOIT ESP32 DEVKIT V1\" board setting in the Arduino IDE\n- Make sure to enable FreeRTOS task statistics in the configuration\n\n## Installation\n\n1. Install all required libraries through the Arduino Library Manager\n2. Open the project in the Arduino IDE\n3. Select the appropriate board (ESP32 or ESP32-S3)  \n   *Note: If using ESP32-S3, be aware that the LCD display functionality is currently unavailable due to the absence of a second display for testing.*\n4. Compile and upload the code to your device\n\n## Usage\n\n### Initial Setup\n1. The device creates a WiFi access point named \"ESP32_LoRa\" with password \"12345678\" by default\n2. Connect to this network with your computer or smartphone\n3. Open a web browser and navigate to http://192.168.4.1\n4. Use the web interface to configure the device\n\n### Web Interface Navigation\n\n#### Dashboard Tab\n- Shows system status (WiFi connection, uptime, free memory)\n- Displays LoRa statistics (packets sent, delivered, success rate)\n- Real-time graph of delivery success rate over time\n\n#### LoRa Status Tab\n- Current LoRa configuration parameters\n- Transmission statistics (total packets, success rate)\n- RSSI information\n\n#### Logs Tab\n- System event logs with timestamp\n- Support for different log levels (info, warning, error, debug)\n- Log clearing functionality\n\n#### Settings Tab\n- WiFi configuration (mode selection, credentials)\n- LoRa parameters configuration\n- Device restart option\n\n#### Display Tab\n- Toggle display on/off\n- Adjust display brightness\n- Set display timeout for power saving\n- Enable/disable automatic page scrolling\n- Set auto-scroll interval\n- Buttons for manual page selection  \n  *Note: These display controls are active only on ESP32 boards.*\n\n#### System Monitor Tab\n- Real-time CPU and memory usage statistics\n- Detailed task list with:\n  - Task state (running, blocked, ready)\n  - Priority\n  - Stack usage\n  - CPU usage percentage\n- Color-coded indicators for resource usage levels\n\n### LCD Display Navigation\nThe LCD display cycles through several information pages *(only on ESP32 boards)*:\n1. **Logo page** - Displays project name and version\n2. **LoRa Status** - Shows current LoRa parameters and statistics\n3. **WiFi Status** - Shows current WiFi mode and connection details\n4. **System Info** - Displays uptime, memory usage, and CPU load\n5. **Logs** - Shows most recent system log entries\n\nThe display includes:\n- Status bar at the top with WiFi and LoRa indicators\n- Page indicator dots at the bottom\n- Pages auto-scroll by default (configurable in settings)\n\n## Operation Details\n\n### LED Indicators\n- **ESP32-S3:** Uses an RGB NeoPixel LED with color coding:\n  - Red: Packet transmission\n  - Green: Packet received\n  - Blue: Acknowledgment received\n- **ESP32:** Built-in LED blinks to indicate activity\n\n### Communication Protocol\nThe system implements a simple packet exchange protocol:\n1. Device sends \"HLO:[packet_id]\" messages at random intervals\n2. Receiving device responds with \"ACK:[packet_id]\"\n3. Statistics are updated based on successful acknowledgments\n\n### System Architecture\n- Multi-task design using FreeRTOS\n- Mutex protection for LoRa module access\n- Separate tasks for sending, receiving, web interface, and display updates\n- Stack monitoring for system health\n- CPU load monitoring with per-task statistics\n\n## Troubleshooting\n\n- If the device fails to boot or LoRa initialization fails, the LED will blink indefinitely\n- Check serial output at 115200 baud for diagnostic information\n- Web interface logs provide detailed system status and error information\n- If WiFi connection is unstable, check the configured credentials in Settings\n- LED/RGB indicators show device status:\n  - Red blinks: Transmitting packet\n  - Green blinks: Received packet\n  - Blue blinks: Acknowledgement received\n- **Display Issues:**  \n  - For ESP32 boards, if the display is not working, check its connections (especially CS, DC, and RST pins) and verify display settings in the web interface.  \n  - For ESP32-S3 boards, note that the display functionality is currently disabled due to the unavailability of a second display for testing.\n\n## Customization Options\n\n### Default Values (configurable in code)\n- **LoRa Settings:**\n  - Frequency: 433MHz\n  - Spreading Factor: SF12\n  - Bandwidth: 31.25kHz\n  - Coding Rate: 4/8\n  - TX Power: 10dBm\n  - Max Attempts: 5\n\n- **WiFi Settings:**\n  - Default AP SSID: \"ESP32_LoRa\"\n  - Default AP Password: \"12345678\"\n\n- **Display Settings:** *(Effective only on ESP32 boards)*\n  - Enabled by default\n  - Brightness: 100%\n  - Auto-scroll: Enabled\n  - Scroll interval: 5 seconds\n  - Timeout: 60 seconds\n\n### Performance Optimization\n- Adjust LoRa parameters based on your range and reliability requirements\n- For longer battery life, increase transmission intervals\n- For higher throughput, reduce Spreading Factor and increase Bandwidth\n- Reduce display brightness or increase timeout to save power\n- Monitor CPU usage in the System Monitor tab to identify resource-intensive tasks\n\n## Future Enhancements\n- Power saving modes for extended battery life\n- OTA (Over-The-Air) firmware updates\n- Additional sensor integration\n- Data logging to SD card or cloud services\n- Support for mesh networking with multiple LoRa nodes\n- Enhanced display interfaces with touch support\n- Graphical representation of RSSI and signal quality over time\n\n## Debugging\n- The system includes comprehensive logging\n- Stack usage monitoring helps identify memory issues\n- LED/RGB indicators provide visual feedback on system status\n- CPU and task monitoring helps identify performance bottlenecks\n- System Monitor tab provides detailed resource usage statistics\n\n## License\nOpen source - feel free to modify and distribute with proper attribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpuhoff%2Flora-esp32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpuhoff%2Flora-esp32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpuhoff%2Flora-esp32/lists"}