Skip to content

gogo-boot/mystation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

103 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MyStation

ESP32-powered e-paper display showing real-time public transport departures and weather information

PlatformIO ESP32 License: LGPL v3

✨ Features

  • 🚌 Real-time departures from German public transport (RMV API)
  • 🌀️ Weather information from German Weather Service (DWD)
  • πŸ“± Mobile-friendly web configuration - no app installation needed
  • πŸ”‹ Ultra-low power with deep sleep (months of battery life)
  • πŸ“‘ WiFi connectivity with automatic location detection
  • πŸ”’ Privacy-focused - all processing happens locally on device
  • 🎨 E-paper display - outdoor-readable, low power consumption
  • πŸ”˜ Physical buttons - quickly switch display modes
  • πŸ”„ OTA updates - update firmware over WiFi

🎯 Supported Hardware

  • ESP32-C3 Super Mini - Compact, cost-effective
  • ESP32-S3 - Enhanced performance, battery monitoring
  • 7.5" E-Paper Display (800x480) - GDEY075T7 or compatible

πŸš€ Quick Start

1. Hardware Assembly

Wire your ESP32 to the e-paper display. See detailed pin connections:

2. Firmware Setup

# Clone repository
git clone https://github.com/yourusername/mystation.git
cd mystation

# Build and upload with PlatformIO
pio run --target upload
pio run --target uploadfs

3. Device Configuration

  1. Power on your device
  2. Connect to MyStation-XXXXXXXX WiFi network
  3. Open browser and configure:
    • Your home WiFi network (2.4 GHz only)
    • Preferred transport station
    • Display preferences

πŸ“– Complete Quick Start Guide

πŸ“š Documentation

For Users

For Developers

Reference

πŸ—οΈ Architecture

MyStation is designed for simplicity and efficiency:

  • ESP32 Controller - Manages WiFi, deep sleep, and data fetching
  • E-Paper Display - Low-power outdoor-readable screen
  • Web Interface - Easy configuration via WiFi
  • APIs - Google Geolocation, RMV Transport, DWD Weather
  • Deep Sleep - Battery-optimized operation

Data Flow

flowchart LR
    ESP32[ESP32 Device] -->|Location| Google[Google API]
    ESP32 -->|Departures| RMV[RMV API]
    ESP32 -->|Weather| DWD[DWD API]
    ESP32 -->|Display| EPD[E-Paper]
    User((User)) -->|WiFi Config| ESP32
Loading

πŸ“– Detailed Architecture

🎨 Display Modes

MyStation supports three display modes:

  • Half & Half - Weather + Departures side-by-side (landscape)
  • Weather Only - Full screen weather information
  • Departures Only - Full screen departure board

Switch modes using physical buttons or web interface.

πŸ“– Display System Documentation

πŸ”‹ Power & Battery

  • Deep Sleep: <50ΞΌA between updates
  • Active Mode: ~100mA during data fetch
  • Battery Life: 2-4 months with 2500mAh battery (5-minute updates)
  • Smart Scheduling: Reduced updates during night hours

πŸ“– Boot Process & Power Management

🌍 Coverage

  • Transport: Hesse, Germany (RMV network)
    • Frankfurt, Wiesbaden, Kassel, Darmstadt, etc.
    • Trains, buses, trams, S-Bahn
  • Weather: Germany and surrounding areas (DWD)
  • Extensible: Adapt for other regions/APIs

πŸ› οΈ Development

Prerequisites

  • PlatformIO IDE (VS Code recommended)
  • ESP32-C3 or ESP32-S3 development board
  • API keys (Google, RMV)

Project Structure

β”œβ”€β”€ docs/                   # Documentation
β”œβ”€β”€ include/               # Header files
β”‚   β”œβ”€β”€ api/              # API interfaces
β”‚   β”œβ”€β”€ config/           # Configuration
β”‚   └── util/             # Utilities
β”œβ”€β”€ src/                  # Source code
β”‚   β”œβ”€β”€ api/             # API implementations
β”‚   β”œβ”€β”€ config/          # Configuration management
β”‚   β”œβ”€β”€ display/         # Display rendering
β”‚   └── main.cpp         # Main application
β”œβ”€β”€ test/                # Unit tests
└── platformio.ini       # Build configuration

Contributing

  1. Fork the repository
  2. Create feature branch
  3. Test thoroughly
  4. Submit pull request

πŸ“– Development Guide

πŸ“„ License

This project is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0).

What this means:

  • βœ… You can use this software for personal or commercial purposes
  • βœ… You can modify the code to fit your needs
  • βœ… You can distribute the software and modifications
  • ⚠️ If you modify this code, you must release your modifications under LGPL-3.0
  • ⚠️ If you distribute, you must include the source code or provide access to it
  • βœ… You can link this library with proprietary software without making your entire application LGPL

Key Points:

  • Modifications to this code must remain open source (LGPL-3.0)
  • Applications using this library can remain proprietary
  • Commercial use is permitted
  • Patent grant and protection included

See LICENSE for the full license text.

Third-Party Licenses

This project uses the following open-source libraries:

  • GxEPD2 - GPL-3.0 (E-paper display driver)
  • ArduinoJson - MIT
  • WiFiManager - MIT
  • ESPAsyncWebServer - LGPL-3.0
  • U8g2 - BSD

πŸš€ Ready to build your own departure board? Start with the Quick Start Guide β†’