Practical work repository for the Advanced Operating Systems (SOA) subject
- UNLaM (National University of La Matanza) -
Summary •
Installation •
Diagrams
Application structure •
Development team •
License •
Acknowledgments
This repository contains our practical work for the Advanced Operating Systems (SOA) subject at the National University of La Matanza (UNLaM). It consists of an embedded system based on an ESP32, which has two operating modes (activated by push buttons):
-
Stock Mode: Reports the current stock and alerts if the quantity on the shelves is below the established minimum. It uses an LCD screen to show the existing stock or the shortage, LED lights to visually indicate which shelf needs restocking, and weight sensors to calculate the stock on each shelf.
-
Security Mode: Detects variations in the weight of the shelves. It employs an LCD screen to report on which shelf the alteration was detected, a buzzer as an audible alarm, LED lights to visually indicate the affected shelf, and weight sensors to register these variations.
Note
Security mode has a higher priority than stock mode, so if both modes are activated at the same time, the system will execute security mode.
- Code conventions and standards
- Design and development of a finite state machine (FSM) to act according to the operating mode.
- Handling of sensors and actuators on an ESP32.
- Integration between an embedded system and a mobile application developed in Android.
- Real-time monitoring of stock and security alerts.
- Clone the repository.
- Install Visual Studio Code, Docker, and Dev Containers (VSCode extension).
- Open the repository folder in Visual Studio Code.
- Reopen the project in a Dev Container, pressing
F1and selectingDev Containers: Rebuild and Reopen in Container. - Wait for the container to be built and started.
- Press
F1and selectWokwi: Request a new Licenseoption to get a free license for build the project. - When you have the license, press
F1and selectPlatformIO: Buildto build the source code. - After the build is finished, press
F1and selectWokwi: Start Simulatorto run the project. - That's it! You should see the project running in the Wokwi simulator.
Note
When rebuilding the DevContainer, you might encounter an error such as The container already exists or is in use. Don't worry, it's a known bug, simply ignore it and rebuild it again.
Important
The first time you build the DevContainer, PlatformIO extension will request you to restart Visual Studio Code to finish the installation. Please do so, otherwise you won't be able to build the project.
SOA-Practical-Work-2026/
│
├── .devcontainer/ # DevContainer configuration files.
│
├── .github/
│ ├── workflows/ # GitHub Actions (CI/CD) workflows.
│ │
│ └── CODEOWNERS # File to assign Pull Request and Issue reviewers.
│
├── docs/ # Documentation files, such as diagrams, images, and other statics.
│
├── scripts/
│ └── health-check.sh # Script to check that the necessary tools are installed.
│
├── src/ # Source code of the project (`.h` and `.ino` files).
│
├── .editorconfig # Configuration to standardize code style across different IDEs.
├── .gitattributes # Configuration for Git attributes.
├── .gitignore # List of all files and folders that Git should ignore.
├── .oxfmtrc # Oxfmt configuration (code formatter).
├── cspell.json # Code Spell Checker extension configuration.
├── diagram.json # Circuit diagram of the project, exported from Wokwi.
├── lefthook.yaml # Lefthook configuration (Git hooks manager).
├── LICENSE # Project license.
├── platformio.ini # PlatformIO configuration file.
├── README.md # This file.
├── wokwi.toml # Wokwi configuration file.
└── zizmor.yml # Zizmor configuration (linter for GitHub Actions workflows).This repository is under the MIT license. For more information about what is permitted with the contents of this repository, visit choosealicense.com.
We would like to thank the teachers from the UNLaM Advanced Operating Systems (SOA) subject for their support and guidance.
