Blog ·

The first test stand

The first version of the station was not a device but a desk full of parts:

Part What
Board Olimex ESP32-DevKit-LiPo (classic ESP32, 4 MB flash, no PSRAM)
NFC reader MFRC522 module on SPI
Scale HX711 with a single-point load cell of about 5 kg
Inventory Spoolman 0.27 on the local network, with my real spools in it

The firmware is written with ESP-IDF. The NFC and scale code live in two separate libraries, one for spool tags and one for load cells, so that another reader or ADC can be added later without touching the application.

Day one and two: tags

The reader part worked quickly. On the second day the station could:

  • read the tags of Bambu Lab spools and find the spool in Spoolman,
  • write TigerTag and OpenTag3D data to blank NTAG215 stickers and read them back,
  • link a tag to a spool in Spoolman,
  • erase a tag it had written.

Real data brought the first surprises. Spoolman had two spool entries with the same Bambu Lab tray UID, so “find the spool for this tag” had two answers. The station now never picks one by itself: it shows all matching spools and lets you choose.

Names do not always match either. The TigerTag brand table spells a vendor one way, my Spoolman another, so the automatic match found nothing. That is fine as long as the station says so and offers a list instead of guessing.

The scale: harder than it looks

The load cell was not mounted at first, and the first calibration was stored without a zero. The result: an empty scale showed anything between 35 and 85 g and still reported a stable reading. That is the worst kind of error, because it looks plausible.

The station only reads a tag when the weight is stable, so a scale like that would propose wrong weights with full confidence. The fixes for that are in the next post.

The web interface

Everything runs in the browser: the station serves its own page, and the page talks only to the station. On the phone that means: put the spool down, tap Read, check what the station proposes, confirm.


Questions or ideas? Join the discussion on GitHub. Get updates by e-mail.