Spool Inspector
Place a spool on the scale. The Inspector scans the QR code, weighs the spool, and syncs everything to your account in seconds. Remaining filament, project costs, even storage location — all without touching your phone.

Hardware
How it works
Place spool on the scale
The scale detects weight over 50g and begins stabilizing.
Camera scans QR code
The autofocus camera locks onto your QR label and reads the spool ID.
Data syncs instantly
Weight, remaining filament, and project costs update in your account automatically.
Set location (optional)
A prompt asks if you want to update the spool's storage location. Pick from your list or skip.
Remove spool
Take the spool off. The station resets and is ready for the next one.
Features
Automatic QR Scanning
Place a spool on the scale and the autofocus camera reads its QR code automatically — no manual entry needed.
Precision Weighing
A load cell weighs down to the gram. The system subtracts the spool tare weight to calculate remaining filament.
Instant Sync
Weight readings sync to your account in real time. Remaining filament, project usage, and material costs all update automatically.
Set Spool Location
Update a spool's storage location right from the device. Moving a spool to the printer? Scan it and set the location — no need to open the app.
Near-Empty Detection
When a spool has less than 10g remaining, the device prompts you to mark it as empty. Never start a print with an empty spool again.
Three Modes
Cycle between Weigh (update inventory), New Spool (calibrate tare weight), and Set Location (move spools between locations) with a single button press.
Offline Queue
No WiFi? No problem. Weighings are saved to flash memory and sync automatically when connectivity returns. No data is ever lost.
OLED Display
A built-in display shows weight, current mode, scan progress, WiFi status, and prompts — no phone or computer needed to operate.
Easy WiFi Setup
Long press a button to start the captive portal and enter WiFi credentials. Then either paste an API key in the portal or scan a QR from Settings to pair the key — your call.
Button reference
OLED indicators
Specifications
Bill of materials
Estimated total parts cost: ~$60 (excluding tools and 3D printing filament). Or get a complete kit from 3dcreator.shop.
Some links below are affiliate links. We may earn a small commission at no extra cost to you.
Headers, fasteners, and wire typically sold in bulk packs. This crimper kit (paid link) includes the crimper, housings, and pins.
Important: Direct-wire the load cell
Do not use Dupont connectors on the load cell wires. Solder them directly to the PCB pads. Dupont connectors cause intermittent contact issues that lead to weight drift and unstable readings. The OLED and button connectors are fine — this only applies to the load cell.
STL files provided. ~450g of filament total.
Most 3D printing hobbyists already have these tools
Thermal label printer for printing QR code spool labels. Works with our label export feature.
Get one
Every part you need to build a Spool Inspector — source nothing yourself. Already have some parts? Exclude them at checkout and pay less.
- ✓All electronics, hardware, and connectors
- ✓Base PCB set included
- ✓Optional add-ons: pre-crimped cables, USB, scale
- ✓Customize — exclude items you already have
- ✓You 3D print the enclosure (STLs provided)
Firmware version history
- Fix: WiFi auto-recovery — devices that lost connection during a router or ISP blip used to sit offline (WiFi: OFF / IP: N/A) until power-cycled. The device now retries with exponential backoff (30s → 10m cap) so transient drops self-heal within ~10 minutes instead of stranding the device. Resolves “hasn’t checked in for 24h” reports.
- Fix: pressing a button to dismiss the screen saver no longer also opens the Menu or triggers AP setup mode
- New: Reboot Device button on the on-device status page — restart over LAN/AP without unplugging
- New: status page split into Device (settings) and Maintenance (reboot) cards, with a note that settings apply immediately and persist
- Polish: scan light reduced from 3 to 2 LEDs to match the latest housing geometry
- Internal: log payload JSON escaping now RFC 8259-compliant; build-settings guards (PSRAM, partition table) surface misconfigured Arduino IDE settings clearly
- Fix: Test Mode buttons — left button labeled EXIT now actually exits Test Mode (was opening the menu); right button consistently exits too. Long-press of left still triggers AP/setup mode.
- Fix: post-weigh location prompt no longer shows a stale name on refresh; a missing location correctly displays “No location set” instead of leaking a prior value
Beta — opt-in only via admin force-target. Not auto-pushed to stable-channel devices.
- Camera defaults retuned for low-light scanning (decodes in pitch dark, fixes spool-hole-pattern interference)
- Screen saver with web-configurable timeout — extends OLED life on always-on units
- Buzzer volume control, default Low (quieter scan/calibrate beeps)
- Scan light (WS2812B) controllable from a web slider, default Off
- Fix: crop fallback bug when the QR detector receives a degenerate camera region
Beta — opt-in only via admin force-target. Not auto-pushed to stable-channel devices.
- Fix: stuck-token devices now self-heal correctly — the case where every call would re-provision on the server but the firmware kept sending the same stale token
- Fix: auth recovery actually triggers on queue-drain failures (recovery counter was missing 401s when the HTTP client returned a non-OK error code)
- Fix: queued weighings retained on auth failures instead of being silently discarded — when auth breaks, your data stays safe until recovery restores it
- Performance: queue stops hammering the server during auth issues — exponential backoff plus pause-during-recovery
- Auto-recovery from invalid API keys: when a device's stored key drifts out of sync with the server, an admin can restore it remotely with one click — no user action needed on the device
- Fix: locations list now loads for users with many or long-named locations (resolves the “No locations / Add in web app” message)
- Diagnostics: device now reports its local IP on heartbeat so admins can deep-link to the device's /diag page
- Polish: serial-output button help now matches the current button behavior
- Pair Key: new menu item lets you re-key the device by scanning a QR from Settings → API Keys — no more copy/paste during setup or key rotation
- Diagnostics screens: on-device hardware status pages for camera, scale, and WiFi, accessible from the menu
- Menu cleanup: consolidated calibration so the calibration UI persists through reboots
- Fix: pre-calibration weight cycling no longer flickers the display when the scale isn't calibrated
- Fix: boot tare is now silent (no startup beep)
- Polish: firmware version printed on serial at startup for easier diagnostics
- Update consent: device no longer auto-installs firmware updates on its own — installs only when you click Update on the website, press Update on the device, or an admin force-targets a specific version
- New on-device indicator: an “update available” badge appears when a newer version is published so you know when to install at your convenience
- Fix: tare-weight prompt no longer fires spuriously after calibration
- Fix: OTA partition selection — corrects a partition-table mismatch that prevented some devices from installing 1.7.3 over the air
- Fix: device boot stability — addresses an out-of-memory error during the QR decoder startup
- Fix: device now sends its MAC on every authenticated call so a stale saved token self-heals on the next request instead of looping on auth errors (carries forward from 1.7.3)
- Withdrawn: replaced by 1.7.4 after a boot-time OOM was identified. Do not flash directly.
- Fix: device now sends MAC fallback on locations and firmware-check calls when its token isn't loaded yet — clears boot-time auth errors
- Dryer Mode: scan a spool to start or end a drying session
- Set Location cross-prompts to start or end drying when the target is a dryer
- End-drying prompt during weigh when the spool has an open session
- Sticky location: pick a location once, scan multiple spools to bulk check-in
- Auto-revert from Dry to Weigh after a successful scan
- Long location names now wrap on the picker and prompt instead of truncating
- Post-weigh prompts require an explicit answer (no silent dismissal on spool removal)
- Fix: admin force-update from /devices now reaches target units (firmware-check call now sends auth)
- Optional belt-and-suspenders: device can also OTA directly off the heartbeat response when a target is queued
- QC test mode gated behind compile flag (disabled in OTA builds)
- Camera Rotate 180° — toggle in settings for flexible mounting, persists across updates
- Test Mode — continuous QR scan testing without sending data to server
- Needs-setup melody — 5 rising tones on boot when device isn't configured
- Boot splash repositioned for 2-color OLED compatibility
- "Please wait" message during first-boot camera init
- Optional compile-time device name for identifying units
- Menu cleanup — "Refresh Loc" shortened to "Refresh"
- Boot splash screen with SPOOL INSPECTOR logo and version number
- Instant "Saving..." feedback when selecting a location
- Location prompt after weigh shows current spool location
- SET_LOCATION mode auto-resets to WEIGH after 5 minutes idle
- Session-locked QR payload prevents stale spool ID on actions
- Debug logging to server for remote diagnostics
- Offline queue entries tagged as [queued] in usage history
- Test mode for hardware testing without an account
- Factory reset button on WiFi setup portal
- Hardcoded API base URL (removed from setup portal)
- Fixed long-press WiFi button from any state
- Cached locations — fetched on boot, refreshed hourly, instant picker
- Refresh Locations menu item
- Dual-color OLED support
As an Amazon Associate, 3D Spool Tracker earns from qualifying purchases. Product links on this page may include affiliate tags. Prices are the same whether you use our links or not.