Max Holthaus

DisplayGadget

DisplayGadget is a modular, extensible dashboard for ESP8266-based microcontrollers with a 20x4 I2C LCD display. It provides real-time data such as weather, time, Wi-Fi status, news headlines, and indoor climate. Users can navigate views and trigger actions using an infrared (IR) remote.

Front view of DisplayGadget

✨ Features

πŸ› οΈ Hardware Setup

Component ESP8266 Pin
LCD SDA D2
LCD SCL D1
IR Receiver Data D5
DHT11 Sensor Data D6

Supported boards include NodeMCU, Wemos D1 mini, and other ESP8266 variants.

Enclosure

Real photo The custom case was designed for 3D printingβ€”STL files are available in the enclosure/ folder for download and printing.

🧰 External Libraries

🧱 Project Structure

DisplayGadget/
β”œβ”€β”€ src/                        # Source code
β”‚   β”œβ”€β”€ main.cpp                # Arduino entry point
β”‚   β”œβ”€β”€ system/                 # Core system logic
β”‚   β”‚   β”œβ”€β”€ controller.*        # App lifecycle & control logic
β”‚   β”‚   β”œβ”€β”€ view_controller.*   # Manages switching between views
β”‚   β”‚   β”œβ”€β”€ display.*           # LCD rendering utilities
β”‚   β”‚   └── ir_receiver.*       # IR remote decoding
β”‚   β”œβ”€β”€ views/                  # UI views (screen modes)
β”‚   β”‚   β”œβ”€β”€ view.*              # Base abstract class for all views
β”‚   β”‚   β”œβ”€β”€ default_view.*      # Shows time, weather, and DHT sensor data
β”‚   β”‚   β”œβ”€β”€ news_view.*         # Displays RSS news feed
β”‚   β”‚   └── menu_view.*         # Menu interface (e.g. settings, actions)
β”‚   β”œβ”€β”€ network/                # Networking and APIs
β”‚   β”‚   β”œβ”€β”€ network.*           # Wi-Fi connection and utility functions
β”‚   β”‚   β”œβ”€β”€ weather.*           # OpenWeatherMap API integration
β”‚   β”‚   β”œβ”€β”€ time_utils.*        # Time synchronization with NIST
β”‚   β”‚   └── rss_reader.*        # RSS news headline parser
β”‚   └── sensors/                # Sensor integrations
β”‚       └── dht_sensor.*        # DHT11 temperature/humidity interface
β”œβ”€β”€ include/                    # Header files (optional if used)
β”œβ”€β”€ lib/                        # External libraries (if manually included)
β”œβ”€β”€ data/                       # SPIFFS or LittleFS data (optional)
β”œβ”€β”€ secrets.h                   # Wi-Fi & API keys (excluded from version control)
β”œβ”€β”€ platformio.ini              # PlatformIO build configuration
└── README.md                   # Project documentation

πŸš€ Getting Started

  1. Clone this repository

  2. Install PlatformIO (recommended via VS Code)

  3. Configure your secrets.h:

    #define WIFI_SSID "your-ssid"
    #define WIFI_PASS "your-password"
    #define OPENWEATHERMAP_API_KEY "your-api-key"
    #define NEWS_URL "your-rss-url"
    #define TIMEZONE_OFFSET -6 // e.g., CST
    #define DAYLIGHT_SAVING_TIME 1
    
  4. Wire your hardware according to the diagram above

  5. Build and upload to your ESP8266 board

πŸ§ͺ Planned Features & TODOs