本文档持续更新,记录 MPPT Monitor 在各平台上的编译、安装、运行配置。
| 项目 | 最低要求 |
|---|---|
| 操作系统 | Ubuntu 24.04 LTS (x86_64) / Raspberry Pi OS (aarch64/arm64) |
| 编译器 | GCC 12+ (推荐 GCC 13+) |
| 内存 | 64MB 可用 RAM |
| 磁盘 | 50MB 可用空间 |
| 网络 | TCP 出站连接 (discover.zhonjin.com:40635) |
# 更新软件源
sudo apt-get update
# 安装基础编译工具
sudo apt-get install -y build-essential gcc g++ make
# 安装 OpenSSL 开发库(TLS 支持)
sudo apt-get install -y libssl-dev
# 可选:安装 pkg-config(自动检测 OpenSSL 路径)
sudo apt-get install -y pkg-config
# 验证安装
gcc --version # 应显示 13.x+
openssl version # 应显示 3.x+
# 进入项目目录
cd mppt_monitor
# 编译(自动检测 OpenSSL)
make
# 编译输出在 build/mppt_monitor
ls -la build/mppt_monitor
# 直接运行
./build/mppt_monitor
# 或
make run
# 安装到 /usr/local/bin
sudo make install
# 安装并启用 systemd 服务(开机自启 + 崩溃自动重启)
sudo make systemd
# 管理服务
sudo systemctl start mppt-monitor # 启动
sudo systemctl stop mppt-monitor # 停止
sudo systemctl restart mppt-monitor # 重启
sudo systemctl status mppt-monitor # 查看状态
sudo journalctl -u mppt-monitor -f # 查看实时日志
# Ubuntu Server 24.04 for RPi5
sudo apt-get update
sudo apt-get install -y build-essential libssl-dev pkg-config
# Raspberry Pi OS (Debian-based)
sudo apt-get update
sudo apt-get install -y build-essential libssl-dev pkg-config
# 验证
gcc --version
uname -m # 应显示 aarch64
cd mppt_monitor
make
Makefile 会自动检测平台架构,无需额外配置。
| 项目 | 说明 |
|---|---|
| GPIO 冲突 | 本项目使用 TCP 网络通信,不涉及 GPIO,无冲突 |
| 散热 | 建议安装散热片,长时间运行 CPU 温度可能较高 |
| 电源 | 使用官方 27W USB-C PD 电源,确保稳定供电 |
| 网络 | 优先使用有线网络,WiFi 可能增加延迟 |
| 存储 | 推荐使用 NVMe SSD 而非 SD 卡,提升可靠性 |
# 设置 CPU 性能模式(减少调度延迟)
echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 禁用蓝牙(如不需要,减少中断)
sudo systemctl disable hciuart
# 优化网络参数
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
如果 OpenSSL 安装在非标准路径(如 /opt/openAI/Lib64U/),使用以下命令:
# 方式一:手动指定编译参数
gcc src/main.c src/modbus_client.c src/web_server.c \
lib/cJSON-1.7.19/cJSON.c lib/mongoose-7.22/mongoose.c \
-W -Wall -Wextra -g -I. \
-Isrc -Ilib/cJSON-1.7.19 -Ilib/mongoose-7.22 \
-DMG_ENABLE_OPENSSL=1 \
-I/opt/openAI/Lib64U/include \
-L/opt/openAI/Lib64U/lib \
-lssl -lcrypto \
-lpthread -lm \
-o mppt_monitor
# 方式二:设置环境变量后使用 make
export CFLAGS="-DMG_ENABLE_OPENSSL=1 -I/opt/openAI/Lib64U/include"
export LDFLAGS="-L/opt/openAI/Lib64U/lib -lssl -lcrypto -lpthread -lm"
make
如果不需要 TLS/HTTPS 支持:
# 确保不定义 MG_ENABLE_OPENSSL
make CFLAGS="-Wall -Wextra -Wno-unused-parameter -O2 -g"
# 带 AddressSanitizer 和调试符号
make debug
# 使用 GDB 调试
gdb ./build/mppt_monitor
(gdb) run
mppt_monitor/
├── Makefile # 构建脚本
├── INSTALL.md # 本文档
├── TECHNICAL.md # 技术方案文档
├── CHANGELOG.md # 变更日志
├── src/
│ ├── main.c # 主程序入口
│ ├── modbus_client.h # Modbus 客户端头文件
│ ├── modbus_client.c # Modbus RTU over TCP 实现
│ ├── web_server.h # HTTP 服务器头文件
│ └── web_server.c # Mongoose HTTP 服务器实现
├── lib/
│ ├── cJSON-1.7.19/ # cJSON 库源码
│ │ ├── cJSON.c
│ │ └── cJSON.h
│ └── mongoose-7.22/ # Mongoose 库源码
│ ├── mongoose.c
│ └── mongoose.h
└── build/ # 编译输出目录
└── mppt_monitor # 可执行文件
sudo apt-get install libssl-dev
ping discover.zhonjin.comnslookup discover.zhonjin.com修改 src/web_server.h 中的 WEB_SERVER_PORT 和 WEB_SERVER_LISTEN_URL,然后重新编译。
正常现象,树莓派 5 编译此项目约需 30-60 秒。可以使用交叉编译加速:
# 在 x86 主机上交叉编译 ARM64
sudo apt-get install gcc-aarch64-linux-gnu
make CC=aarch64-linux-gnu-gcc
# 使用 debug 模式编译,启用 ASAN
make debug
./build/mppt_monitor
# ASAN 会打印详细的内存错误信息
| 平台 | GCC | OpenSSL | 状态 |
|---|---|---|---|
| Ubuntu 24.04 x86_64 | 13.3 | 3.0.13 | 已验证 |
| Raspberry Pi 5 (RPi OS) | 12.2+ | 3.0.x | 兼容 |
| Raspberry Pi 5 (Ubuntu 24.04) | 13.x | 3.0.x | 兼容 |
最后更新: 2026-08-04