项目开源地址: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极限采样率下的采样情况,这时候波形跳变较为严重,不过还能看出波形以及正确统计出频率。

使用方法

  1. 首先克隆本仓库到自己硬盘上,然后用vscode的platformIO IDE插件打开

  2. 然后需要编译并上传data目录下的web资源文件,点击侧边栏的PIO蚂蚁图标,在esp32dev下拉菜单中找到Platform并展开,点击Build Filesystem Image根据data目录生成镜像文件,然后连接开发板点击Upload Filesystem Image上传到ESP32中。

  3. 之后便是正常编译下载程序,这个我相信大家肯定都会_

ESP32网页示波器+波形发生器的更多相关文章

  1. STM32 基DMA的DAC波形发生器

    DAC是STM32系列的一个基本外设,可以将数字信号转化成模拟信号,这次我将使用DAC来输出一个特定波形. 首先确定工作方法,由于我目前在做的简易示波器在输出波形的同时还需要显示输入信号,所以不能占用 ...

  2. (DDS)正弦波形发生器——幅值、频率、相位可调(二)

    (DDS)正弦波形发生器--幅值.频率.相位可调(二) 主要关于调相方面 一.项目任务: 设计一个幅值.频率.相位均可调的正弦波发生器. 频率每次增加10kHz 相位每次增加 PI/2 幅值每次增加两 ...

  3. (DDS)正弦波形发生器——幅值、频率、相位可调(一)

    (DDS)正弦波形发生器--幅值.频率.相位可调 一.项目任务: 设计一个幅值.频率.相位均可调的正弦波发生器. 频率每次增加1kHz. 相位每次增加 2*PI/256 幅值每次增加两倍 二.文章内容 ...

  4. 基于FPGA的DDS任意波形发生器设计

    一.简介       DDS技术最初是作为频率合成技术提出的,由于其易于控制,相位连续,输出频率稳定度高,分辨率高, 频率转换速度快等优点,现在被广泛应用于任意波形发生器(AWG).基于DDS技术的任 ...

  5. 基于DDS的任意波形发生器

    实验原理 DDS的原理 DDS(Direct Digital Frequency Synthesizer)直接数字频率合成器,也可叫DDFS. DDS是从相位的概念直接合成所需波形的一种频率合成技术. ...

  6. OMAPL多核异构通信驱动AD9833波形发生器-Notify组件

    OMAPL多核异构通信驱动AD9833-Notify组件demo OMAPL多核通信有三个主要机制,Notify,MessageQ,RegionShare;这里主要利用了Notify机制进行通信控制. ...

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

  8. 制作任意波形发生器MAX038

  9. Pintech品致全新多功能MDO 704E系列示波器全新推出

    2020年 7月,Pintech品致全新推出推出首款具有多个模拟通道和多个数字通道的示波器.每个模拟通道带宽为200 MHz,每个模拟通道采样率同时达1 GSa/s,在一台仪器中,实现精确.可重复的. ...

  10. loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852?

    loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852? 在汽车传感器的波形检测应用中,有时候需要模拟各种汽车传感器的输出信号,用来驱动和监测对应的执行机构或者电路是否正常,这其中, ...

随机推荐

  1. SaaS业务架构:业务能力分析

    大家好,我是汤师爷~ 今天聊聊SaaS业务架构的业务能力分析. 业务能力概述 简单来说,业务能力是企业"做某事的能力". 业务能力描述了企业当前和未来应对挑战的能力,即企业能做什么 ...

  2. SuperMap iDesktopX创建HBase数据源并导入数据

    需提前部署HBase集群,HBase环境搭建请查看文章https://www.cnblogs.com/zhangyongli2011/p/12034628.html 本文基于10.1.1 win版本s ...

  3. 全网最适合入门的面向对象编程教程:53 Python 字符串与序列化-字符串与字符编码

    全网最适合入门的面向对象编程教程:53 Python 字符串与序列化-字符串与字符编码 摘要: 在 Python 中,字符串是文本的表示,默认使用 Unicode 编码,这允许你处理各种字符集,字符编 ...

  4. LeetCode 218. 天际线问题 (扫描线+优先队列)

    扫描线+优先队列 https://leetcode-cn.com/problems/the-skyline-problem/solution/tian-ji-xian-wen-ti-by-leetco ...

  5. spring上 -基于注解配置bean,动态代理,AOP笔记

    用的是jdk8,spring框架里jar包的下载可以自己搜到 注解用到的jar包. 60,注解配置Bean快速入门 基本介绍 代码结构: UserDao.java package com.hspedu ...

  6. 重构案例:将纯HTML/JS项目迁移到Webpack

    我们已经了解了许多关于 Webpack 的知识,但要完全熟练掌握它并非易事.一个很好的学习方法是通过实际项目练习.当我们对 Webpack 的配置有了足够的理解后,就可以尝试重构一些项目.本次我选择了 ...

  7. Ubuntu 22.04 安装 Nvidia 驱动最方便安全的方式

    刚安装好的 Ubuntu 22.04 没有 N 卡驱动,输入 nvidia-smi,提示没有此程序并推荐到 apt 安装. 但是,使用 apt 安装 nvidia 驱动会有极大概率出现启动黑屏和闪屏问 ...

  8. Linux(Redhat 7.6)安装PG(Postgresql 9.6.0)

    Linux(Redhat 7.6)安装PG(Postgresql 9.6.0) 1. 摘要 需要在Linux上安装postgres数据库,指定安装目录,简单测试各种配置.安装包下载地址: //源码 h ...

  9. WEB渗透01_渗透测试方法论

    前言 这个系列是根据一个网络安全教程学习的笔记. 1 渗透测试 渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制.不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏 ...

  10. 顶点着色网格转换为 UV 映射的纹理化网格

    简介 顶点着色是一种将颜色信息直接应用于网格顶点的简便方法.这种方式常用于生成式 3D 模型的构建,例如 InstantMesh.然而,大多数应用程序更偏好使用 UV 映射的纹理化网格. 本教程将介绍 ...