ESP32 · Bluetooth LE · iPhone

Connaissez votre filament.
Connaissez son humidité.

SpoolDry relie votre sécheur de filament à l'iPhone en Bluetooth. Suivez température et humidité en direct, lancez un séchage avec des profils de polymères techniques et suivez le minuteur sur l'écran verrouillé. Sans compte. Sans cloud.

Sans abonnement. Achat unique. · Bientôt sur l'App Store

SpoolDry app dashboard showing PA-CF drying at 67.2 °C and 18 % humidity

Tout ce qui manquait à votre sécheur

Synchro ESP32 BLE

Liaison Bluetooth LE directe et jumelée avec l'ESP32. Protocole versionné à commandes acquittées : l'app montre toujours l'état réel.

Données polymères techniques

Du PLA au PEEK, PA-CF et PPS : repères typiques avec sources fabricants, jamais présentés comme exigence officielle.

Minuteurs en activité en direct

Écran verrouillé et Dynamic Island affichent filament, cible, température, humidité et temps restant, directement depuis l'appareil.

Zéro cloud

Pas de compte, pas de serveur, pas d'internet. Tout reste entre l'iPhone et le sécheur.

Température & humidité

Précision Sensirion SHT40 et graphiques en direct.

Profils de séchage

Repères intégrés et vos propres profils de marque.

Historique hors ligne

Humidité initiale/finale, température moyenne, graphiques et statistiques.

Surveillance de sécurité

Limites firmware, watchdog, tachymètre, relais, thermostat et fusible thermique.

Plusieurs appareils

Nommez SpoolDry #1, #2 et plus, et passez de l'un à l'autre.

Accès à vie

Payez une fois. Toutes les améliorations futures incluses.

Comment ça marche

1

Construisez le sécheur ou flashez le firmware sur l'ESP32-C6.

2

Jumelez-le à SpoolDry en Bluetooth en quelques secondes.

3

Choisissez un profil et lancez le séchage. Suivez-le sur l'écran verrouillé.

Construisez votre SpoolDry

Architecture basse tension (24 V CC) : la tension secteur reste dans un bloc d'alimentation certifié et fermé. La chambre est limitée à 70 °C par le ventilateur ; un matériel indépendant protège des défauts logiciels.

Espressif ESP32-C6-DevKitC-1-N8

Rôle
Contrôleur : BLE, capteurs, régulation et toute la logique de sécurité du firmware.
Spécification recommandée
ESP32-C6-WROOM-1 · RISC-V 160 MHz · BLE 5 · Wi-Fi 6 · 8 MB flash · 2× USB-C · 3.3 V logic
Pourquoi
Carte officielle Espressif, BLE 5 natif avec NimBLE éprouvé, USB-C, 8 Mo de flash pour l'OTA futur, vendue par les grands distributeurs.
Liens d'exemple
DigiKey · Adafruit · Espressif user guide

Sensirion SHT40 breakout (Adafruit #4885)

Rôle
Mesure la température et l'humidité relative de la chambre.
Spécification recommandée
±0.2 °C / ±1.8 %RH typ. · −40…125 °C · I²C 0x44 · STEMMA QT
Pourquoi
Capteur numérique moderne, précis, protégé par CRC, jusqu'à 125 °C. Les DHT11/DHT22 sont plus lents et bien moins précis.
Liens d'exemple
Adafruit · DigiKey

Insulated PTC air heater 24 V / 100 W

Rôle
Chauffe l'air que le ventilateur fait circuler dans la chambre.
Spécification recommandée
24 V DC · ~100 W (≈4.2 A) · finned aluminium · insulated housing · self-limiting ≤200 °C surface · ~113×35×26 mm
Pourquoi
Basse tension (aucune commutation secteur) et la céramique PTC limite sa propre température si le flux d'air s'arrête.
Liens d'exemple
Amazon (Bestol 24V 100W) · VXB · DBK (industrial PTC, alternative)

San Ace 80 9GA0824P4G001 (24 V, tach)

Rôle
Fait circuler l'air dans le chauffage PTC et autour des bobines ; évacue l'air humide.
Spécification recommandée
80×80×25 mm · 24 V · 0.21 A · 67 CFM · pulse sensor (2 p/rev) · −20…+70 °C · 60,000 h at 60 °C
Pourquoi
Ventilateur industriel à roulements, 70 °C, avec tachymètre : le firmware détecte un blocage. Cette valeur fixe la limite de 70 °C.
Liens d'exemple
Sanyo Denki · Mouser (9GA0824P4 series)

Infineon IRLB8721PBF logic-level N-MOSFET

Rôle
Interrupteurs côté masse pour le PWM du chauffage (Q1), le ventilateur (Q2) et la bobine du relais (Q3).
Spécification recommandée
30 V · 62 A · R_DS(on) 8.7 mΩ @ 4.5 V · TO-220 · with 100 Ω gate resistor + 10 kΩ pull-down each
Pourquoi
Pleinement passant dès 3,3 V, reste froid à 4,2 A sans dissipateur. Les pull-downs maintiennent tout à l'ARRÊT au démarrage.
Liens d'exemple
Adafruit #355 · Mouser · Infineon

Omron G5LE-1A4 DC24 relay (K1)

Rôle
Second interrupteur de chauffage indépendant, en série avec le MOSFET.
Spécification recommandée
SPST-NO · 24 V coil · 10 A contacts · + 1N4001 flyback diode
Pourquoi
Si Q1 reste en court-circuit, le relais coupe quand même. Sa bobine passe par le thermostat 85 °C : la surchauffe l'ouvre sans logiciel.
Liens d'exemple
DigiKey · Omron datasheet

Cantherm F20A08505ACFA06E thermostat (TS1)

Rôle
Protection matérielle indépendante contre la surchauffe de la chambre.
Spécification recommandée
85 °C ±5 K · normally closed · auto-reset · potted · 2 A (coil circuit only)
Pourquoi
Ouvre le circuit de bobine à 85 °C quel que soit le firmware (2 A : il commute la bobine, pas le chauffage).
Liens d'exemple
DigiKey · Cantherm F20 series

Cantherm SDF-DF100S thermal cutoff (TCO)

Rôle
Fusible de dernier recours, non réarmable, sur le circuit du chauffage.
Spécification recommandée
100 °C one-shot · 10 A AC/DC · axial · crimp, do not solder close to body
Pourquoi
Couvre la double panne (MOSFET en court-circuit + relais soudé). Montez-le sur le conduit ; remplacez-le s'il fond et cherchez la cause.
Liens d'exemple
DigiKey

Semitec 104GT-2 NTC thermistor + 47 kΩ 1 % resistor

Rôle
Mesure la température en sortie de chauffage pour la limitation et la détection de défauts.
Spécification recommandée
100 kΩ @ 25 °C · B 4267 K · glass bead to 300 °C
Pourquoi
Détecte un ventilateur bloqué ou un chauffage bloqué même si le capteur de chambre est normal.
Liens d'exemple
Mouser

Mean Well GST220A24-R7B desktop adapter

Rôle
Alimente tout en 24 V CC. La tension secteur reste dans ce bloc certifié.
Spécification recommandée
24 V · 9.2 A · 221 W · enclosed, safety-certified, 3-pin IEC inlet · 4-pin DIN output
Pourquoi
Aucun câblage secteur par l'utilisateur. 220 W laissent de la marge pour l'appel de courant du PTC.
Liens d'exemple
Mouser · Newark

Kycon KPJX-PM-4S panel jack (mates with R7B plug)

Rôle
Entrée 24 V verrouillable sur le boîtier.
Spécification recommandée
4-pin DIN power jack · panel mount · 7.5 A
Pourquoi
Dimensionnée pour le courant ; évite les jacks sous-dimensionnés.
Liens d'exemple
DigiKey · Kycon datasheet

ATO blade fuse 7.5 A + Littelfuse inline holder

Rôle
Protège le câblage des courts-circuits.
Spécification recommandée
Slow-acting automotive blade fuse on +24 V directly after the input jack
Pourquoi
Calibré au-dessus de l'appel du chauffage mais sous les valeurs des fils et connecteurs.
Liens d'exemple
Littelfuse 0FHA0002XP (Amazon) · Keystone 3557-2 PCB holder

Pololu D24V10F5 step-down regulator

Rôle
Alimente la broche 5 V de l'ESP32 depuis le 24 V.
Spécification recommandée
5.1–36 V in · 5 V 1 A out · 18×13 mm
Pourquoi
Régulateur à découpage efficace ; un linéaire chaufferait trop de 24 à 5 V.
Liens d'exemple
Pololu

Small parts

Rôle
Assemblage, connecteurs et composants passifs.
Spécification recommandée
Perma-Proto board · Phoenix Contact 1935161 terminal blocks · 3× 100 Ω, 4× 10 kΩ, 1× 47 kΩ 1 % · 2× 1N4001 · STEMMA QT 400 mm cable · 18 AWG silicone wire (heater) · 22 AWG (signals)
Pourquoi
Borniers et fils silicone tolèrent mieux la chaleur que les breadboards et le PVC.
Liens d'exemple
Adafruit Perma-Proto (Pololu) · Phoenix 1935161 (DigiKey) · Adafruit 1N4001 #755 · STEMMA QT 400 mm #5385

Hammond 1591XXDSBK ABS enclosure + insulated dry box

Rôle
Garde l'électronique au frais, hors de la chambre chauffée.
Spécification recommandée
152×82×50 mm controller box outside the hot zone · chamber: rigid, insulated box rated ≥ 90 °C (e.g. PP/ABS with foil-faced insulation), heater duct in aluminium or ASA/PC
Pourquoi
Seuls capteur, NTC, chauffage, ventilateur, thermostat et TCO sont dans la chambre. Jamais de conduit en PLA/PETG.
Liens d'exemple
Hammond 1591XX

Nomenclature

ComposantPièce choisieRôleQtéLiens d'exemple
ESP32Espressif ESP32-C6-DevKitC-1-N8Contrôleur : BLE, capteurs, régulation et toute la logique de sécurité du firmware.1DigiKey · Adafruit
Temperature/humidity sensorSensirion SHT40 breakout (Adafruit #4885)Mesure la température et l'humidité relative de la chambre.1Adafruit · DigiKey
PTC heaterInsulated PTC air heater 24 V / 100 WChauffe l'air que le ventilateur fait circuler dans la chambre.1Amazon (Bestol 24V 100W) · VXB
FanSan Ace 80 9GA0824P4G001 (24 V, tach)Fait circuler l'air dans le chauffage PTC et autour des bobines ; évacue l'air humide.1Sanyo Denki · Mouser (9GA0824P4 series)
MOSFETInfineon IRLB8721PBF logic-level N-MOSFETInterrupteurs côté masse pour le PWM du chauffage (Q1), le ventilateur (Q2) et la bobine du relais (Q3).3Adafruit #355 · Mouser
Safety relayOmron G5LE-1A4 DC24 relay (K1)Second interrupteur de chauffage indépendant, en série avec le MOSFET.1DigiKey · Omron datasheet
Thermostat 85 °CCantherm F20A08505ACFA06E thermostat (TS1)Protection matérielle indépendante contre la surchauffe de la chambre.1DigiKey · Cantherm F20 series
Thermal fuse 100 °CCantherm SDF-DF100S thermal cutoff (TCO)Fusible de dernier recours, non réarmable, sur le circuit du chauffage.1DigiKey
Heater NTCSemitec 104GT-2 NTC thermistor + 47 kΩ 1 % resistorMesure la température en sortie de chauffage pour la limitation et la détection de défauts.1Mouser
Power supplyMean Well GST220A24-R7B desktop adapterAlimente tout en 24 V CC. La tension secteur reste dans ce bloc certifié.1Mouser · Newark
Power connectorKycon KPJX-PM-4S panel jack (mates with R7B plug)Entrée 24 V verrouillable sur le boîtier.1DigiKey · Kycon datasheet
FuseATO blade fuse 7.5 A + Littelfuse inline holderProtège le câblage des courts-circuits.1Littelfuse 0FHA0002XP (Amazon) · Keystone 3557-2 PCB holder
5 V regulatorPololu D24V10F5 step-down regulatorAlimente la broche 5 V de l'ESP32 depuis le 24 V.1Pololu
Wires, terminals, passivesSmall partsAssemblage, connecteurs et composants passifs.1Adafruit Perma-Proto (Pololu) · Phoenix 1935161 (DigiKey)
EnclosureHammond 1591XXDSBK ABS enclosure + insulated dry boxGarde l'électronique au frais, hors de la chambre chauffée.1Hammond 1591XX

Liens d'exemple vérifiés en octobre 2026 ; la disponibilité évolue. Des pièces équivalentes conviennent.

Schéma de câblage

Schéma de câblage

Brochage ESP32-C6

GPIOFunctionComponentDirNotes
GPIO23I²C SDASHT40I/OArduino default SDA on ESP32-C6
GPIO22I²C SCLSHT40Out100 kHz, 25 ms timeout, bus recovery
GPIO18Heater PWMQ1 gate (100 Ω, 10 kΩ pull-down)OutLEDC 1 kHz, 10-bit, soft-start
GPIO21Heater enableQ3 gate → relay K1 coilOutHIGH only while PREHEATING/DRYING
GPIO19Fan enableQ2 gate (100 Ω, 10 kΩ pull-down)OutForced ON whenever heating
GPIO20Fan tachSan Ace pulse sensorIn10 kΩ pull-up to 3V3, 2 pulses/rev
GPIO2Heater NTC (ADC1_CH2)104GT-2 + 47 kΩ to 3V3In12 dB attenuation, 8-sample average
GPIO8Status LEDOn-board RGB LEDOutStrapping pin; LED only
GPIO9Local buttonOn-board BOOT buttonInShort: stop · 3 s: reset fault · 10 s: clear bonds
5V / GNDPowerPololu D24V10F5 output—Do not also power from USB while on 24 V without care

Configuration de l'ESP32

  1. 1. Matériel requis

    ESP32-C6-DevKitC-1-N8 · USB-C data cable · SHT40 + STEMMA QT cable
    (full dryer: see the Bill of Materials above)
  2. 2. Installer Arduino IDE ou PlatformIO

    # Arduino IDE 2.x: https://www.arduino.cc/en/software
    # or PlatformIO Core:
    python3 -m pip install -U platformio
  3. 3. Installer le support ESP32

    # Arduino IDE → Settings → Additional boards manager URLs:
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
    # Boards Manager → install "esp32 by Espressif Systems" ≥ 3.3.12
    
    # arduino-cli
    arduino-cli core update-index --additional-urls https://espressif.github.io/arduino-esp32/package_esp32_index.json
    arduino-cli core install esp32:esp32
  4. 4. Brancher l'USB

    # Use the USB-C port labelled "UART" on the DevKitC-1.
    # Unplug the 24 V supply while flashing from your computer.
  5. 5. Choisir la carte

    # Arduino IDE: Tools → Board → esp32 → "ESP32C6 Dev Module"
    #   Flash Size: 8MB · Partition Scheme: Custom (uses SpoolDry/partitions.csv)
    # PlatformIO: board = esp32-c6-devkitc-1 (already in platformio.ini)
  6. 6. Choisir le port

    # macOS: /dev/cu.usbserial-*  ·  Linux: /dev/ttyUSB0  ·  Windows: COM3
    arduino-cli board list
  7. 7. Installer les bibliothèques

    # Library Manager → "NimBLE-Arduino" by h2zero ≥ 2.5.1
    arduino-cli lib install "NimBLE-Arduino@2.5.1"
    # PlatformIO installs it automatically (lib_deps)
  8. 8. Compiler le firmware

    cd esp32
    pio run
    # or
    arduino-cli compile --fqbn esp32:esp32:esp32c6:FlashSize=8M,PartitionScheme=custom SpoolDry
  9. 9. Flasher le firmware

    pio run -t upload
    # or
    arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32c6:FlashSize=8M,PartitionScheme=custom SpoolDry
  10. 10. Ouvrir le moniteur série

    pio device monitor -b 115200
    # expected:
    SpoolDry firmware 1.0.0 (BLE protocol v1) ready as "SpoolDry-A1B2"
    Advertising SpoolDry service 5D0F0001-2B7E-4C8A-9B1E-53504F4F4C44
  11. 11. Vérifier l'annonce BLE

    # Any BLE scanner (e.g. nRF Connect) must show "SpoolDry-XXXX"
    # advertising service 5D0F0001-2B7E-4C8A-9B1E-53504F4F4C44
  12. 12. Ouvrir l'app SpoolDry

    # SpoolDry → Device → Add Dryer (Bluetooth permission prompt appears)
  13. 13. Connecter l'appareil

    # Tap "SpoolDry-XXXX" → accept the iOS pairing request
    # New phones can pair within 5 min after power-on
    # (or hold BOOT for 10 s to clear bonds and reopen pairing)

Téléchargement du firmware

  • Version: 1.0.0 · BLE Protocol v1
  • Board: Espressif ESP32-C6-DevKitC-1-N8 (8 MB)
  • Framework: Arduino-ESP32 3.3.x (PlatformIO: pioarduino)
  • Dependencies: NimBLE-Arduino 2.5.x (h2zero)
  • Configuration: SpoolDry/src/core/Config.h (pins, limits)
  • Partitions: SpoolDry/partitions.csv (2× 3 MB OTA slots)
  • Tests: make -C test/host test (33 safety & protocol tests)
  • Service UUID: 5D0F0001-2B7E-4C8A-9B1E-53504F4F4C44
Télécharger les sources (.zip)

Repères de séchage typiques

Repères de départ typiques issus des pages officielles des fabricants, pas une exigence universelle. Suivez toujours la fiche technique. Le matériel SpoolDry v1 atteint 70 °C.

MatériauTempérature typiqueDurée typiqueDépart SpoolDrySources
PLA45–60 °C4–8 h50 °C · 6 h · <20% RHBambu Lab: 50–60 °C · 8 h (blast oven)
Prusa Research: 45 °C · 6 h
Fiberlogy: 50 °C · 4 h
3DXTECH: 45 °C · 4 h
PETG55–70 °C4–8 h65 °C · 6 h · <20% RHBambu Lab: 60–70 °C · 8 h (blast oven)
Prusa Research: 55 °C · 6 h
Fiberlogy: 60 °C · 4 h
3DXTECH: 65 °C · 4 h
ABS60–85 °C4–8 h70 °C · 6 h · <20% RHBambu Lab: 75–85 °C · 8 h (blast oven)
Fiberlogy: 60 °C · 4 h
3DXTECH: 80 °C · 4 h
ASA65–85 °C4–8 h70 °C · 6 h · <20% RHBambu Lab: 75–85 °C · 8 h (blast oven)
Prusa Research: 80 °C · 4 h
Fiberlogy: 80 °C · 4 h
3DXTECH: 80 °C · 4 h
TPU50–75 °C4–8 h60 °C · 6 h · <15% RHBambu Lab: 65–75 °C · 8 h (blast oven)
Prusa Research: 60 °C · 4–6 h
3DXTECH: 65 °C · 4 h
PA (Nylon)70–90 °C4–12 h70 °C · 12 h · <10% RHBambu Lab: 75–85 °C · 8–12 h (blast oven)
Fiberlogy: 70 °C · 4 h
3DXTECH: 80 °C · 4 h / 90 °C · 4–6 h
PC70–90 °C4–8 h70 °C · 8 h · <15% RHPolymaker: 70–80 °C · 6–8 h
Bambu Lab: 75–85 °C · 8 h (blast oven)
Prusa Research: 85 °C · 5 h
3DXTECH: 120 °C · 4 h+
PVA55–85 °C4–12 h65 °C · 8 h · <15% RHRaise3D: 80 °C · 8–12 h
Bambu Lab: 75–85 °C · 8–12 h (blast oven)
3DXTECH: 65 °C · 4 h
BVOH50–85 °C4–12 h55 °C · 6 h · <15% RHFiberlogy: 50 °C · 4 h
Bambu Lab: 75–85 °C · 8–12 h (blast oven)
PEEK 110–150 °C120–150 °C3–6 h70 °C · 6 h · <10% RH3DXTECH: 150 °C · 3 h
PEI / ULTEM 110–150 °C130–150 °C4–8 h70 °C · 6 h · <10% RH3DXTECH: 150 °C · 4–6 h / 130 °C · 4–6 h
Prusa Research: 150 °C · 8 h
PPS 110–150 °C110–140 °C4–12 h70 °C · 6 h · <10% RHBambu Lab: 110–140 °C · 8–12 h (blast oven)
3DXTECH: 110 °C · 4 h
PA-CF70–100 °C4–12 h70 °C · 12 h · <10% RHBambu Lab: 75–85 °C · 8–12 h (blast oven)
Prusa Research: 90 °C · 6 h
Fiberlogy: 80 °C · 4 h
3DXTECH: 90 °C · 4 h
PA-GF 110–150 °C75–100 °C4–16 h70 °C · 12 h · <10% RHForward AM (BASF): 100 °C · 4–16 h
Fiberlogy: 80 °C · 4 h
3DXTECH: 90 °C · 4 h
Bambu Lab: 75–85 °C · 8–12 h (blast oven)
PETG-CF60–70 °C4–8 h65 °C · 6 h · <20% RHBambu Lab: 60–70 °C · 8 h (blast oven)
3DXTECH: 65 °C · 4 h
PLA-CF45–60 °C4–8 h50 °C · 6 h · <20% RHBambu Lab: 50–60 °C · 8 h (blast oven)
PC-CF 110–150 °C80–120 °C4–8 h70 °C · 10 h · <15% RHPrusa Research: 90 °C · 4 h
3DXTECH: 120 °C · 4 h
ASA-CF65–85 °C4–8 h70 °C · 6 h · <20% RH3DXTECH: 80 °C · 4 h
Bambu Lab: 75–85 °C · 8 h (blast oven)
PPS-CF 110–150 °C110–140 °C8–12 h70 °C · 6 h · <10% RHBambu Lab: 110–140 °C · 8–12 h (blast oven)

Sécurité

Le matériel SpoolDry est un projet amateur / prototype. Il n'est pas certifié (ni CE, ni UL). Vous le construisez et l'utilisez à vos risques.
  • Ne contournez jamais le fusible thermique ni le thermostat.
  • N'utilisez jamais un câblage ou des connecteurs endommagés.
  • Utilisez l'alimentation 24 V certifiée indiquée.
  • Ne dépassez pas les valeurs du chauffage, des fils et connecteurs.
  • Éloignez les matériaux inflammables des éléments chauffants.
  • Utilisez un boîtier adapté et résistant à la chaleur ; électronique hors zone chaude.
  • Ajoutez une protection thermique indépendante du firmware.
  • Ne laissez pas un prototype expérimental sans surveillance.

Couches de protection

  1. Firmware: 80 °C absolute, target +8 °C/30 s, sensor CRC & plausibility, fan tach, heater-NTC derating, runaway & stuck-heater detection, 5 s watchdog
  2. Heater defaults OFF: 10 kΩ gate pull-downs, outputs driven LOW first at boot, sessions never resume after reset
  3. Two independent switches in the heater path: MOSFET Q1 + relay K1
  4. 85 °C bimetal thermostat opens the relay coil without software
  5. 100 °C one-shot thermal cutoff in the heater current
  6. Self-limiting PTC element (power collapses without airflow)
  7. 7.5 A fuse · certified, enclosed 24 V supply (no user mains wiring)

Tarif simple

Gratuit

0

3 séchages complets avec toutes les fonctions, un sécheur.

Questions fréquentes

Non. SpoolDry communique avec le sécheur en Bluetooth LE. Pas de compte, pas de serveur, pas de cloud.

L'ESP32 poursuit seul le séchage avec toutes les limites de sécurité. À votre retour, SpoolDry se reconnecte et met à jour l'historique, les widgets et l'activité en direct.

Une carte Espressif ESP32-C6-DevKitC-1, un capteur Sensirion SHT40, un chauffage PTC 24 V, un ventilateur San Ace 80, des MOSFET logiques, un relais, un thermostat 85 °C, un fusible thermique 100 °C et un bloc Mean Well 24 V. Voir la nomenclature.

Le matériel v1 est limité à 70 °C dans la chambre (ventilateur). Cela couvre PLA, PETG, ABS, ASA, TPU, PA, PC et grades chargés. PEEK, PEI et PPS nécessitent 110–150 °C.

Une séance compte quand le sécheur confirme le démarrage. Les échecs, lancements de l'app et consultations du minuteur ne comptent jamais.

Non. Ce sont des repères typiques résumés des pages fabricants (liées). Suivez toujours la fiche technique.