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.
β¨ Features
- Weather Display: Current conditions from OpenWeatherMap
- Time Sync: Accurate time via NIST time servers
- News Headlines: Displays RSS news feeds
- Indoor Climate: Temperature and humidity from a DHT11 sensor
- Wi-Fi Status: SSID, IP, and signal strength info
- IR Remote Control: Navigate menus and trigger functions
- Modular Architecture: Add new views and data sources easily
- Pixel Art & Custom Characters: Fun, animated display options
π οΈ 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
The custom case was designed for 3D printingβSTL files are available in the enclosure/ folder for download and printing.
π§° External Libraries
- LCD I2C:
duinowitchery/hd44780@^1.3.2
- IR Receiver:
crankyoldgit/IRremoteESP8266@^2.8.6
- DHT Sensor:
- Data Parsing:
bblanchon/ArduinoJson @ ^7.4.2
π§± 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
Clone this repository
Install PlatformIO (recommended via VS Code)
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
Wire your hardware according to the diagram above
Build and upload to your ESP8266 board
π§ͺ Planned Features & TODOs
- Local server to push messages remotely
- Pixel art & fun LCD animations
- Custom character support
- Wi-Fi AP setup
- EEPROM settings storage
- View pagination and transitions
- Wi-Fi signal strength indicator
-
secrets.h
add a blank to the repository