几块钱的ESP32,竟然能变身无线示波器?这波操作我服了!

 

大伙儿平时玩单片机,最头疼的是啥?肯定是程序跑着跑着不对劲,想看个波形吧,手边又没示波器。正儿八经的示波器,哪怕是入门级的,怎么着也得大几百上千块,体积还不小,出差或者在宿舍捣鼓点小玩意儿,带着真不方便。

最近我发现个神仙项目,叫 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. 1. 改配置:下好代码,打开 Esp32_servers_config.h,把你的 WiFi 名字和密码填进去。

  2. 2. 选分区:在 Arduino IDE 里,分区方案(Partition Scheme)记得选带 SPIFFS 或者 LittleFS 的。因为那个漂亮的网页界面(.html 文件)是要存进 ESP32 的闪存里的。

  3. 3. 传文件:这步挺复古的,板子跑起来后,你得用 FTP 客户端(甚至 Windows 文件夹地址栏就行)把 oscilloscope.html 和几个图标传到板子里。

  4. 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

 

发表评论