An ESP32-based IoT feeding system firmware project built with PlatformIO. The system integrates Wi-Fi connectivity, device state management, display output, button input, and a web interface for controlling and monitoring the device.
This project was developed as part of a team-based IoT feeding system. My main contribution focused on most of the ESP32 firmware, including the main application logic, device state handling, display integration, button interaction, Wi-Fi handling, and embedded reliability features.
I also contributed to the web server component, but that part was not developed fully independently by me.
- ESP32 firmware built with PlatformIO
- Wi-Fi connectivity handling
- Web server integration
- Device state management
- Display manager
- Button input handling
- Logging utility
- LittleFS web styling through
data/style.css - Modular C++ structure
I worked on most of the firmware independently, including:
- Main application flow
- Device state management
- Display integration
- Button input logic
- Wi-Fi connection handling
- Embedded debugging and reliability improvements
- PlatformIO project organization
I assisted with the web server module but did not develop that component fully independently.
- ESP32
- C++
- PlatformIO
- Arduino framework
- Wi-Fi
- Web server
- LittleFS
- Embedded systems
esp32-feeding-system/
│
├── src/
│ ├── main.cpp
│ └── app/
│ ├── App.cpp / App.h
│ ├── AppState.cpp / AppState.h
│ ├── Button.cpp / Button.h
│ ├── DisplayManager.cpp / DisplayManager.h
│ ├── WiFiManager.cpp / WifiManager.h
│ ├── WebServerManager.cpp / WebServerManager.h
│ └── Log.cpp / Log.h
│
├── data/
│ └── style.css
│
├── platformio.ini
├── .gitignore
└── README.md
- Install VS Code.
- Install the PlatformIO IDE extension.
- Clone the repository:
git clone https://github.com/Youssufathalla/esp32-feeding-system.git- Open the project folder in VS Code.
- Open PlatformIO.
- Run:
Build
Connect the ESP32 board, then use PlatformIO:
Upload
To upload the filesystem files inside data/:
Upload Filesystem Image
To view serial output:
Monitor
- The project requires PlatformIO to build easily.
- The
data/folder contains web styling used by the device web interface. - Generated PlatformIO build files are intentionally ignored through
.gitignore.
- Structuring ESP32 firmware using modular C++ files
- Managing embedded application state
- Handling button input in firmware
- Integrating display output with device logic
- Working with Wi-Fi connectivity on ESP32
- Building and testing embedded projects with PlatformIO
- Preparing an embedded systems project for GitHub
- Add wiring diagram
- Add hardware photos
- Add system architecture diagram
- Improve web interface documentation
- Add setup instructions for Wi-Fi configuration
- Add screenshots of the web interface
- Add serial monitor example output
- Add clearer comments for hardware pin configuration
Youssuf Hatem Fathalla