ESP32网页示波器+波形发生器
项目开源地址:https://github.com/guohaomeng/ESP32WebScope
ESP32WebScope
只用一块ESP32制作的ESP32网页示波器+波形发生器,可以拿来生成以及观察低频信号,仅做学习使用
特性
波形发生器部分采用硬件定时器中断进行DAC输出的方式,运行在核心1上。实现方法可见wave_gen.hpp文件,里面注释很详细。
- 波形发生器频率 0-1500Hz
- 波形种类:正弦波、方波、锯齿波
- 可设置偏置电压与峰峰值
- 默认输出引脚 DAC channel 1 即 GPIO25(ESP32)
示波器部分是通过i2s进行adc采样后发送给上位机显示的,同样也运行在核心1上。每轮采样2048个点,但只取其中256个,取样间隔可通过设置全局变量sampleStep来改变。
- 示波器采样率,即I2S采样速率,我在代码里限制为1k~550K
- 默认采样引脚是ADC1_CHANNEL_7,即GPIO35
- 取样间隔调整,相当于波形横轴放大,目前最高4倍,适用于观察低频信号
- 软件触发,目前实现了上升沿/下降沿触发
- 示波器更多功能有待继续添加
通信方面,ESP32在websocket_init函数中初始化了一个websocket服务器以及一个http服务器。与通信相关的程序主要运行在核心0上。
这里要感谢来自Vida Wang大佬的websocket库
http服务器主要提供静态网页托管功能,可以将存放在flash中的web资源发送给客户端,发送完一次静态资源(280kb)大概需要3~5秒。
websocket服务器主要用于同客户端建立websocket连接并进行双向通信,客户端通过web界面向ESP32发送指令以更改参数,ESP32则可以主动向客户端发送采样数据及其他信息
web界面如下所示,其源代码见我的另一个仓库:ESP32WebScopeUI

更新:额外添加了一个50kHz的PWM信号,用于测试I2S+ADC极限采样率下的采样情况,这时候波形跳变较为严重,不过还能看出波形以及正确统计出频率。

使用方法
首先克隆本仓库到自己硬盘上,然后用vscode的
platformIO IDE插件打开然后需要编译并上传data目录下的web资源文件,点击侧边栏的PIO蚂蚁图标,在esp32dev下拉菜单中找到Platform并展开,点击
Build Filesystem Image根据data目录生成镜像文件,然后连接开发板点击Upload Filesystem Image上传到ESP32中。之后便是正常编译下载程序,这个我相信大家肯定都会_
ESP32网页示波器+波形发生器的更多相关文章
- STM32 基DMA的DAC波形发生器
DAC是STM32系列的一个基本外设,可以将数字信号转化成模拟信号,这次我将使用DAC来输出一个特定波形. 首先确定工作方法,由于我目前在做的简易示波器在输出波形的同时还需要显示输入信号,所以不能占用 ...
- (DDS)正弦波形发生器——幅值、频率、相位可调(二)
(DDS)正弦波形发生器--幅值.频率.相位可调(二) 主要关于调相方面 一.项目任务: 设计一个幅值.频率.相位均可调的正弦波发生器. 频率每次增加10kHz 相位每次增加 PI/2 幅值每次增加两 ...
- (DDS)正弦波形发生器——幅值、频率、相位可调(一)
(DDS)正弦波形发生器--幅值.频率.相位可调 一.项目任务: 设计一个幅值.频率.相位均可调的正弦波发生器. 频率每次增加1kHz. 相位每次增加 2*PI/256 幅值每次增加两倍 二.文章内容 ...
- 基于FPGA的DDS任意波形发生器设计
一.简介 DDS技术最初是作为频率合成技术提出的,由于其易于控制,相位连续,输出频率稳定度高,分辨率高, 频率转换速度快等优点,现在被广泛应用于任意波形发生器(AWG).基于DDS技术的任 ...
- 基于DDS的任意波形发生器
实验原理 DDS的原理 DDS(Direct Digital Frequency Synthesizer)直接数字频率合成器,也可叫DDFS. DDS是从相位的概念直接合成所需波形的一种频率合成技术. ...
- OMAPL多核异构通信驱动AD9833波形发生器-Notify组件
OMAPL多核异构通信驱动AD9833-Notify组件demo OMAPL多核通信有三个主要机制,Notify,MessageQ,RegionShare;这里主要利用了Notify机制进行通信控制. ...
- 《GK101任意波形发生器》任意波文件格式说明
详见PDF 文档: http://files.cnblogs.com/xiaomagee/GK101%E4%BB%BB%E6%84%8F%E6%B3%A2%E6%95%B0%E6%8D%AE%E6%A ...
- 制作任意波形发生器MAX038
- Pintech品致全新多功能MDO 704E系列示波器全新推出
2020年 7月,Pintech品致全新推出推出首款具有多个模拟通道和多个数字通道的示波器.每个模拟通道带宽为200 MHz,每个模拟通道采样率同时达1 GSa/s,在一台仪器中,实现精确.可重复的. ...
- loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852?
loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852? 在汽车传感器的波形检测应用中,有时候需要模拟各种汽车传感器的输出信号,用来驱动和监测对应的执行机构或者电路是否正常,这其中, ...
随机推荐
- DML—对表中的数据进行增删改
一.添加数据 1.给指定列添加数据 insert into 表名(列名1,列名2,...) values(值1,值2...); 执行给指定列添加数据前: -- 给指定列添加数据 insert into ...
- QT6新旧版本功能模块对比:QT6做了哪些优化重组?QT6新增加了哪些功能模块?QT6做了哪些改进、提升和优化?
简介 本文介绍了QT6新旧版本都有的功能模块.QT6优化掉了或转移了的功能模块.QT6新增加的功能模块,以及QT6做了哪些改进.提升和优化. 文章目录 QT6新旧版本都有的功能模块 QT6优化掉了或转 ...
- 系统编程-操作系统概论PART2
<1> 操作系统提供的服务 <2> 现代操作系统的特征 2.1 微内核(英文中常译作µ-kernel或者micro kernel) 这是一种能够提供必要服务的操作系统内核: ...
- [namespace hdk] diff.h
Example cth.txt 12345 54321 114514 hdk.txt 12345 54321 114514 #include"diff.h" using names ...
- 【赵渝强老师】如何分析Java的内存溢出问题
一.什么是内存溢出? 内存溢出(OOM:out of memory)通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出. 在J ...
- 【赵渝强老师】MongoDB插入文档
MongoDB是非关系型数据库NoSQL的代表,作为一款可分布式存储的数据库,对文档的操作是MongoDB的重中之重.在本文中,我们将着重为大家介绍如何在MongoDB中插入文档. MongoDB一共 ...
- PHP提薪模块
在使用es搜索的时候需要注意以下这几点 文档(Document)与索引(Index):在ES中,文档是最小的数据单元,类似于数据库中的一行记录.文档组织在索引中,索引类似于数据库中的表.了解如何创建索 ...
- Salesforce AI Specialist篇之 Prompt Builder
本篇参考: https://salesforce.vidyard.com/watch/UUAxcUfHYGAxH3D9wV1RxJ https://help.salesforce.com/s/arti ...
- CentOS7 控制台上安装运行 vmware workstation 备忘录
目标平台 CentOS 7.5.1804 无桌面,要跑个 Ubuntu.vmx 1.安装依赖库 yum -y install perl gcc kernel-devel libX11 libXiner ...
- linux tracepoint增加
引入tracepoint的背景 当需要获取内核的debug信息时,通常你会通过以下printk的方式打印信息: void trace_func() { //-- printk("输出信息&q ...