Skip to content

Youssufathalla/esp32-feeding-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 Feeding System

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.

Project Overview

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.

Features

  • 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

My Contribution

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.

Technologies Used

  • ESP32
  • C++
  • PlatformIO
  • Arduino framework
  • Wi-Fi
  • Web server
  • LittleFS
  • Embedded systems

Project Structure

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

How to Build

Recommended Method: VS Code + PlatformIO

  1. Install VS Code.
  2. Install the PlatformIO IDE extension.
  3. Clone the repository:
git clone https://github.com/Youssufathalla/esp32-feeding-system.git
  1. Open the project folder in VS Code.
  2. Open PlatformIO.
  3. Run:
Build

How to Upload

Connect the ESP32 board, then use PlatformIO:

Upload

To upload the filesystem files inside data/:

Upload Filesystem Image

To view serial output:

Monitor

Notes

  • 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.

What I Learned

  • 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

Future Improvements

  • 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

Author

Youssuf Hatem Fathalla

About

ESP32 IoT feeding system firmware with Wi-Fi connectivity, display control, button input, device state management, and web interface integration.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors