大伙儿平时玩单片机,最头疼的是啥?肯定是程序跑着跑着不对劲,想看个波形吧,手边又没示波器。正儿八经的示波器,哪怕是入门级的,怎么着也得大几百上千块,体积还不小,出差或者在宿舍捣鼓点小玩意儿,带着真不方便。
最近我发现个神仙项目,叫 Esp32_oscilloscope。简单说,就是把你手里那块几块钱、顶多十几块钱的 ESP32 开发板,直接变成一个带网页界面的示波器。不用装驱动,不用装上位机,手机电脑连上 WiFi 就能看波形。说实话,试完之后我第一反应是:这还要啥自行车啊?
这玩意儿到底是怎么实现的?
其实原理挺巧妙的。作者 Bojan Jurca 并不是想做一个能测高频信号的专业仪器,他是想让你“以 ESP32 的视角看世界”。
它利用了 ESP32 内部的 ADC(模数转换器),把采集到的电压数据,通过 WebSocket 实时推送到一个网页上。这个网页写得非常精简,直接跑在 ESP32 搭建的 Web 服务器里。你只要打开浏览器,就能看到一条条跳动的波形。
最牛的是,它不光能看模拟信号(0V 到 3.3V),还能看数字信号。你想想,调试个 PWM 占空比,或者看个传感器输出的脉冲,这不就跟开了天眼一样吗?
别被它的外表骗了,性能其实挺够用
咱得说实话,指望它去测几十兆赫兹的晶振波形,那确实是想多了。毕竟 ESP32 还要分心去处理 WiFi 协议栈,采样率不可能像专业示波器那么稳如老狗。
不过,项目里有个细节挺有意思:如果你用的是支持 I2S 接口的板子(比如常见的 DevKitC),你可以开启 I2S 模式。这种模式下,采样频率和信号质量会蹭蹭往上涨,测个音频信号或者低频控制信号,那真是绰绰有余。
不过有个小坑,我得提醒大家。ESP32 内部有两组 ADC,ADC1 和 ADC2。因为这项目得开 WiFi,而 ESP32 的 ADC2 和 WiFi 模块是共用硬件资源的,所以一旦 WiFi 开了,ADC2 就废了。大家用的时候,记得把信号接到 ADC1 对应的引脚上(比如 GPIO 32 到 39 那些),不然折腾半天没波形,你还以为板子坏了呢。
手把手教你“白嫖”这个示波器
安装过程其实挺接地气的,没那么多弯弯绕:
-
1. 改配置:下好代码,打开
Esp32_servers_config.h,把你的 WiFi 名字和密码填进去。 -
2. 选分区:在 Arduino IDE 里,分区方案(Partition Scheme)记得选带 SPIFFS 或者 LittleFS 的。因为那个漂亮的网页界面(.html 文件)是要存进 ESP32 的闪存里的。
-
3. 传文件:这步挺复古的,板子跑起来后,你得用 FTP 客户端(甚至 Windows 文件夹地址栏就行)把
oscilloscope.html和几个图标传到板子里。 -
4. 开刷:浏览器输入板子的 IP 地址,波形这就出来了!
要是你发现波形是反的,别急着摔板子。作者在 oscilloscope.h 里留了后门,改一下 INVERT_ADC1_GET_RAW 这个宏定义就能反转回来。
一些心里话:它适合谁?
我觉得这东西特别适合学生党,或者像我这种偶尔在家里搓个小电路的 DIY 爱好者。它最大的价值不是精度,而是便捷。
你想想,你在阳台调个路灯控制器,不用搬着沉重的示波器跑来跑去,直接手机扫一眼波形,这种感觉真的爽。而且它是开源的,你要是觉得界面不好看,或者想加个自动触发功能,直接改 HTML 和 JS 就行,这不比折腾那些闭源的商业软件有意思多了?
最近作者还把代码适配到了最新的 IDF 5.x,说明这项目还没凉,还在更新。如果你手里正躺着一块吃灰的 ESP32,听我的,赶紧把它刷起来,绝对是个趁手的小工具。
技术规格一览表
|
特性 |
描述 |
| 硬件平台 |
ESP32 全系列 (S2, S3 等需注意引脚映射) |
| 显示界面 |
纯 Web 浏览器 (支持手机/PC) |
| 采样点数 |
每屏最高 736 个采样点 |
| 电压范围 |
0V – 3.3V (对应 0 – 4095 原始值) |
| 存储方式 |
LittleFS 闪存系统 (支持无闪存模式) |
| 特殊功能 |
支持 I2S 高速采样模式 |
项目地址:https://github.com/BojanJurca/Esp32_oscilloscope