Sommario
Aggiornato - 3 febbraio 2026
Una moderna stufa a legna è solitamente dotata di un sistema di controllo della combustione integrato. Se avete ancora una stufa a legna senza questo sistema automatico, potete costruire il vostro sistema di controllo in combinazione con Smarthome (Raspberry Pi).
Anche se non è ancora possibile automatizzare il caricamento della legna, a parte le stufe a pellet, l'automazione consente di ottenere una combustione più uniforme, temperature costanti e un consumo di legna inferiore fino a 30 % con una maggiore efficienza.
Se non „osate“ subito, posso dirvi che una volta mi sentivo allo stesso modo. Ma se guardate più da vicino l'argomento e le possibilità offerte da RaspberryMatic su un Raspberry Pi, ad esempio, vi convincerete presto che potete „farlo“!
E come spesso accade nella vita: è meglio insieme! Affrontiamolo!
Teoria
Ciò che possiamo vedere a occhio nudo dall'andamento della fiamma e dal suo colore viene rilevato da un sensore ad alta temperatura avvitato nel tubo dei gas di scarico a circa 20 cm sopra la camera di combustione.
In base alla temperatura da mantenere di circa 200 °C, utilizza un semplice programma sul Raspberry Pi per aprire e chiudere lo sportello dell'aria di alimentazione, cosa che prima doveva essere fatta manualmente - se si guardava il forno ...
In linea di principio, un meccanismo semplice. Il meccanismo, nel vero senso della parola, è qui realizzato tramite un azionamento lineare mosso da un motore passo-passo. In base al valore effettivo della temperatura rispetto al valore nominale, il motore passo-passo riceve l'informazione se aumentare o diminuire l'aria di mandata se la temperatura è troppo bassa. Di conseguenza, la leva di azionamento (manuale) della serranda dell'aria di mandata, che è meccanicamente accoppiata alla slitta lineare, viene spostata in avanti o indietro e la serranda viene aperta o chiusa.
Poiché RaspberryMatic non offre la possibilità di indirizzare direttamente un motore passo-passo, ci accontentiamo di un ESP32-IDF, un piccolo computer che offre il collegamento di un controller per motori passo-passo e può quindi assumerne il controllo.
La comunicazione tra il RaspberryMatic e l'ESP32-IDF avviene tramite WLAN, che è già integrata nell'ESP32-IDF. L'ESP32-IDF è programmato in C++, Arduino IDE ed è incluso in questo articolo per un facile trasferimento dopo la modifica di alcuni parametri.
Il programma per la registrazione della temperatura e del posizionamento del motore passo-passo lineare è fornito per un facile trasferimento.
Lista della spesa
- Raspberry Pi 4 Modello B Set con alloggiamento, ventola, alimentatore - circa 95 euro
- Scheda SD 16 GB (per l'installazione di RaspberryMatic) - circa 10,- Euro
- RaspberryMatic (Scaricamento) - gratuito
(con Panettiere Raspberry Pi (Mac) O Raspberry Pi Imager (Windows) Copia su scheda SD;
Creare variabili Stato_di_combustione (Tipo Corda); Burning_flap_actual (Tipo Numero); Burn_off_flap_desiderato (Tipo Numero); ISD-ID der drei Variablen ermitteln und im Code unter VAR_STATUS, VAR_IST und VAR_SOLL eintragen (Ermitteln der ISE-ID -> „http://IP_RaspberrPi:8181/rega.exe?x=dom.GetObject(%22Variablen_Name%22).ID()“ – das Risultato si trova nella penultima riga di output, ad esempio „".19827“) - Scheda di sviluppo ESP32 (ad es. ESP32 DevKit V1) - circa 12,- Euro
Arduino IDE 2.x Download (Mac) (finestre) - CL86Y Driver per motori passo-passo (o TB6600)*
- Motore passo-passo NEMA 17 (200 passi/giro)* - Set circa 80,- Euro
- Azionamento lineare 100 mm, 150 mm adatto al tipo di motore passo-passo sopra indicato circa 50,- Euro
- 2x interruttore di fine corsa (meccanico) - circa 4,- Euro
- Alimentatore da 48 V CC (per motore 12A) - circa 39,- Euro
- Alimentatore 5V DC (per ESP32, ad esempio USB) - circa 7,- Euro
- Sensore ELV PT1000 per alte temperature A 4 fili Art. N. 258570 - circa 24,- Euro
- Interfaccia del sensore di temperatura al platino ELV - Art. N. 162126 - circa 45,- Euro
- Raccordo in ottone M10 x 6 mm per il sensore di temperatura PT1000 - circa 4,- Euro
Per un totale di circa 370 euro, si tratta di un'alternativa completa e anche molto economica a un kit di retrofit - se è disponibile per la stufa - che di solito costa tra i 750 e i 1.500 euro!
Preparazione
L'installazione di RaspberryMatic sulla scheda SD per il Raspberry Pi 4 B è Qui descritto in dettaglio, compresa l'installazione dell'alloggiamento se non è stato acquistato un kit.
ESP32 - Configurazione
macOS
Passo 1: installare l'IDE Arduino
- Scarica:
- Vai a: https://www.arduino.cc/en/software
- Scaricare „Arduino IDE 2.x“ per macOS
- Scegliere
.dmgper Intel o.dmgper il silicio Apple (M1/M2/M3)
- Installazione:
.dmgAprire il file- Trascinare l'IDE Arduino nella cartella del programma.
- Avviare l'IDE Arduino
Installare il supporto della scheda ESP32
- Aprire l'IDE Arduino
- Manager del consiglio di amministrazione aperto:
- Menu:
IDE Arduino→Impostazioni(oCmd + ,) - Inserite gli URL in „URL aggiuntivi del gestore delle schede“:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- Fare clic su
OK
- Menu:
- Installare le schede ESP32:
- Cliccare sull'icona della lavagna a sinistra (o nella finestra di dialogo Barra del menu
Strumenti→Consiglio di amministrazione→Responsabile delle schede) - Ricerca per:
esp32 - Installare: „esp32 di Espressif Systems“ (Versione 2.0.17 o più recente)
- Attendere il completamento dell'installazione (potrebbero essere necessari 5-10 minuti).
- Cliccare sull'icona della lavagna a sinistra (o nella finestra di dialogo Barra del menu
Driver USB (fino a OS 10.14)
Se ESP32 non viene riconosciuto:
- Scarica: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- File:
macOS_VCP_Driver.zipscaricare - Installare e riavviare il Mac
Per il chip CH340:
- Scarica: https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
- Installare e riavviare il Mac
Collegamento dell'ESP32
- Collegare l'ESP32 via USB
- Porta di controllo:
- IDE Arduino Barra del menu:
Strumenti→porta - Selezionare una porta simile a:
/dev/cu.usbserial-0001O/dev/cu.SLAB_USBtoUARTO/dev/cu.wchusbserial*
- IDE Arduino Barra del menu:
Seleziona il consiglio
- IDE Arduino:
- Barra del menu
Strumenti→Consiglio di amministrazione→esp32→ „Modulo ESP32 Dev“
- Barra del menu
- Impostazioni:
- Velocità di caricamento: 115200
- Frequenza del flash: 80MHz
- Modalità flash: QIO
- Dimensione flash: 4MB (32Mb)
- Schema di partizione: Predefinito 4MB con spifferi
Caricamenti di prova
- Aprire il codice di esempio:
- Barra del menu
File→Esempi→01.basi→Ammiccamento
- Barra del menu
- Codice di caricamento:
- Fare clic sul pulsante di caricamento (→)
- Attendere che appaia „Connessione...“.
- Se „Connessione...“ si blocca: Tenere premuto il pulsante BOOT sull'ESP32
- Successo:
- „Azzeramento duro tramite il pin RTS...“ = Caricamento riuscito!
- Il LED dell'ESP32 dovrebbe lampeggiare
FINESTRE
Installare l'IDE Arduino
- Scarica:
- Vai a: https://www.arduino.cc/en/software
- Scaricare „Arduino IDE 2.x“ per Windows
- Scegliere
.exeInstallatore
- Installazione:
- Eseguire il programma di installazione (come amministratore)
- Lasciare tutte le opzioni attivate
- Completare l'installazione
Installare il supporto della scheda ESP32
- Aprire l'IDE Arduino
- Configurare Board Manager:
- Barra del menu
File→PreferenzeInserite gli URL in „URL aggiuntivi del gestore delle schede“:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- Fare clic su
OK
- Barra del menu
- Installare le schede ESP32:
- Barra del menu
Strumenti→Consiglio di amministrazione→Responsabile delle schede - Ricerca:
esp32 - Installare: „esp32 di Espressif Systems“ (Versione 2.0.17+)
- Attendere il completamento dell'installazione
- Barra del menu
Installare il driver USB
Spesso Windows NON riconosce automaticamente l'ESP32!
Per il chip CP2102/CP2104 (il più comune):
- Scarica:
- https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- File:
CP210x_Universal_Windows_Driver.zip
- Installazione:
- Disimballare lo ZIP
CP210xVCPInstaller_x64.exeEseguire come amministratore- Completare l'installazione
- Riavviare Windows
Per il chip CH340/CH341:
- Scarica:
- Installazione:
- Disimballare lo ZIP
CH341SER.EXEEseguire come amministratore- Fare clic su „INSTALLA“.“
- Riavviare Windows
Scoprire il tipo di chip:
- Collegamento dell'ESP32
- Aprire la Gestione periferiche:
Windows + X→Gestione dispositivi - Connessioni (COM e LPT) non si è mai visto
- Ricerca per:
- „Silicon Labs CP210x...“ = CP2102
- „USB-SERIAL CH340“ = CH340
- „SLAB_USBtoUART“ = CP2102
Collegare ESP32 e controllare la porta
- Collegare l'ESP32 via USB
- Scoprite il porto:
- Barra del menu
Strumenti→porta - Selezionare: COM3, COM4, COM5 ecc.
- (il numero varia a seconda del sistema)
- Barra del menu
Nessuna porta visibile? → Driver non installato o driver sbagliato!
Seleziona il consiglio
- Selezionare il consiglio:
Barra del menuStrumenti→Consiglio di amministrazione→esp32→ „Modulo ESP32 Dev“
- Impostazioni di caricamento:
- Velocità di caricamento: 115200
- Frequenza del flash: 80MHz
- Modalità flash: QIO
- Dimensione flash: 4MB (32Mb)
- Schema di partizione: Predefinito 4MB con spifferi
Caricamenti di prova
- Esempio di carico:
- Barra del menu
File→Esempi→01.basi→Ammiccamento
- Barra del menu
- Caricare:
- Fare clic sul pulsante di caricamento (→)
- Per „Collegamento...“ eventualmente. Pulsante BOOT tenere premuto sull'ESP32
- Successo:
- „Hard reset...“ = ✅ Caricamento riuscito!
Librerie per il controllo della combustione
Incluso automaticamente (ESP32 Core):
- WiFi.h
- HTTPClient.h
- WebServer.h
- Preferenze.h
- esp_task_wdt.h
Risoluzione dei problemi
Problema: „Porta non trovata“
Mac:
# Aprire il terminale e controllare:
ls /dev/cu.*
# Dovrebbe apparire:
/dev/cu.usbserial-XXXX
/dev/cu.SLAB_USBtoUART
Finestre:
- Aprire Gestione dispositivi
- Controllare i collegamenti (COM e LPT)
- Reinstallare il driver
- Riavviare Windows
„Collegamento...“ si blocca
Soluzione:
- Pulsante BOOT Tenere premuto sull'ESP32
- Quindi fare clic sul pulsante di caricamento
- Tenere premuto il pulsante BOOT finché non appare „Writing...“.
- Pulsante di rilascio
Alternativa:
- Premere brevemente il tasto EN (reset)
- Quindi provare a caricare di nuovo
„Errore di compilazione“
Cause comuni:
- È stata selezionata la scheda sbagliata
- Supporto scheda ESP32 non installato
- Errore di sintassi nel codice
Soluzione:
- Ricontrollare la scheda:
Modulo ESP32 Dev - Aprire Board Manager → reinstallare esp32
Il caricamento funziona, ma il monitor seriale è vuoto
Soluzione:
- Controllare la velocità di trasmissione:
- Codice:
Serial.begin(115200); - Monitor seriale: anche 115200 Set
- Codice:
- Porta di controllo:
- È stata selezionata la porta COM corretta?
- Premere il tasto IT:
- Azzeramento dopo il caricamento
Lista di controllo prima del primo caricamento
- [ ] IDE Arduino installato
- [ ] Supporto scheda ESP32 installato (versione 2.0.17+)
- [ ] Driver USB installato (Windows!)
- [ ] ESP32 collegato via USB
- [ ] Porta visibile in Arduino IDE
- [Scheda: „Modulo ESP32 Dev“ selezionato
- [ ] Velocità di caricamento: 115200
- [ ] Dimensione flash: 4MB
- [ ] Monitor seriale Velocità di trasmissione: 115200
- [ ] Rilascio NTP del router
Rilascio NTP
Alcuni router sono configurati per impostazione predefinita senza condivisione NTP, il che significa che le richieste tramite la porta NTP 123 non vengono inoltrate, con il risultato che non è possibile richiedere dati al server NTP indirizzato.
È quindi necessario definire una regola corrispondente:

Risorse didattiche
Documentazione ufficiale:
- ESP32 Arduino: https://docs.espressif.com/projects/arduino-esp32/
- Riferimento Arduino: https://www.arduino.cc/reference/en/
Caricare il codice
- Aprire il file:
- Il Contenuto testuale del file nella finestra vuota(!) di Arduino IDE
- Personalizzare il WiFi:
const char* WIFI_SSID = "DEIN_WIFI"; const char* WIFI_PASSWORD = "DEIN_PASSWORT"; - Inserire il token XML-API:
const char* XML_API_TOKEN = "DEIN_TOKEN_HIER";
Il componente aggiuntivo XML API deve essere installato in RaspberryMatic. È possibile modificare le impostazioni del componente aggiuntivo XML API facendo clic su tokenregister.cgi è possibile generare un token. Il token è valido per tutti i futuri accessi alla GUI e consiste in una sequenza di 16 cifre di lettere maiuscole e minuscole. Deve essere inserito nel codice ESP32 nel punto appropriato. - Caricare:
- Verificare (✓) → Controllare il codice
- Caricamento (→) → Caricamento su ESP32
- Aprire il Monitor seriale:
Strumenti→Monitoraggio seriale- Velocità di trasmissione: 115200 (viene visualizzata nel menu STRUMENTI - Velocità di caricamento: .... interrotto)
- Guarda l'uscita!
Messa in servizio
Dopo l'impostazione corretta:
- Test della connessione WiFi
- Caricare il codice di controllo della combustione
- Collegare il motore e il finecorsa
- Generare il token RaspberryMatic
- Sistema di test
Codice ESP32
Il codice richiesto è completamente commentato e quindi rintracciabile e personalizzabile se necessario. (Scaricamento)
GUI ESP32
Nella GUI, questo può essere impostato manualmente e in modo continuo a scopo di test per determinare la dipendenza della temperatura del gas di scarico dall'apertura della serranda.
Si osserva l'andamento della fiamma e si regola il valore percentuale visivamente „adatto“ dell'apertura della serranda al momento opportuno. Il valore di temperatura letto da RaspberryMatic in quel momento viene assegnato al valore percentuale di apertura della serranda impostato come valore di partenza per la modifica. Il valore di temperatura risulta dalla successiva correzione visivamente „necessaria“ dell'apertura della serranda.
Se, ad esempio, 150°C sono stati riconosciuti come punto di partenza (da ...) per l'apertura a 80% e 200°C come valore per la riduzione a 45%, allora la costellazione mostrata sotto la prima funzione ALTRO IF risulta nel programma „Controllo della combustione - Controllo della temperatura“ come illustrato.

„Modalità di prova“ viene visualizzata se non sono ancora state collegate periferiche all'ESP32 e la variabile "const bool TEST_MODE =" ancora su „vero“ sta.
Cambiare in „false.false“ annulla la modalità di test e inizializza la corsa di riferimento del motore collegato per determinare le posizioni di inizio e fine definite dai finecorsa.
Registrazione in tempo reale

Diagnostica

Gestione automatica degli errori
L'intercettazione di eventuali stati di errore è essenziale per un funzionamento continuo e senza problemi. Il codice è quindi dotato delle seguenti routine per riconoscere gli errori e correggerli con misure adeguate:
- Trattamento dell'overflow dello stack
- Rilevamento di brownout
- Divisione per ZERO
- Arresto di emergenza del finecorsa
- Gestione degli errori HTTP
- Gestione delle eccezioni HTTP
- Controllo dell'overflow dei numeri interi
- Monitoraggio della memoria
- millis() Overflow
- Rilevamento allarme motore
- Recupero delle preferenze
- Vincoli di posizione
- Protezione contro le operazioni di blocco molto lunghe
- Gestione dei client Telnet
- Puntatore NULL di Telnet
- Sicurezza del filo
- Convalida del token
- Timer watchdog
- Riconnessione automatica WiFi
RaspberryMatic - Programmi
Controllo della combustione
programma
SE lo stato del sistema Burnup_Damper_Setpoint nell'intervallo di valori 0 e inferiore a 101 (per cento)
POI SCRIPT ... IMMEDIATAMENTE
! Indirizzo IP ESP32 (PERSONALIZZARE QUI!)
string esp32_ip = "IP_Adresse_ESP32_eingeben";
! Ottenere il valore corrente della variabile di sistema
var sollwert = dom.GetObject("Abbrand_Klappe_Soll").Value();
! Creare l'URL per il callback ESP32
string url = "http://" # esp32_ip # "/setSoll?value=" # sollwert;
! Chiamare ESP32
string cmd = "wget -q -O /dev/null '" # url # "'";
system.Exec(cmd);
! Uscita di registro (opzionale, per il debug)
WriteLine("Masterizzazione: inviare " # setpoint # "% a ESP32 " # esp32_ip);
Controllo della combustione - Controllo della temperatura
programma
SE selezione del dispositivo "PT1000_temperature_sensor_flue_gas" PER LA TEMPERATURA EFFETTIVA da ... a ...
ALLORA Stato del sistema Burn-off_Damper_Setpoint IMMEDIATAMENTE xxx*
ALTRIMENTI SE ...
In questo caso, le due righe superiori vengono continuamente integrate con diversi intervalli di temperatura e valori percentuali da un'altra funzione IF, fino a coprire tutti gli intervalli richiesti.
* xxx„ è il valore percentuale desiderato dell'apertura del lembo.

Gruppo attuatore lineare e finecorsa
A seconda dello spazio disponibile sotto il meccanismo a ribalta, l'azionamento lineare dotato di motore viene montato al di sotto. Al carrello è fissata una „forcella“, che viene spostata in avanti o indietro dal mandrino, in cui si innesta il meccanismo azionato manualmente.
La „leva“ è solitamente progettata in modo da poter essere spostata leggermente verso l'alto e verso il basso. La lunghezza delle „forcelle“ viene regolata di conseguenza, in modo che la leva possa comunque essere spostata manualmente e spinta completamente in APERTURA.
Da un lato, questo serve a generare un tiraggio massimo quando si aggiunge carburante se il controllo elettronico non è ancora completamente impostato su 100%.
D'altra parte, l'opzione di funzionamento puramente meccanico è ancora disponibile, ad esempio in caso di interruzione dell'alimentazione.