Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WeighTech

Smart waste-tracking IoT system β€” ESP32 scale that streams events to a Thai/English web dashboard via MQTT.

WeighTech smart scale 2nd Runner-up award

πŸ† 2nd Runner-up (ΰΈ£ΰΈ­ΰΈ‡ΰΈŠΰΈ™ΰΈ°ΰΉ€ΰΈ₯ΰΈ΄ΰΈ¨ΰΈ­ΰΈ±ΰΈ™ΰΈ”ΰΈ±ΰΈšΰΈ—ΰΈ΅ΰΉˆ 2) Β· ΰΈΏ2,000 prize BU ECO WEIGHT IOTS 2026 Β· Bangkok University Γ— Sodexo Thailand Γ— ZIPCODE

Live License Lighthouse Last commit Repo size


What it does

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.


Gallery

Admin Dashboard
Admin Dashboard β€” KPIs, throughput chart, composition donut, device network, live event feed. Filter by SIM (demo) or REAL (live ESP32) mode.
Live Demo big-screen view
Live Demo Page β€” designed for the projector during presentation. Big weight readout, source-tag chips, audience-scannable QR.
Employee personal dashboard
Employee Dashboard β€” personal greeting, monthly contribution, leaderboard rank, day-grouped history. Login: employee ID + name.
Thai dashboard with SIM/REAL toggle
Thai i18n + SIM/REAL toggle β€” every page switches TH/EN, every value filters by data source for audit clarity.
124-bin device network
Device Network β€” 124-bin fleet status with fill bars and online/offline state.
Firmware development
Behind the scenes β€” ESP32 firmware in Arduino IDE with serial debugging. HX711 calibration tuning.

Architecture

[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

Hardware

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.


Web platform

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


Run locally

cd Website
python3 -m http.server 8765
# Then open http://localhost:8765

Or just visit the deployed version: https://weightech.vercel.app


Demo credentials

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

Repository layout

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

Performance

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.


Credits

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


πŸ“¬ Contact

Athit Boonpinit β€” Bangkok University, School of Engineering


Live Demo β†’ Β· Case Study β†’ Β· Build Log β†’ Β· Architecture β†’ Β· Pitch Script β†’ Β· Demo Runbook β†’ Β· Changelog β†’ Β· Resume Bullets β†’

About

πŸ† 2nd Runner-up Β· BU ECO WEIGHT IOTS 2026 Β· Smart waste-tracking IoT platform: ESP32 scale β†’ MQTT β†’ Thai/English web dashboard

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages