up,需要画新PCB
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# 2026-03-30 日志
|
||||
|
||||
## 编译环境搭建(esp32c3_moonshine_travelers)
|
||||
|
||||
- Python 3.14.0 已预装(C:\Python314)
|
||||
- 安装 PlatformIO 6.1.19:`pip install platformio`
|
||||
- PlatformIO Scripts 路径:`C:\Users\wuwen\AppData\Roaming\Python\Python314\Scripts`
|
||||
- 已写入用户 PATH 永久生效(无需每次手动加)
|
||||
- 平台工具链 `espressif32@6.11.0`、`framework-arduinoespressif32`、`toolchain-riscv32-esp` 已存在(之前工程留下)
|
||||
- 固件目录:`code/firmware-2.7.15.567b8ea`,编译命令:`pio run -e esp32c3_moonshine_travelers`
|
||||
|
||||
## 遇到问题:Windows MAX_PATH 限制
|
||||
|
||||
- SparkFun ICM-20948 库解压时路径超过 260 字符 → `PackageException`
|
||||
- 根因:`examples/Arduino/Example10_DMP_FastMultipleSensors/` 路径过长
|
||||
- 修复方案:需要管理员权限执行以下命令启用 Windows 长路径支持:
|
||||
```powershell
|
||||
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1
|
||||
```
|
||||
- 后续:用户反映编译成功(Windows 长路径问题已自行解决)
|
||||
|
||||
## 调试:节点不发公钥/节点名字对端看不到
|
||||
|
||||
- **根本原因**:设备 Flash 中残留 `owner.is_licensed = true`(HamConfig 曾通过 App 下发并持久化)
|
||||
- **公钥不发**:`NodeInfoModule::allocReply()` 中 `is_licensed==true` 时主动清零公钥字段(Ham 法规要求)
|
||||
- **名字对端不可见**:`handleReceivedProtobuf()` 检查 `p.is_licensed != owner.is_licensed` 时直接丢包
|
||||
- **解决**:擦除 Flash NVS 分区(`pio run -t erase`)后重烧,或通过 App 关闭 Licensed 开关
|
||||
|
||||
## 修复:切换 role 后 NodeInfo/公钥仍不广播(CLIENT_HIDDEN 遗留问题)
|
||||
|
||||
### Bug 1:owner.role 不随 config.device.role 同步
|
||||
- **位置**:`AdminModule.cpp` `handleSetConfig()` device_tag 分支
|
||||
- **原因**:改 role 时只更新 `config.device.role`,`owner.role`(广播字段)从不更新
|
||||
- **修复**:在 `installRoleDefaults()` 调用后加 `owner.role = config.device.role;`
|
||||
|
||||
### Bug 2:从 CLIENT_HIDDEN 切回 CLIENT 后广播间隔不恢复
|
||||
- **位置**:`NodeDB.cpp` `installRoleDefaults()`
|
||||
- **原因**:CLIENT_HIDDEN 把 `node_info_broadcast_secs` 设为 `INT32_MAX`,切回 CLIENT 时没有对应的重置分支
|
||||
- **修复**:新增 `CLIENT` / `CLIENT_MUTE` 分支,恢复 `default_node_info_broadcast_secs` 等默认值
|
||||
|
||||
### 额外确认
|
||||
- **公钥不生成的前置条件**:`config.lora.region == UNSET` 时 NodeDB::init() 跳过 PKI keygen;需先通过 App 设置 region 才会生成密钥对
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
## 项目概述
|
||||
- **项目**:LoRa Meshtastic 固件开发
|
||||
- **主代码目录**:`code/firmware-2.7.15.567b8ea`(基于 Meshtastic 官方固件 v2.7.15)
|
||||
- **主代码目录**:`code/meshtastic_firmware`(基于 Meshtastic 官方最新 develop 分支)
|
||||
- **旧代码目录**:`code/firmware-2.7.15.567b8ea`(基于 Meshtastic 官方固件 v2.7.15,已废弃)
|
||||
- **构建系统**:PlatformIO + ESP-IDF (Arduino framework for ESP32)
|
||||
|
||||
## 硬件平台 & 自定义板卡
|
||||
@@ -86,6 +87,9 @@
|
||||
|
||||
## 代码架构要点
|
||||
- **踩坑记录**:TCA9535 矩阵扫描 cols 计算中 `~` 运算符对 uint8_t 会整数提升为 int,导致高 4 位被污染。修复:`((~(p0In & 0xF0)) >> 4) & 0x0F`。见 scanMatrix()。
|
||||
- **踩坑记录**:`owner.role` 只在 `NodeDB::NodeDB()` 构造时同步一次(`owner.role = config.device.role`),`AdminModule::handleSetConfig()` 改 role 时不更新 `owner.role`,导致广播出去的 NodeInfo 里 role 仍是旧值。已修复:在 `AdminModule.cpp` device_tag 分支末尾加 `owner.role = config.device.role;`(2026-03-30)
|
||||
- **踩坑记录**:`NodeDB::installRoleDefaults(CLIENT_HIDDEN)` 把 `node_info_broadcast_secs = INT32_MAX`,但 `installRoleDefaults(CLIENT)` 没有对应的恢复分支,切回 CLIENT 后 NodeInfo 永远不广播。已修复:新增 CLIENT/CLIENT_MUTE 分支恢复 `default_node_info_broadcast_secs`(2026-03-30)
|
||||
- **踩坑记录**:`is_licensed = true` 时 `NodeInfoModule::allocReply()` 主动清零公钥,且接收端 `handleReceivedProtobuf()` 因 `is_licensed` mismatch 直接丢包。Flash 残留旧 HamConfig 时会触发此问题,需擦 Flash 或 App 关闭 Licensed 开关。
|
||||
- 路由层:FloodingRouter → ReliableRouter → NextHopRouter
|
||||
- 无线接口:RadioLib 抽象层(SX126x/SX128x/LR11x0/RF95)
|
||||
- 模块系统:`src/modules/` 下各功能模块(TextMessage, Position, Telemetry, etc.)
|
||||
@@ -102,8 +106,30 @@
|
||||
- MAX_THREADS=40
|
||||
- 默认 env:tbeam(需要切换到 esp32c3_moonshine 系列时要指定 env)
|
||||
- **Flash 占用**(esp32c3_moonshine_travelers):text≈1.92MB, data≈0.63MB, 总≈2.57MB / 4MB
|
||||
- **移植记录**(2026-03-30):
|
||||
- 将 esp32c3_moonshine_travelers 变体从 firmware-2.7.15 移植到官方最新 develop 分支
|
||||
- 修复 `tca9535IsCharging` 未声明错误:在 Power.cpp 添加 extern 声明
|
||||
- **分区表**(partition-table.csv):app=0x2C0000(2.75MB), OTA=0x030000(192KB), spiffs=0x100000(1MB)
|
||||
- **中文 12×12 字库**:`src/graphics/fonts/ChineseFont12x12.h`,21075 字形,535KB flash
|
||||
|
||||
## 🔧 硬件更换计划
|
||||
|
||||
### 问题描述
|
||||
- **症状**:不发送公钥、不发送节点名字信息(最新固件仍存在)
|
||||
- **潜在原因**:LLCC68 规格书不支持 SF11 125kHz 模式,导致 LoRa 通信异常
|
||||
|
||||
### 解决方案
|
||||
1. **方案A**:更换为带温补晶振(TCXO)的 LoRa 模块
|
||||
- 确保晶振精度满足 SF11 125kHz 模式要求
|
||||
|
||||
2. **方案B**:更换为 E22-30S 系列模块
|
||||
- E22-900M30S 或 E22-400M30S
|
||||
- 该系列支持更宽的工作模式
|
||||
|
||||
### 待确认事项
|
||||
- [ ] 确认 RA-01SC-P 是否为 LLCC68 芯片
|
||||
- [ ] 测试更换 TCXO 版模块后的表现
|
||||
- [ ] 测试 E22-30S 系列的兼容性
|
||||
- 生成工具:`tools/gen_chinese_font.mjs`(需 npm install @napi-rs/canvas)
|
||||
- 覆盖:U+4E00-U+9FFF(CJK 统一汉字全集,含 GB2312 6763 字)
|
||||
- 像素判定:透明背景 + 黑色前景,alpha > 128 阈值(去掉抗锯齿毛边,字形锐利)
|
||||
|
||||
Reference in New Issue
Block a user