# 搭建步骤说明 —— RS485 → Pharos LPC 灯光控制系统 日期:2026-10-09 ## 1. 系统组成 ``` 发送方(PC / ESP32 / 任意串口主机) │ RS485 总线 A/B 双绞线(9600 8N1,ASCII 帧 \n 结尾) ▼ Pharos LPC 控制器(0140650,IP 192.168.58.109) │ DMX universe 1 通道 1~32 ▼ 32 路灯光(Generic Conventional 8 bit 调光通道) 照度计(仁科 485 型,Modbus 地址 2,4800 8N1)挂在同一 485 总线, 由 Ubuntu 主机(192.168.58.7,/dev/ttyUSB0)轮询后转发 LUX=/LX2= 帧给 LPC。 ``` ## 2. 硬件接线 1. 发送方串口(USB-485 或 ESP32 UART+485 模块)A→A、B→B 接入 LPC 的 RS485 端口。 2. LPC 串口参数:RS485 模式,9600 8N1(Designer → Network 视图 → Interfaces → Serial Port 设置)。 3. DMX 输出:LPC DMX1 口接灯具/调光硅箱。 4. 照度计接同一总线(注意其为 4800 波特率,与 LPC 9600 混跑,互不干扰)。 ## 3. Designer 2 项目搭建(0140650.pd2) ### 3.1 灯具与 Patch 1. Layout 视图:Fixture Library 选 `Generic > Conventional 8 bit`,取消 Auto finish, 在网格上连续点击放置 32 个(8 列 × 4 行),Finish。自动归入组 `All Conventional 8 bit`。 2. Patch 视图:从左侧灯具树**拖拽**灯具到 DMX universe 1 的通道格子(点击/双击格子无效), 完成灯具 1~32 → 通道 1~32。 3. Patch 视图 → DMX universe 1 → eDMX Pass-Through 设为 **None**(本地模式; 直通优先级高于本地输出,二者不可叠加)。 ### 3.2 Timeline(FX 效果) Timeline 视图 → 工具栏 New 建 4 条 Timeline。块放置方法: **双击右侧 Built-in 面板的效果图标(画布出现蓝框)→ 单击画布空白处提交**; 块只在选中时渲染;紧邻后块会锁定前块 Release 字段(先设好 Release 再放下一块); 属性在右侧面板直接编辑(Start / Length / Fade / Release)。 | Timeline | 效果 | 配置 | |----------|------|------| | 1 | 常亮 | White 块 0-30s,Level 255 | | 2 | 呼吸 | 4 个 White 块:0-8 / 8-16 / 16-24 / 24-30s,Fade 4 / Release 4(末块 3/3) | | 3 | 闪烁 | White 块 0-30s,Shape=Square,Base 0 / Size 255 / Loop Period 1.00s | | 4 | 缓变 | White 块 0-30s,Fade 15 / Release 15 | **循环播放(2026-10-10 补)**:Timeline 默认播完 Length 即 released(灯灭)。 工具栏 **Loop 按钮**(↻ 单环图标,悬停提示 "Loop",位置约 x=358;标尺末端出现循环标记为开启) 已给 4 条 Timeline 逐一开启,但实测单独开启对控制器运行**不生效**; 实际由触发器 **#13 FXLoop**(Type=Timeline Ended, Timeline=Any → Run Script 重启该时间线)实现循环。 注意区分另两个相似按钮:**Hold At End**(→|,x=326,末端保持不释放)和 **Enable Looping**(↻ 带两点,x=768,仅编辑器仿真循环,不上传控制器)。 ### 3.3 触发器(Trigger 视图) 工具栏 Trigger → New... → Serial Input,每个触发器加 Action → Run Script → Quick Script 粘贴对应 Lua。 | # | String | 脚本文件 | 功能 | |---|--------|----------|------| | 2 | `BRT=<3d>` | lpc_serial_brt.lua | 手动亮度 0~100% → master_intensity | | 8 | `LUX=<6d>` | lpc_serial_lux.lua | 照度闭环自动调光 | | 9 | `LXT=<6d>` | lpc_serial_lxt.lua | 设定目标照度(变量 lux_target) | | 10 | `LX2=<6d>` | lpc_serial_lx2.lua | 照度→亮度对数映射(指示模式) | | 11 | `FX=<2d>` | lpc_serial_fx.lua | 效果选择:清 Override + `get_timeline(N):start_release_others()` | | 12 | `SC=<2d>` | lpc_serial_sc.lua | 场景选择:释放全部 Timeline + `get_group_override(0):set_intensity(level, 1.0)` | | 13 | Timeline Ended(Any) | lpc_fxloop.lua | 时间线到末尾自动重启实现循环;SC 释放属 Timeline Released 不会误触发 | SC 亮度预设:01=255 全亮 / 02=128 半亮 / 03=26 微亮 / 04=0 全灭。 ### 3.4 保存与上传 1. 保存:Ctrl+S 或 Project 视图 → Save Project(标题栏的 "*" 是应用图标不是未保存标记; 以文件 LastWriteTime / Recent Projects 列表的 Last modified 更新为准)。 2. Network 视图 → Upload → 选中设备行 → Upload All → 等 "Upload complete" → Close。 3. **注意:Upload 会清空控制器上的 Override**;SC 场景需重新下发。 4. 归档:把 `C:\Users\tonycao\Documents\0140650.pd2` 复制到本项目目录。 ## 4. Ubuntu 侧部署(192.168.58.7) ```bash # 文件 ~/rs485-lpc_test_rs485.py # 串口收发工具 ~/rs485-lpc/lux_sync.py # 照度轮询→BRT 帧推送(反逻辑:越暗越亮) ~/rs485-lpc/scan_modbus.py # Modbus 地址/寄存器扫描 ~/rs485-lpc/loop_test.sh # BRT 回归 ~/rs485-lpc/lux_test.sh # 照度闭环回归 ~/rs485-lpc/api_smoke.sh # LPC API 冒烟 # 启动照度同步(后台常驻) setsid bash -c 'nohup python3 ~/rs485-lpc/lux_sync.py > ~/rs485-lpc/lux_sync.log 2>&1 < /dev/null &' ``` 上传文件用 `Put-Remote.ps1`(-Remote 参数必须是目录 `/home/tonycao/rs485-lpc`), 远程执行用 `Run-Remote.ps1 -Cmd "..."`(Posh-SSH,密码 "0";Windows 自带 ssh.exe 会挂死,勿用)。 ## 5. 验证 ```bash # 发帧(Ubuntu) python3 ~/rs485-lpc_test_rs485.py -s 'FX=02' # 查 LPC 状态(Windows) curl.exe http://192.168.58.109/api/timeline # running/released/none curl.exe "http://192.168.58.109/api/output?universe=dmx:1" # 32 通道实时值 curl.exe http://192.168.58.109/api/group # master_intensity 回读 ``` 回归脚本:`loop_test.sh`(5/5)、`lux_test.sh`(7/7)、`lx2_test.sh`(8/8)。