目录
更新 - 2 月 3, 2026
现代烧木柴的炉子通常都有一个集成的燃烧控制系统。如果您的燃木炉灶还没有这种自动系统,您可以结合智能家居(Raspberry Pi)建立自己的控制系统。.
即使还无法实现自动装载木材,但除了颗粒燃料炉之外,自动化还能实现更均匀的燃烧、恒定的温度以及更低的木材消耗量(最高可达 30 %)和更高的效率。.
如果你不敢马上动手,我可以告诉你,我曾经也有过同样的感觉。但是,如果您仔细研究一下这个主题以及 RaspberryMatic 在 Raspberry Pi 上提供的可能性,您很快就会相信自己 „能做到“!
就像生活中经常发生的那样:一起努力会更好!让我们开始吧
理论
燃烧室上方约 20 厘米处的烟道中拧有一个高温传感器,我们可以通过肉眼看到火焰的形态和颜色。.
根据需要保持的 200 °C 左右的温度,它使用 Raspberry Pi 上的一个简单程序来打开和关闭送风挡板,这在以前必须手动完成 - 如果您看着烤箱 ...
原则上,这是一个简单的机械装置。真正意义上的机械装置是通过一个由步进电机驱动的线性驱动器来实现的。根据实际温度值与设定值的比较,步进电机接收到的信息是,如果温度过低,应该增加还是减少送风量。因此,与线性滑块机械连接的送风风门(手动)执行杆向前或向后移动,风门被打开或关闭。.
由于 RaspberryMatic 不提供直接寻址步进电机的功能,我们只能使用 ESP32-IDF 这种小型计算机,它可以连接步进电机控制器,从而接管对步进电机的控制。.
RaspberryMatic 与 ESP32-IDF 之间通过 WLAN 进行通信,ESP32-IDF 已集成了 WLAN。ESP32-IDF 是用 C++ 和 Arduino IDE 编程的,本文中包含了该程序,只需更改几个参数即可轻松传输。.
此外,还提供了用于记录温度和线性步进电机定位的程序,以方便传输。.
购物清单
- 树莓派 4 B 型 套装含外壳、风扇、电源装置 - 约 95 欧元
- 16 GB SD 卡 (用于安装 RaspberryMatic)- 约 10,- 欧元
- RaspberryMatic (下载) - 免费
(与 树莓派面包师 (Mac) 或 树莓派成像器 (视窗) 复制到 SD 卡;;
创建变量 燃烧状态 类型 字符串); 燃烧的襟翼 类型 数量); 所需的燃烧熄灭挡板 类型 数量); 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 结果 可以在倒数第二行输出中找到,例如„19827“) - ESP32 开发板 (例如,ESP32 DevKit V1)- 约 12,- 欧元
Arduino IDE 2.x 下载 (Mac) (视窗) - CL86Y 步进电机驱动器 (或 TB6600)*
- NEMA 17 步进电机 (200 级/转)* - 套装约 80,- 欧元
- 线性驱动 100 毫米、150 毫米,适用于上述类型的步进电机 约 50 欧元
- 2 个限位开关 (机械)--约 4,- 欧元
- 48 伏直流供电装置 (用于 12A 电机)- 约 39 欧元
- 供电装置 5 伏直流 (用于 ESP32,如 USB) - 约 7,- 欧元
- ELV PT1000 高温传感器 4 线 Art.编号 258570 - 约 24,- 欧元
- ELV 铂金温度传感器接口 - Art.编号 162126 - 约 45,- 欧元
- 黄铜管接头 M10 x 6 毫米 用于 PT1000 温度传感器 - 约 4,- 欧元
与通常价格在 750 欧元至 1,500 欧元之间的改装套件(如果有的话)相比,这套总价约为 370 欧元的改装套件不仅功能齐全,而且价格低廉!
准备工作
在 Raspberry Pi 4 B 的 SD 卡上安装 RaspberryMatic 的步骤如下 这里 详细说明,包括外壳安装(如果没有购买套件)。.
ESP32 - 设置
MacOS
步骤 1:安装 Arduino IDE
- 下载:
- 转至: https://www.arduino.cc/en/software
- 下载 MacOS 版 „Arduino IDE 2.x
- 选择
.dmg英特尔或.dmg苹果硅 (M1/M2/M3)
- 安装:
.dmg打开文件- 将 Arduino IDE 拖入程序文件夹
- 启动 Arduino IDE
安装 ESP32 支持板
- 打开 Arduino IDE
- 开放式董事会经理:
- 菜单
Arduino IDE→设置(或Cmd + 、 ,) - 在 „附加板管理器 URL “下输入 URL:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- 点击
好的
- 菜单
- 安装 ESP32 电路板:
- 点击左侧的黑板图标(或在 菜单栏
工具→董事会→执行局经理) - 搜索
esp32 - 安装: „esp32 by Espressif Systems“ (版本 2.0.17 或更新版本)
- 等待安装完成(可能需要 5-10 分钟)
- 点击左侧的黑板图标(或在 菜单栏
USB 驱动程序(最高支持 OS 10.14)
如果无法识别 ESP32:
- 下载: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- 文件
macOS_VCP_Driver.zip下载 - 安装并重新启动 Mac
用于 CH340 芯片:
连接 ESP32
- 通过 USB 连接 ESP32
- 检查端口:
- Arduino IDE 菜单栏:
工具→港口 - 选择类似的端口:
/dev/cu.usbserial-0001或/dev/cu.SLAB_USBtoUART或/dev/cu.wchusbserial*
- Arduino IDE 菜单栏:
选择委员会
- Arduino IDE:
- 菜单栏
工具→董事会→esp32→ „ESP32开发模块“
- 菜单栏
- 设置
- 上传速度: 115200
- 闪光频率: 80MHz
- 闪光灯模式: QIO
- 闪存大小: 4MB (32Mb)
- 分区计划: 默认 4MB,带 spiffs
测试上传
- 打开示例代码:
- 菜单栏
文件→实例→01.basics→眨眼
- 菜单栏
- 上传代码:
- 点击上传按钮 (→)
- 等待 „连接中... “出现
- 如果 „正在连接...... “挂起: 按住 ESP32 上的 BOOT 按钮不放
- 成功:
- „通过 RTS 引脚硬复位...“= 上传成功!
- ESP32 上的 LED 指示灯应闪烁
窗口
安装 Arduino IDE
- 下载:
- 转至: https://www.arduino.cc/en/software
- 下载 „Arduino IDE 2.x“ for Windows
- 选择
.exe安装人员
- 安装:
- 运行安装程序(以管理员身份)
- 保持激活所有选项
- 完成安装
安装 ESP32 支持板
- 打开 Arduino IDE
- 配置 Board Manager:
- 菜单栏
文件→首选项在 „附加板管理器 URL “下输入 URL:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- 点击
好的
- 菜单栏
- 安装 ESP32 电路板:
- 菜单栏
工具→董事会→执行局经理 - 搜索:
esp32 - 安装: „esp32 by Espressif Systems“ (版本 2.0.17+)
- 等待安装完成
- 菜单栏
安装 USB 驱动程序
Windows 通常不会自动识别 ESP32!
用于 CP2102/CP2104 芯片(最常见):
- 下载:
- https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- 文件
CP210x_Universal_Windows_Driver.zip
- 安装:
- 解压 ZIP
CP210xVCPInstaller_x64.exe以管理员身份运行- 完成安装
- 重启 Windows
用于 CH340/CH341 芯片:
- 下载:
- 安装:
- 解压 ZIP
CH341SER.EXE以管理员身份运行- 点击 „安装“
- 重启 Windows
找出芯片类型:
- 连接 ESP32
- 打开设备管理器:
Windows + X→设备管理器 - 连接(COM 和 LPT) 摊开
- 搜索
- „Silicon Labs CP210x...= CP2102
- „usb-serial ch340“ = ch340
- „SLAB_USBtoUART“ = CP2102
连接 ESP32 并检查端口
- 通过 USB 连接 ESP32
- 查找港口:
- 菜单栏
工具→港口 - 选择: COM3, COM4, COM5 等等.
- (数量因系统而异)
- 菜单栏
看不到端口? → 未安装驱动程序或安装了错误的驱动程序!
选择委员会
- 选择董事会:
菜单栏</em工具→董事会→esp32→ „ESP32开发模块“
- 上传设置:
- 上传速度: 115200
- 闪光频率: 80MHz
- 闪光灯模式: QIO
- 闪存大小: 4MB (32Mb)
- 分区计划: 默认 4MB,带 spiffs
测试上传
- 加载示例
- 菜单栏
文件→实例→01.basics→眨眼
- 菜单栏
- 上传:
- 点击上传按钮 (→)
- 可能是 „连接......“。. BOOT 按钮 按住 ESP32
- 成功:
- „硬重置......“=✅上传成功!
燃烧控制图书馆
自动包含(ESP32 内核):
- WiFi.h
- HTTPClient.h
- WebServer.h
- 首选项.h
- esp_task_wdt.h
故障排除
问题:„未找到端口“
Mac:
# 打开终端并检查:
ls /dev/cu.*
# 应显示
/dev/cu.usbserial-XXXX
/dev/cu.SLAB_USBtoUART
视窗
- 打开设备管理器
- 检查连接(COM 和 LPT)
- 重新安装驱动程序
- 重启 Windows
„连接...... “挂起
解决方案
- BOOT 按钮 按住 ESP32
- 然后点击上传按钮
- 按住 BOOT 按钮,直到出现 „写入...“(Writing...
- 释放按钮
替代方案
- 短按 EN 按钮(复位)
- 然后再尝试上传
„编译错误“
常见原因
- 选错电路板
- 未安装 ESP32 板支持
- 代码中的语法错误
解决方案
- 再次检查电路板:
ESP32 开发模块 - 打开电路板管理器 → 重新安装 esp32
上传正常,但串行监视器为空
解决方案
- 检查波特率:
- 代码
Serial.begin(115200);; - 串行监视器: 也 115200 设置
- 代码
- 检查端口:
- 选择的 COM 端口是否正确?
- 按 EN 按钮:
- 上传后重置
首次上传前的核对表
- [ ] 已安装 Arduino IDE
- [ ] 已安装 ESP32 板支持(版本 2.0.17+)。
- [已安装 USB 驱动程序(Windows!)。
- [ ] 通过 USB 连接的 ESP32
- [ ] Arduino IDE 中可见的端口
- [ ] 板:已选择 „ESP32 开发模块
- [ ] 上传速度:115200
- [ ] 闪存大小:4MB
- [ ] 串行监视器 波特率:115200
- [路由器 NTP 发布
NTP 发布
有些路由器默认配置为不共享 NTP,这意味着不会转发通过 NTP 端口 123 发出的请求,从而无法从 NTP 服务器请求数据。.
因此,必须定义相应的规则:

学习资源
正式文件:
- ESP32 Arduino https://docs.espressif.com/projects/arduino-esp32/
- Arduino 参考资料: https://www.arduino.cc/reference/en/
上传代码
- 打开文件:
- "(《世界人权宣言》) 该文件的文本内容 进入空的(!)Arduino IDE 窗口
- 定制 WiFi:
const char* WIFI_SSID = "DEIN_WIFI"; const char* WIFI_PASSWORD = "DEIN_PASSWORT";; - 输入 XML-API 标记:
const char* XML_API_TOKEN = "DEIN_TOKEN_HIER";;
必须在 RaspberryMatic 中安装 XML API 附加组件。然后,您可以通过点击 tokenregister.cgi 可生成一个令牌。令牌对今后所有图形用户界面登录都有效,由 16 位大写和小写字母组成。必须将其插入 ESP32 代码的适当位置。. - 上传:
- 验证 (✓) → 校验码
- 上传 (→) → 上传到 ESP32
- 打开串行监视器:
工具→串行监视器- 波特率 115200 (显示在菜单 "工具"--"...... 上传速度: .... 已停用)
- 观看输出!
调试
设置成功后:
- 测试 WiFi 连接
- 上传烧除控制代码
- 连接电机和限位开关
- 生成 RaspberryMatic 令牌
- 测试系统
ESP32 代码
所需的代码都有完整的注释,因此可以跟踪,必要时还可以定制。(下载)
ESP32 图形用户界面
在图形用户界面中,可以对其进行手动和连续设置,以便进行测试,确定废气温度与风门开度的关系。.
观察火焰模式,并在相关时间调整视觉上 „合适的 “风门开度百分比值。当时从 RaspberryMatic 读取的温度值被分配到设定的风门开度百分比值中,作为变化的起始值。下一次对风门开度进行可视化 „必要 “修正时,温度值将达到下一个温度值。.
例如,如果将 150°C 作为起点(从......开始)打开至 80%,将 200°C 作为起点(从......开始)减小至 45%,则在第一个 OTHER IF 功能下显示的星座结果为„ "。„燃烧控制 - 温度控制“如图所示。.

„如果没有外设连接到 ESP32,并且变量 "const bool TEST_MODE =" 仍在„真“站起来。.
改为„错误“取消测试模式并初始化所连接电机的参考运行,以确定限位开关定义的起始和终止位置。.
实时记录

诊断

自动错误处理
拦截可能出现的错误状态对于持续无故障运行至关重要。因此,代码提供了以下例程,用于识别错误并采取适当措施纠正错误:
- 堆栈溢出处理
- 断电检测
- 零点整除
- 限位开关紧急关闭
- HTTP 错误处理
- HTTP 异常处理
- 整数溢出检查
- 内存监控
- millis() 溢出
- 电机报警检测
- 恢复首选项
- 位置限制
- 防止超长阻塞操作
- Telnet 客户端管理
- Telnet NULL 指针
- 螺纹安全
- 令牌验证
- 看门狗定时器
- WiFi 自动重新连接
RaspberryMatic - 程序
烧断控制
计划
IF 系统状态 Burnup_Damper_Setpoint 的值范围在 0 和小于 101(百分比)之间
然后脚本......立即
!ESP32 IP 地址(在此自定义!)。
字符串 esp32_ip = "IP_Adresse_ESP32_eingeben";;
!获取系统变量的当前值
var sollwert = dom.GetObject("Abbrand_Klappe_Soll").Value();;
!为 ESP32 回调构建 URL
string url = "http://" # esp32_ip # "/setSoll?value=" # sollwert;;
!调用 ESP32
string cmd = "wget -q -O /dev/null '" # url # "'";;
system.Exec(cmd);;
!日志输出(可选,用于调试)
WriteLine("Burn-up: Send " # setpoint # "% to ESP32 " # esp32_ip);;
燃烧控制 - 温度控制
计划
如果设备选择 "PT1000_temperature_sensor_flue_gas",则实际温度从 ... 到 ...到 ...
然后 系统状态 Burn-off_Damper_Setpoint 立即 xxx*
否则,如果.
在这里,通过 OTHER IF 功能,顶部两行不断补充不同的温度范围和百分比值,直到覆盖所有需要的范围。.
* xxx„ 是所需的襟翼开口百分比值。.

线性推杆和限位开关组件
根据翻板机构下方的可用空间,配备电机的线性驱动装置安装在下方。一个 „叉 “连接到滑块上,通过主轴向前或向后移动,手动操作机构与之啮合。.
杠杆 „通常设计成可以上下轻微移动。叉 “的长度也会相应调整,以便手动将杠杆移出,并将其完全推开。.
一方面,如果电子控制器尚未完全设置为 100%,则在添加燃料时可产生最大吃水。.
另一方面,纯机械操作选项仍然可用,例如在电源发生故障时。.