220V 电源
实验设备共用第 1 路
为一台隔离在实验室网络里的 27DR 收发实验台,做一套不依赖现场值守的操作入口: 能远程给设备断电重启、看启动日志、烧写 bit、传回采集数据。
一条 Wi-Fi 负责远程接入,一条网线负责直连板卡,两者严格隔离。
Vivado、SSH、浏览器
wlan0 上联 · eth0 双静态 IP
220V 电源 · UART · 网口
USB 串口继电器(CH341)串口 AT 指令控制第 1 路 220V,带互斥锁与掉线 watchdog 自动上电。
USB-TTL 接板卡 UART,screen /dev/ttyBASE 115200 直接看 Zynq 启动与 APB 打印。
eth0 同时持 192.168.0.129/24(AAU .0.27)与 192.168.2.129/24(基带 .2.27),不设网关,默认路由仍走 Wi-Fi。
XVC 服务端,Vivado Hardware Manager 直连 树莓派IP:2542;大文件走 scp / rsync 中转。
单页 HTML,20 秒轮询一次状态;所有动作都要求二次确认。
电源与开发板
实验设备共用第 1 路
Raspberry Pi 4B
DNA 6A31F20C · MAC 00:0a:35:12:44:9e
界面上每个按钮都对应一条需要 token 与 Tailnet 双重校验的后端请求;展示页中的数值为历史快照。
比界面更值得留下来的,是这些判断。
板卡死机时 SSH 也一起死。所以电源走独立的 USB 串口继电器,只要树莓派自己活着,就能物理断电重启。反过来,树莓派挂了就全挂——这是这套架构唯一的单点。
"安全关机"先远端执行 sync && systemctl poweroff,连续确认 SSH 下线后才切继电器;"强制断电"要两次确认并明确告知可能损坏文件系统。两者在界面上用不同颜色和不同确认流程。
继电器和 UART 转接都是 CH341,插上后 ttyUSB0/1 顺序不固定。用 udev 按 idVendor:idProduct 绑定 /dev/ttyRELAY 与 /dev/ttyBASE,逻辑才不依赖插入顺序。
AAU 与基带盒用同一个 192.168.0.27,光看 IP 分不清谁是谁。改成读 Zynq 的 DNA 与 MAC 做注册表,支持改名、离线历史,同名设备接不同网口也不会混。
协作者通过 GitHub OAuth 进来,白名单在仓库里维护;出站方向用 nft 只放行指定的几台机器,避免这台"跳板"变成通向整个 Tailnet 的任意门。
控制面板和 NAS、媒体库跑在同一台机器上,但它们的生命周期完全不同。实验结束后,整条控制链路可以整体停用而不影响另一半——这也是它最终被归档、而文件与媒体服务继续运行的原因。