项目简介
GHMon 是一个可配置的低功耗固件,专为小型自动化温室控制和数据记录而设计。该项目支持基于 STM32F103、STM32F401 和 ATTiny402 的设备,提供了传感器、执行器和控制器之间的协调机制,具备调度、日志记录和简单的控制终端支持功能。
项目的主要特性和功能
- 传感器支持:借助
sensors/sensor_defs.h
文件定义传感器实现细节,可读取环境数据。 - 执行器控制:通过
actuators/actuator_defs.h
文件定义执行器实现细节,能控制温室设备。 - 控制器协调:利用
controllers/controller_defs.h
文件定义控制器实现细节,协调传感器与执行器操作。 - 日志记录:由
log/logfile.h
文件实现数据记录功能,支持日志缓冲区写入。 - 调度功能:支持定时任务调度,保证传感器、执行器和控制器操作按计划执行。
- 用户交互:通过按钮和 LED 提供简单交互界面,支持状态检查、日志写入、控制器运行和设备时间设置等。
- 串口终端:支持通过 UART 连接进行简单终端操作,便于调试和监控。
安装使用步骤
环境准备
确保已安装 PlatformIO 工具链。
配置项目
- 在
config/instance
目录下创建或修改实例配置文件,包含config.h
、advanced.h
、sensor_defs.h
、actuator_defs.h
、controller_defs.h
和logfile.h
等文件。 - 根据设备类型,在
pio_inis/
目录下选择合适的.ini
文件,或复制并修改现有文件以适配新设备。
编译与上传
- 使用 PlatformIO 编译项目:
pio run
。 - 将固件上传到目标设备:
pio run --target upload
。
使用设备
- 通过按钮和 LED 进行交互:
- 短按按钮:唤醒设备并检查警告状态。
- 长按按钮(2 次 LED 闪烁):强制写入日志缓冲区。
- 长按按钮(3 次 LED 闪烁):强制运行控制器。
- 长按按钮(4 次 LED 闪烁):设置设备时间为预设值(默认 12:00 PM)。
- 通过 UART 连接设备,使用串口终端进行调试和监控。
故障排除
若设备初始化或配置出错,LED 会以每半秒一次的频率闪烁。此时,可通过串口连接设备,查看详细错误信息(需在 config.h
中启用 USE_UART_OUTPUT
)。
依赖库
- uHAL 和 ulib:作者自有的硬件抽象层和通用库。
- FatFS:elmchan 的 FAT 文件系统库,用于日志记录功能。
以上库文件均包含在项目的 lib/
目录中。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】