Skip to content

About

Source-available filament-management terminal (WT32-SC01 Plus, NAU7802 load cell, ST25R3916B NFC). Reads OpenPrintTag, weighs the spool, and looks it up in Spoolman. With FilaBridge, assigns spools to printer toolheads. https://www.printables.com/model/1885872-opentag-station

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Repository files navigation

OpenTag Station

A touchscreen station for filament spools.
Put a spool on it and it reads the NFC tag, weighs the spool and keeps Spoolman up to date.

Manual  ·  USB installer  ·  Releases  ·  Changelog  ·  Issues

Latest release CI status on main License: PolyForm Noncommercial GitHub stars

OpenTag Station in its printed case: the touchscreen at the front, the orange spool platform and the NFC reader tower behind it

The station's web page showing the current spool, its remaining weight and its printer toolhead

Demo data.

Why

If you run a few dozen spools, you eventually lose track of two things: which spool is which, and how much is left on it. Spoolman answers both, as long as someone keeps it current, and that someone is usually you, with a kitchen scale and a browser tab.

OpenTag Station moves that work to the shelf. Each spool carries an NFC tag in the OpenPrintTag format (the open spool-tag standard from Prusa; which tags that means). Set the spool on the station and it recognises the tag, finds the spool in your Spoolman server, weighs it, subtracts the empty reel and shows what is left. One tap saves that number back to Spoolman. If you also use FilaBridge with a printer it supports (tested with a Prusa XL), a second tap tells the printer which toolhead the spool is going into. Without FilaBridge the station works the same and simply has no printer screens.

flowchart LR
    subgraph station[OpenTag Station]
        direction TB
        nfc[NFC reader]
        scale[Load cell]
        ui[Touchscreen and web page]
    end
    spool([Spool with tag]) --- station
    station -- "weight, tag link" --> spoolman[(Spoolman)]
    station -. "optional: toolhead assignment" .-> fb[FilaBridge] --> printer[Your printer]
Loading

Spoolman stays the record of what you own. The station keeps no inventory of its own.

What it does

  • Identifies a spool. Place a tagged spool on the station and it shows which Spoolman spool it is.
  • Writes tags. Pick a spool, or a filament to create a spool from, and the station writes a blank tag, checks it and links it to the spool.
  • Weighs and saves. The result shows the weight, the empty spool and the filament left. Nothing changes in Spoolman until you press UPDATE SPOOLMAN. Automatic saving exists and is off by default.
  • Clears tags for reuse. Erase a tag and remove its link in one step. The spool stays in Spoolman.
  • Assigns a toolhead. Optional, and only with FilaBridge. Tell the printer which spool is in which toolhead, with a confirmation before it replaces a loaded spool or touches a printer that is printing. Without FilaBridge the station has no printer features and the Assign screens are hidden. The touchscreen shows up to five toolheads; the web page lists every toolhead FilaBridge reports (not yet tried with more than five).

Everything above works on the touchscreen. The station also serves a web page on your network for settings, inventory browsing and firmware updates.

Weigh result showing the weight on the scale, the empty spool and the remaining filament Assigning the current spool to a printer toolhead

Manage tag dialog with write, update and clear actions The touchscreen Home page with spool status and the main actions

All pictures are generated from demo data. The touchscreen picture is a rendering, not a photo.

Which tags it works with

If you came here because of OpenPrintTag, the open spool-tag format from Prusa, this is the part to read. "OpenPrintTag" and "SLIX2" are often used as if they meant the same thing. They are different layers of one tag:

Layer What it is For this station
Data format What is stored on the tag: material, colour, weights OpenPrintTag
Radio standard How the reader talks to the tag ISO 15693, also called NFC-V
Chip The part you actually buy NXP ICODE SLIX2

A seller who lists "SLIX2" tags is selling the chip. OpenPrintTag is what the station writes onto it. In practice: buy blank ICODE SLIX2 stickers (ISO 15693), and the station does the rest.

Spools in the wild use several unrelated tag systems, and they are not interchangeable:

Tag system Chip Where you meet it This station
OpenPrintTag ICODE SLIX2 (ISO 15693) Prusament spools, and tags you write yourself Reads and writes
Bambu Lab MIFARE Classic Bambu Lab AMS spools Not yet, planned
Creality CFS MIFARE Classic 1K Creality spools Not yet, planned
Anycubic ACE, QIDI Box MIFARE Classic 1K Spools for those systems Not yet, planned
OpenSpool NTAG Community DIY tags Not yet, planned
Plain NTAG213 / 215 / 216 stickers NTAG Phone-friendly stickers Not yet, planned

Chip details for other brands are as documented by SimplyPrint.

The reader board (ST25R3916B) is not limited to ISO 15693. Its chip and the ELECHOUSE library this project uses also support the ISO 14443 family that Bambu, Creality and NTAG tags belong to. The 1.0 firmware only looks for ISO 15693, so those spools do not show up on the station yet, and a pack of generic NTAG stickers will not work. Supporting them is on the roadmap. Other ISO 15693 tags that are not SLIX2 are read today, but cannot be written. Stickers sold for phones often arrive pre-formatted and are not blank. Which tags work has the buying checklist and a one-minute test for a new tag.

How it treats your data

The station writes to two things you care about, your tags and your inventory, so it is conservative about both.

  • Tag writes are verified. Every block is read back after it is written, and the whole tag is decoded again at the end. A write that is interrupted offers to finish the next time that tag is on the reader, or to be skipped if the tag is lost.
  • No silent saves. Weights go to Spoolman when you press the button. The station also checks that the spool it is about to update is the one it identified, and that Spoolman's copy has not changed underneath it.
  • Confirmations where it counts. Writing over another spool's tag, clearing a tag, replacing a toolhead's spool and factory reset all ask first.
  • Updates can roll back. After a firmware update from the browser, the station watches itself for 30 seconds and returns to the previous firmware if something is wrong. Settings and calibration survive updates.
  • Secrets stay put. Settings exports and the API never include Wi-Fi passwords or access tokens.

Hardware

Controller WT32-SC01 Plus (ESP32-S3, 16 MB flash, 480 × 320 touchscreen)
Scale NAU7802 breakout and one YZC-133 load cell, 5 kg (default) or 2 kg
NFC reader ELECHOUSE NFC_ST25R3916B module, switched to I²C mode
Tags Blank NXP ICODE SLIX2 stickers (ISO 15693 / NFC-V), for OpenPrintTag. NTAG and MIFARE tags are not detected yet (see the roadmap). See Which tags it works with.
Power Regulated 5 V over USB
Enclosure A three-part printed case, no supports, about 299 g of filament: OpenTag-Station on Printables (CC BY-NC-SA 4.0). Assembly is in the manual.

There is exactly one supported controller and one supported reader, with fixed pins, so buy the parts named in the parts list rather than look-alikes. The STL files live on Printables, not in this repository.

Wiring diagram: the WT32-SC01 Plus expansion connector to the NAU7802 scale board and the ST25R3916B NFC module

The diagram shows electrical connections by board contact number. Read the wiring guide before you power anything.

Compatibility

Needs Version
Spoolman 0.26 or 0.27 to save weights. 0.27+ also uses Spoolman's own tag list.
FilaBridge 1.2.1 or 1.2.2, only for toolhead assignment
Printer None needed. For toolhead assignment, a printer FilaBridge supports (tested with a Prusa XL)
Tag format OpenPrintTag
Wi-Fi 2.4 GHz. 5 GHz-only and WPA3-only networks are not supported.
Browser for install Desktop Chrome or Edge, for the USB installer

On any other Spoolman or FilaBridge version the station stays connected and reads, writes and clears tags, but the version-gated feature (saving weights, assigning toolheads) switches off and says why. Details are in Supported versions.

Get started

  1. Build it. Follow the parts list and the wiring guide, and print the case.
  2. Install the firmware. Connect the board with a USB data cable and open the USB installer (guide). A USB install erases all settings and the scale calibration.
  3. Join your Wi-Fi. The touchscreen shows an open setup network named OpenTag-Setup-XXXX. Enter your Wi-Fi on the touchscreen, or join that network and open http://192.168.4.1/ (guide). Afterwards the station is at http://opentag-station.local/.
  4. Prepare Spoolman. On Spoolman 0.27 or later there is nothing to do. On older versions, add two extra fields of type Text to the Spool entity, with the keys opentag_instance_uuid and nfc_uid (how). Without them the station cannot link a tag to a spool.
  5. Connect and calibrate. Enter the Spoolman address (and FilaBridge if you use it), then tare and calibrate the scale (guide).
  6. Write your first tag. Your first spool walks through writing a tag, saving a weight and assigning a toolhead.

Later updates are done from the station's web page (Settings → Update) with opentag-station-<version>-application.bin from the Releases page (guide).

Documentation

Read the manual →

If you want to Read
See what it does and what to buy Overview
Use it day to day Identify · Weigh · Write a tag · Clear a tag · Assign a toolhead
Pick tags Which tags work
Fix a problem Troubleshooting
Secure it Access token and network safety
Script it REST API · Configuration keys

The manual's source is in documentation-site/. Notes for people working on the firmware are in docs/.

Limits worth knowing

  • The station speaks plain HTTP and is meant for a home network you trust. Do not expose it to the internet. Set an access token so only you can change it from a browser.
  • Firmware files are not signed. Install only files from this repository's Releases page.
  • Only blank SLIX2 tags can be written. A sticker that a phone app has already formatted is not blank, and the station will not erase it.
  • 1.0 does not read Bambu Lab, Creality, Anycubic, QIDI or OpenSpool tags. They use a different tag family that the firmware does not poll for yet; see the roadmap.
  • There is no built-in filament catalog. Filaments and spools come from your own Spoolman.
  • The station is built around one board and one reader. Other hardware is out of scope.

Status

1.0.0 is the first release. VERSION holds the version on main and the changelog lists what changed. Every version merged to main is published to the Releases page. Only stable versions, with no hyphen in the number, reach the USB installer. Versions such as 1.0.1-beta.1 are marked pre-release, are for testers, and are never offered by the installer. Bugs and follow-ups are tracked in the issues.

Roadmap

1.0 does one tag system well: OpenPrintTag on SLIX2. The goal after that is to support every kind of tag the reader hardware can read or write, so one station handles whatever spools you own.

Tag family Spools and tags Plan
MIFARE Classic (ISO 14443A) Bambu Lab, Creality CFS, Anycubic ACE, QIDI Box Detected and named since 1.0.1-beta.5. Read first. Write where the format allows it.
NTAG (ISO 14443A) OpenSpool, plain NTAG213 / 215 / 216 stickers Detected and named since 1.0.1-beta.5. Read and write
Other ISO 15693 chips Tags that are not SLIX2 Write support. They are read today.
ISO 14443B, FeliCa Nothing on spools that the project knows of Added if a spool system adopts them

New tag types will follow the rules OpenPrintTag already has: writes are verified, anything that overwrites a tag asks first, and the web API never exposes raw tag access. The order and dates are not set. Progress is tracked in the issues, and that is the place to say which system you want first.

Build from source

python -m venv .venv
. .venv/bin/activate
python -m pip install --requirement requirements-dev.txt
pio test --environment native                              # host tests
pio run --environment wt32-sc01-plus                       # firmware
pio run --environment wt32-sc01-plus --target upload       # flash over USB

PlatformIO and all libraries are pinned. A firmware change needs a version bump (python tools/bump_version.py <new-version>), which CI checks, and a changelog entry written by hand. See Build from source, Testing and CI and Contributing changes. Please read the code of conduct before opening an issue or pull request.

Built with

Spoolman and FilaBridge on the server side; the OpenPrintTag specification for tag data; PlatformIO and the Arduino core for ESP32; LVGL and LovyanGFX for the display; ArduinoJson; and the ELECHOUSE ST25R3916 libraries for the NFC reader.

License

PolyForm Noncommercial License 1.0.0: free to use, change and share for noncommercial purposes. It is not an OSI-approved open-source license. The vendored ELECHOUSE NFC libraries keep their own licenses; see the third-party notices.

Star history

Star history chart for 76cb/OpenTag-Station

If the station is useful to you, a star helps other people find it.

About

Source-available filament-management terminal (WT32-SC01 Plus, NAU7802 load cell, ST25R3916B NFC). Reads OpenPrintTag, weighs the spool, and looks it up in Spoolman. With FilaBridge, assigns spools to printer toolheads. https://www.printables.com/model/1885872-opentag-station

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages