Smart waste-tracking IoT system β ESP32 scale that streams events to a Thai/English web dashboard via MQTT.
![]() |
![]() |
π 2nd Runner-up (ΰΈ£ΰΈΰΈΰΈΰΈΰΈ°ΰΉΰΈ₯ΰΈ΄ΰΈ¨ΰΈΰΈ±ΰΈΰΈΰΈ±ΰΈΰΈΰΈ΅ΰΉ 2) Β· ΰΈΏ2,000 prize BU ECO WEIGHT IOTS 2026 Β· Bangkok University Γ Sodexo Thailand Γ ZIPCODE
A worker presses 1 of 4 buttons on a smart scale (General / Plastic / Paper / Glass), drops waste on the platform, hears a beep β and within a second the event appears on a web dashboard with weight, COβ estimate, employee name, and location.
The point: give Sodexo Thailand real-time visibility into waste streams across 140+ cafeterias so they can produce GRI 306-3 ESG reports automatically instead of compiling them by hand from paper logs.
[ESP32 Scale] --MQTT 1883--> [HiveMQ Broker] --WSS 8884--> [Web Dashboard]
| |
HX711 load cell + OLED + 4 buttons + buzzer Vanilla JS, 10 pages
~700 lines C++ firmware ~3,000 lines JS
3D-printed enclosure TH/EN i18n, role-based access
Why this stack:
- ESP32 vs Raspberry Pi: ΰΈΏ100 vs ΰΈΏ1,500, lower power, faster boot, built-in WiFi
- HiveMQ public broker: zero-config for the demo (production = private broker + device certs)
- No web framework: 200ms TTFB on Vercel, ~80KB total bundle
- localStorage state: no backend, so hosting cost = $0 for the demo tier
| Component | Spec |
|---|---|
| MCU | ESP32 WROOM-32 (38-pin Dev Module) |
| Load cell amp | HX711 24-bit ADC |
| Load cell | 5 kg straight-bar strain gauge |
| Display | OLED SH1106 1.3" I2C 128Γ64 |
| Input | 4Γ tactile buttons (INPUT_PULLUP) |
| Audio | Passive 5V buzzer |
| Enclosure | 3D-printed PLA, 95Γ62Γ50mm (designed in OpenSCAD) |
| BOM total | ~ΰΈΏ800 retail |
Pin map and calibration value live in ESP32/WeighTech_ESP32/WeighTech_ESP32.ino.
10 pages, 3 user roles:
| Page | Path | Role |
|---|---|---|
| Login | / |
Public |
| Dashboard | /dashboard |
Admin |
| Live Demo | /live |
Admin (projector view) |
| My Stats | /my-stats |
Employee |
| Devices | /devices |
Admin |
| Live Feed | /feed |
Admin/Employee |
| Reports | /reports |
Admin (ESG PDF export) |
| Team | /employees |
Admin (leaderboard) |
| Admin Console | /admin |
Admin (user management) |
| MQTT Debug | /mqtt-test |
Dev tool |
Role hierarchy: Super Admin (1, immutable) > Admin (managed by Super) > Employee (managed by any Admin).
cd Website
python3 -m http.server 8765
# Then open http://localhost:8765Or just visit the deployed version: https://weightech.vercel.app
Super Admin
Email: founder@weightech.co.th
Password: weightech2026
Employee (12 pre-registered, expandable via Admin Console)
ID: EMP-2026-001 + first-name "ΰΈΰΈ ΰΈ±ΰΈͺ"
ID: EMP-2026-002 + first-name "ΰΈΰΈΰΈ£ΰΈΰΉ"
... etc
WeighTech/
βββ ESP32/ Firmware (production .ino + calibration)
βββ 3D_Print/ Enclosure β .stl + OpenSCAD source + renders
βββ Website/ 10-page web app (deployed to Vercel)
βββ docs/ ARCHITECTURE Β· PITCH Β· DEMO
βββ archive/ Legacy ESP8266 v1 firmware (kept for history)
βββ Dashboard/ Original UX mockups (design history)
βββ images/portfolio/ Curated photos used in docs
βββ PORTFOLIO.md Full case study writeup
βββ RESUME_BULLETS.md Copy-paste resume bullets (TH + EN)
βββ LICENSE MIT
βββ README.md This file
Real Lighthouse scores against the deployed production URL (run 2026-06-23 via Lighthouse 13.4.0):
| Page | Performance | Accessibility | Best Practices | SEO |
|---|---|---|---|---|
/live (presentation view) |
89 | 88 | 100 | 90 |
/ (login) |
69 | 88 | 100 | 90 |
Login scores lower because it loads MQTT.js + Chart.js + 3 font families before redirect β acceptable for a demo, would code-split for production.
Built by WeighTech team (Bangkok University, School of Engineering) for the BU ECO WEIGHT IOTS 2026 competition, sponsored by Sodexo Thailand and ZIPCODE.
- Hardware design + firmware: team
- Web platform + design system + deployment: Athit Boonpinit (@Maradosx)
License: MIT
Athit Boonpinit β Bangkok University, School of Engineering
- GitHub: @Maradosx
- Email: athit.boonpinit@gmail.com
Live Demo β Β· Case Study β Β· Build Log β Β· Architecture β Β· Pitch Script β Β· Demo Runbook β Β· Changelog β Β· Resume Bullets β







