Arduino 网页示波器 – 基于 PHPoC Shield 的 6 通道高级触发 Web 示波器
项目特性
- **6 通道同步采集** – 利用 Arduino UNO 6 路 ADC (A0~A5)
- **多模式触发** – 上升沿、下降沿、双沿;单次/普通/自动触发
- **Web 交互界面** – 跨平台浏览器访问,支持触摸/鼠标操作
- **虚拟旋钮调节** – 时基、电压档位、垂直偏移实时调整
- **波形冻结/回放** – 触发后自动捕获并显示触发点前后波形
硬件清单
- Arduino UNO ×1
- PHPoC Shield for Arduino ×1 – 内置 Web 服务器与 WebSocket 网桥
- 跳线若干 – 信号接入 A0~A5,共地
工作原理
数据采集端 (Arduino)
以 115200 波特率持续向串口发送格式化文本:
timestamp_us ch0_V ch1_V ch2_V ch3_V ch4_V ch5_V\n
其中 timestamp_us = micros(),电压值 = analogRead() * (5.0/1023.0)。PHPoC Shield 通过 SPI 读取串口数据并转发至 WebSocket。
Web 显示端 (PHPoC 内嵌 Web App)
浏览器加载 oscilloscope.php,建立 WebSocket 连接 ws://,实时解析数据流,在 Canvas 绘制波形。前端实现:
- 环形缓冲区存储最近时长 (时基 × 格数) 的数据
- 触发状态机:监测选定通道过零/阈值跳变,满足条件时锁定缓冲区副本
- 虚拟旋钮:极坐标映射鼠标/触摸拖动角度 → 参数增量
- 自适应布局:横屏全屏波形,竖屏/窄屏侧边栏设置
使用步骤
- 将 PHPoC Shield 堆叠在 Arduino UNO 上,接入 USB 供电
- 上传
WebOscilloscope.ino至 Arduino - 通过 PHPoC 管理页面上传
oscilloscope.php至 Shield 文件系统 - 电脑/手机浏览器访问
https:///oscilloscope.php - 用两根杜邦线分别连接 GND 与待测信号至任意 A0~A5,即可观测波形
扩展 GND 引脚技巧
Arduino 仅有 2 个 GND 引脚,6 通道共地时可用排针扩展板或面包板汇聚地线,保持等电位。
代码结构
Arduino 端 (WebOscilloscope.ino)
极简循环:读 6 路 ADC → 计算电压 → 串口按格式输出。可注释掉不需要的通道以提高采样率。
Web 端 (oscilloscope.php)
单文件包含 HTML/CSS/JS,核心模块:
init()– Canvas/WebSocket/事件绑定初始化ws_onmessage()– 解析文本帧,填充live_data[]与live_time_us[]handle_trigger()– 触发判定逻辑update_loop()– 60fps 定时刷新:数据清理、触发状态更新、波形绘制、旋钮渲染、按钮状态同步draw_graph()– 坐标映射绘制多通道折线,含图例、网格、时基/电压标注
性能指标
| 参数 | 典型值 |
|---|---|
| 最大采样率 (6 通道) | ≈ 8.5 kS/s (受限于 115200 波特率文本传输) |
| 时基范围 | 1 ms/div ~ 10 s/div (前端可调) |
| 电压档位 | 0.5 V/div ~ 10 V/div (前端可调,硬件上限 5V) |
| 触发抖动 | < 1 采样周期 |
进阶改进方向
- 改用二进制协议 (如 Protobuf over WebSocket) 提升采样率至 50 kS/s+
- 增加数学运算通道 (FFT、X-Y 模式、差分测量)
- 移植至 ESP32 + WebServer,摆脱 PHPoC Shield 降低成本
- 增加屏幕截图导出 (PNG/CSV) 与波形标注功能
- 集成 WiFi 热点模式,无需外部路由器即可手机直连
适用场景
- 教学演示:模拟信号可视化、PWM 波形观测、传感器输出调试
- 现场快速故障排查:无需携带台式示波器
- 远程监测:局域网内任意设备实时查看波形
制造工艺
- 基于 Web 控制的 DMX 灯光系统 – Arduino 主控制器
- 用 Arduino Nano 和 Nokia 5110 LCD 自制 20kHz 示波器:简易 DIY 指南
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
- 从零构建智能 Arduino 四足机器人:完整指南
- DIY Arduino Nano 示波器:10 Hz–50 kHz / 128×64 LCD
- Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图