【开源项目】基于ESP32的Web示波器ESP32_oscilloscope
项目概述
ESP32_oscilloscope是一个基于ESP32微控制器的示波器项目,它具备直观的网页界面,可以显示采集到的信号。这个项目最初是为了展示ESP32多任务功能而设计的,但现在它已经发展成为一个自成体系的示波器解决方案。
这款示波器能够在屏幕上显示多达736个样本。然而,采样率可能并不总是稳定的,因为ESP32还要处理其他的任务。这意味着,在不同的使用场景下,ESP32未必能够始终保持理想的采样频率。
Demo效果
ESP32 oscilloscope界面效果请移动到 http://jurca.dyn.ts.si/oscilloscope.html
复刻指南
请到https://github.com/BojanJurca/Esp32_oscilloscope,(此地址慢,如果没梯子,还可能打不开网页), git clone项目
我已经clone到了gitee,可以到https://gitee.com/lojam/Esp32_oscilloscope, 纵享丝滑。
编译准备
安装ESP IDF5.x开发环境,搭建开发环境,请参阅:ESP_IDF windows开发环境搭建入门教程简单明了(比官方的)-谷动谷力 (sunsili.com),如果旧版本的IDF,请升级到最近的版本的IDF.
安装好Arduino IDE
编译说明
为了启动ESP32_oscilloscope项目,用户需要按照以下步骤进行设置:
1. 将本项目中的所有文件复制到Esp32_oscilloscope目录。
2. 使用Arduino IDE打开Esp32_oscilloscope.ino文件。
3. 在Esp32_servers_config.h文件中,将YOUR-STA-SSID和YOUR-STA-PASSWORD替换为您自己的WiFi SSID和密码。
4. 选择一个SPIFFS分区模式(在“工具”菜单中选择“分区方案”)。
5. 如果您的ESP32板没有闪存,则需注释掉#define FILE_SYSTEM FILE_SYSTEM_LITTLEFS行,这样示波器将使用程序存储器代替文件系统来存储oscilloscope.html文件。
6. 编译并首次运行该草图,ESP32的闪存将被格式化,注意,这将清除闪存中的所有信息。
7. 使用FTP上传相关的图像和html文件到ESP32的/var/www/html目录中。
8. 在浏览器中打开http://ESP32板的IP/oscilloscope.html来访问示波器界面。
C:\esp32_oscilloscope>ftp YOUR-ESP32-IP
Connected to 10.0.0.3.
220-ESP32 FTP server - everyone is allowed to login
User (10.0.0.3:(none)):
331 enter password
Password:
230 logged on, use "/" to refer to your home directory "/"
ftp> put android-192-osc.png /var/www/html/android-192.png
226 /var/www/html/android-192-osc.png transfer complete
ftp> put apple-180-osc.png /var/www/html/apple-180.png
226 /var/www/html/apple-180-osc.png transfer complete
ftp> put oscilloscope.html /var/www/html/oscilloscope.html
226 /var/www/html/oscilloscope.html transfer complete
ftp>
示波器的工作原理
ESP32_oscilloscope通过处理和展示从输入引脚获得的数字或模拟信号,让用户能够看到其真实的波形。输入信号的数字值范围为0和1,模拟值则从0到4095,代表0V到3.3V的电压范围。
用户可以通过修改oscilloscope.html文件来适配自己的需求,比如指定使用哪些GPIO作为数字输入,哪些作为模拟输入,这样能更合理地监测信号。
处理反向信号
在某些ESP32板上,您可能会遇到反向模拟信号的问题。这时,可以通过在oscilloscope.h中注释或取消注释INVERT_ADC1_GET_RAW和/或INVERT_I2S_READ编译指令来解决。如果您的ESP32板支持I2S接口(如ESP32 DevKitC或NodeMCU-32S),您还可以选择是否使用此接口。使用I2S接口可以提高采样频率和单个模拟信号的质量,但缺点是无法同时使用多个模拟示波器。
关于模拟读取的注意事项
ESP32内部有两个成功逼近寄存器(SAR),其中只有ADC1可以用于示波器的模拟读取。这些GPIO引脚包括36、37、38、39、32、33、34、35。而ADC2引脚(GPIO4、0、2、15、13、12、14、27、25、26)只能在WiFi不工作的情况下才可以进行模拟读取,因此在使用ESP32_oscilloscope时,这些ADC2引脚是不可用的。
结论
ESP32_oscilloscope为用户提供了一种简单而高效的方式来实时监测信号。通过Web界面,用户不仅能轻松访问示波器,还能根据自己的需要进行自定义设置。无论是爱好者还是专业工程师,这款ESP32示波器都能够在日常工作、实验和学习中发挥重要的作用。