Code Monkey home page Code Monkey logo

esp32webscope's Introduction

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

img1

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

img2

使用方法

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

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

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

esp32webscope's People

Contributors

guohaomeng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.