|
| 1 | +# WebScreen Firmware |
| 2 | + |
| 3 | +**WebScreen - Stay Connected, Stay Focused** |
| 4 | + |
| 5 | +## Project Description |
| 6 | + |
| 7 | +WebScreen is an open-source project that provides firmware for a customizable secondary display that sits atop your monitor like a webcam. Powered by an ESP32-S3 microcontroller and featuring a vibrant AMOLED display, WebScreen brings essential notifications, reminders, and visuals directly into your line of sight. This repository contains the source code and instructions to build and customize your own WebScreen device. |
| 8 | + |
| 9 | +## Features |
| 10 | + |
| 11 | +- **AMOLED Display**: High-quality display with 240 x 536 resolution and 16.7 million colors. |
| 12 | +- **ESP32-S3 Microcontroller**: Ensures smooth operation and robust performance. |
| 13 | +- **Wi-Fi and Bluetooth Connectivity**: Stay connected with wireless capabilities. |
| 14 | +- **Customizable Firmware**: Open-source code allows for personal modifications and enhancements. |
| 15 | +- **Micro SD Card Support**: Load custom JavaScript applications and store additional data. |
| 16 | +- **LVGL Graphics Library**: Advanced graphics handling for a rich user interface. |
| 17 | + |
| 18 | +## Hardware Requirements |
| 19 | + |
| 20 | +- **ESP32-S3 Development Board** |
| 21 | +- **RM67162 AMOLED Display** |
| 22 | +- **Micro SD Card (optional)** |
| 23 | +- **Supporting Components**: Resistors, capacitors, connectors as per the BOM. |
| 24 | + |
| 25 | +## Software Requirements |
| 26 | + |
| 27 | +- **Arduino IDE**: For compiling and uploading the firmware. |
| 28 | +- **LVGL Library**: Graphics library for the display ([LVGL GitHub](https://github.com/lvgl/lvgl)). |
| 29 | +- **Elk JS Engine**: Lightweight JavaScript engine for embedded systems. |
| 30 | +- **Wi-Fi and Networking Libraries**: For network connectivity. |
| 31 | + |
| 32 | +## Installation Instructions |
| 33 | + |
| 34 | +1. **Set Up Arduino IDE**: |
| 35 | + - Install the latest version of the [Arduino IDE](https://www.arduino.cc/en/software). |
| 36 | + - Add the ESP32 board support to your Arduino IDE. Instructions can be found [here](https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md). |
| 37 | + |
| 38 | +2. **Clone This Repository**: |
| 39 | + ```bash |
| 40 | + git clone https://github.com/yourusername/webscreen-firmware.git |
| 41 | + ``` |
| 42 | + |
| 43 | +3. **Install Required Libraries**: |
| 44 | + - Open the Arduino IDE and navigate to **Sketch** > **Include Library** > **Manage Libraries**. |
| 45 | + - Install the following libraries: |
| 46 | + - **LVGL** |
| 47 | + - **WiFi** |
| 48 | + - **ESPping** |
| 49 | + - **ArduinoJson** |
| 50 | + - **YAMLDuino** |
| 51 | + - **SD_MMC** |
| 52 | + |
| 53 | +4. **Configure Pin Definitions**: |
| 54 | + - Review and modify `pins_config.h` according to your hardware setup. |
| 55 | + |
| 56 | +5. **Compile and Upload**: |
| 57 | + - Open the desired `.ino` file in the Arduino IDE. |
| 58 | + - Connect your ESP32-S3 board to your computer via USB. |
| 59 | + - Select the correct board and port under **Tools**. |
| 60 | + - Click **Upload** to compile and upload the firmware to your device. |
| 61 | + |
| 62 | +## Usage Instructions |
| 63 | + |
| 64 | +- **Connecting to Wi-Fi**: |
| 65 | + - The firmware reads Wi-Fi credentials from the `/webscreen.yml` file on the SD card. |
| 66 | + - Ensure your SD card contains the `webscreen.yml` file with your network SSID and password. |
| 67 | + |
| 68 | +- **Interacting with the Display**: |
| 69 | + - The device displays notifications and visuals based on the firmware logic. |
| 70 | + - You can customize the displayed content by modifying the firmware or loading custom JavaScript applications via the SD card. |
| 71 | + |
| 72 | +- **Running JavaScript Applications**: |
| 73 | + - Place your JavaScript files on the SD card. |
| 74 | + - The Elk JS engine will execute the scripts, allowing for dynamic functionality. |
| 75 | + |
| 76 | +## File Structure |
| 77 | + |
| 78 | +- `main.cpp`: The main firmware file containing the setup and loop functions. |
| 79 | +- `pins_config.h`: Pin definitions and configurations. |
| 80 | +- `rm67162.h` / `rm67162.cpp`: Driver code for the RM67162 AMOLED display. |
| 81 | +- `elk.h`: Header file for the Elk JS engine. |
| 82 | +- `notification.h`: Header file for the notification image resource. |
| 83 | +- `other .ino and .cpp files`: Additional examples and functionalities. |
| 84 | + |
| 85 | +## Contributing |
| 86 | + |
| 87 | +We welcome contributions from the community! If you'd like to contribute: |
| 88 | + |
| 89 | +1. Fork the repository. |
| 90 | +2. Create a new branch for your feature or bugfix. |
| 91 | +3. Commit your changes and push to your fork. |
| 92 | +4. Create a pull request detailing your changes. |
| 93 | + |
| 94 | +## License |
| 95 | + |
| 96 | +This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details. |
| 97 | + |
| 98 | +## Acknowledgments |
| 99 | + |
| 100 | +- **LVGL**: Open-source graphics library. |
| 101 | +- **Elk JS Engine**: Embedded JavaScript engine. |
| 102 | +- **Arduino Community**: For the development environment and extensive libraries. |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +**WebScreen—Stay Connected, Stay Focused.** |
| 107 | + |
| 108 | +Support us and be among the first to experience the future of personalized displays. |
| 109 | + |
| 110 | +# Short Description |
| 111 | + |
| 112 | +WebScreen is an open-source project featuring firmware for a customizable secondary display that attaches atop a monitor. Powered by an ESP32-S3 microcontroller and a 240×536 AMOLED display, it brings essential notifications directly into your line of sight. All design files—including hardware schematics, PCB layouts, BOM, firmware, and enclosure designs—are released under the MIT license. Users can create custom JavaScript applications to run on the device via a micro SD card, fostering community-driven innovation and personalization. |
| 113 | + |
| 114 | +# Project Keywords |
| 115 | + |
| 116 | +WebScreen, customizable display, open-source hardware, ESP32-S3, AMOLED display, JavaScript applications, notifications, productivity, gaming, streaming, personalization. |
0 commit comments