Changelog
Full history and source at the Clura Enclosure repository .
1.0.0
First public release.
SD card configuration
data.clu. Around 27 tuning values readable from the SD card, covering servo angles, alarm thresholds, fan ramp points, intervals and load cell seeds. Applied through a revision number, so the card can be left in permanently without overwriting your touchscreen settings on every boot. Every value is range clamped. Guidefilament.clu. The spool library as an editable file, syncing both ways. Register a spool on the touchscreen and the file is rewritten to match, or edit the file and raise the revision and it is imported. Written for you automatically if it is missing. Guide
Safety
- Fire response. Every fan stops and the flap closes when smoke or gas is detected, so the enclosure is not feeding air to a fire or pushing smoke through the carbon filter. Muting the buzzer or turning off the red LEDs does not re-enable the fans.
- Overheat response. Above
maxTemp, which is 55 °C by default, the flap forces open and every fan runs at 100%, with hysteresis on the way back down. - Smoke takes priority over overheating, so a fire never opens the vent.
- Temperature is now sampled continuously. The BME680 used to be read only while the Home
or Sensors page was open, so the reading froze the moment you navigated away or the screen
dimmed on another page. The overheat cutout, the auto-cooling ramp and the CSV log all read
that value, so an enclosure parked on any other page could heat past
maxTempwithout ever noticing. - Optical smoke sensor off by default, on both switches. It is an optional part that is
not supplied with any kit, and its input floats high, so it would alarm permanently on a
board without one fitted. No setup wizard preset enables it, and
opticalAlarmEnablegates the alarm separately, so it takes two deliberate steps to arm.
Servos
- Higher PWM resolution. The timer now gives a 1 µs tick across the 500 to 2000 µs pulse range, so small angle changes actually produce small movements.
- Power down after each move. The servos are driven for
servoHoldMsand then released, so they do not buzz or draw holding current. - Fixed the unresponsive flap button. Touchscreen events were being discarded while the screen was dimmed, which is why the button sometimes did nothing and the servos twitched.
Logging
BootIDcolumn inlog.csv, so appended sessions can be told apart. Previously the minute counter reset on each power cycle with no way to tell where one session ended.Fan Speednow logs the actual commanded speed, including in automatic mode. Previously it recorded 0% while the fan was running.
Usage counter
- Counts filter fan runtime correctly in automatic mode. It previously gated on the manual slider, so automatic running was not counted at all.
- Wear levelled saves. Saved every 15 minutes rather than continuously, taking the memory’s expected life from months to decades.
- No longer overflows after 49.7 days of continuous running.
sensorUsageWarnHours. The replace filter threshold is now adjustable, and can be turned off entirely with0.
Bootloader
- Validate before erase. The image is size checked, fully read from the card and header checked before any flash is erased, then read back and verified after programming. A corrupt file or a flaky card can no longer leave you with a dead board.
- Failure page shown if an update is rejected.
monitor.binis deleted from the card only after the update has been verified.
Load cells
- Calibration now sets both the scale and the zero point. Restoring factory values restores both too. Previously only the scale was restored, which left a half reset calibration.
- Faster and more robust calibration. Averaging aborts on a failed read instead of waiting out every sample, so a disconnected cell reports immediately instead of appearing to freeze.
- Net filament weight is no longer clamped to zero. An empty holder reads as the negative of the selected spool’s tare weight, which makes it obvious at a glance whether the right spool is selected.
Fixes
- Guarded against short touchscreen frames calibrating against stale bytes, or registering a spool named from leftover data.
- Fixed a buffer overrun that wrote garbage characters into
filament.clu. - Fixed spool names of exactly 16 characters being stored without a terminator.
- Gas sensors are now sampled on an interval rather than every loop pass, which was dominating loop time for no benefit.
- The LED strip is filled once and pushed once, instead of pushing the whole strip per pixel. That takes around 300 ms of blocked main loop down to about 3 ms.
Last updated on