Smart feeding mode controller for aquarium systems with touch display support.
Note: This project was generated with assistance from GitHub Copilot (Claude Sonnet 4.5)
| Main Screen | Menu |
|---|---|
![]() |
![]() |
| Dashboard | Settings |
|---|---|
![]() |
![]() |
- Touch Display Interface - Beautiful LVGL-based UI
- Multi-Platform Support
- Red Sea ReefBeat Cloud Integration
- Tunze Smart Hub Integration
- Tasmota Device Control
- WiFi Management - Easy setup via captive portal
- Web Interface - Full configuration via browser
- Auto-Reconnect - Reliable network handling
- Screensaver - Configurable display timeout
- ESP32-4848S040 - JCZN 4.0" 480x480 RGB Touch Panel
- Waveshare ESP32-S3-Touch-AMOLED-1.8 - 1.8" 368x448 AMOLED
| Feature | ESP32-4848S040 | Waveshare AMOLED |
|---|---|---|
| Display | 480x480 RGB | 368x448 AMOLED |
| Touch | GT911 | FT3168 |
| Relays | 3x | - |
| WiFi | β | β |
| Web UI | β | β |
- PlatformIO (recommended) or Arduino IDE
- ESP32 board support
- Clone the repository
git clone https://github.com/mistljo/feeding_break.git
cd feeding_break- Open in PlatformIO
code . # VS Code with PlatformIO extension-
Select your board
- For ESP32-4848S040: Use environment
esp32s3 - For Waveshare AMOLED: Use environment
waveshare_amoled
- For ESP32-4848S040: Use environment
-
Build and Upload
# For ESP32-4848S040
pio run --target upload --environment esp32s3
# For Waveshare AMOLED
pio run --target upload --environment waveshare_amoled- Configure WiFi
- On first boot, device creates WiFi AP "FeedingBreak_Setup"
- Connect with password:
ChangeMe123!(change this insrc/config.h!) - Follow setup wizard on touch screen
- Touch display will show WiFi setup on first boot
- OR: Connect to AP and visit http://192.168.4.1
- Enter your WiFi credentials
Configure via Web Interface (http://YOUR_DEVICE_IP/):
- Email/Username
- Password
- Select Aquarium
- Email/Username
- Password
- Select Device
- Add device URLs
- Configure pulse time (auto-on after feeding)
Access at http://YOUR_DEVICE_IP/
Features:
- Start/Stop feeding mode
- Configure cloud services
- Device information
- WiFi settings
- Factory reset
This repository is safe for public sharing:
- β No hardcoded passwords
- β No WiFi credentials in code
- β All credentials stored in ESP32 Flash (Preferences)
- β Configured at runtime via Web/Touch UI
Before Deployment:
- Change default AP password in
src/config.h - Use strong passwords when configuring services
- Keep Web Interface secure (consider adding authentication)
feeding_break/
βββ src/
β βββ main.cpp # Main application
β βββ config.h # API endpoints & defaults (NO SECRETS!)
β βββ credentials.h # Credential management (Flash storage)
β βββ board_config.h # Hardware pin definitions
β βββ display_lvgl.h # Display & touch driver
β βββ menu_ui.h # Main menu interface
β βββ wifi_ui.h # WiFi setup interface
β βββ redsea_api.h # Red Sea API integration
β βββ tunze_api.h # Tunze API integration
β βββ tasmota_api.h # Tasmota device control
βββ platformio.ini # Build configuration
βββ README.md # This file
- Check
platformio.inifor correct board selection - Verify board define:
-DBOARD_ESP32_4848S040or-DBOARD_WAVESHARE_AMOLED_1_8
- Factory reset: Hold button for 10 seconds (if available) or use Web UI
- Check Serial Monitor for connection details
- FT3168 controller may not respond properly
- Touch will auto-disable after 5 failed attempts
- Use Web Interface as alternative
- Log level set to WARN to reduce spam
- Touch controller errors are normal if not properly initialized
- System remains functional via Web Interface
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is open source. Please add your preferred license here.
- LVGL - Embedded graphics library
- Arduino_GFX - Display driver
- ESPAsyncWebServer - Async web server
- ArduinoJson - JSON library
- GitHub Issues: For bug reports and feature requests
- Discussions: For questions and community support
Made with β€οΈ for the aquarium community



