当前位置: 首页 > news >正文

ESP32—c3实现网页显示ADC电压并实时更新

实时显示数据的原理涉及以下几个关键步骤:

  1. 数据采集

    • 设备(如ESP32-C3)通过传感器或ADC(模数转换器)等硬件接口采集数据。在这个例子中,ADC引脚读取模拟电压值,并将其转换为数字值。
  2. 数据处理

    • 采集到的数据需要被处理,以转换为有用的信息。在代码示例中,ADC读取的数字值被转换为电压值,这是通过将ADC值除以最大可能值(4095,对于12位ADC)并乘以参考电压来完成的。
  3. 建立服务器

    • 代码中创建了一个Web服务器,该服务器能够监听来自客户端(通常是用户的Web浏览器)的HTTP请求。
  4. 客户端请求

    • 客户端(如Web浏览器)通过发送HTTP请求到服务器的IP地址和端口来请求数据。
  5. 服务器响应

    • 当服务器接收到来自客户端的请求时,它会执行相应的处理函数(如handleRoot),该函数负责生成响应数据。在示例中,handleRoot函数读取ADC值,将其转换为电压,并生成包含此信息的HTML页面。
  6. 数据传输

    • 服务器将生成的响应数据(在本例中为HTML页面)发送回客户端。这个过程是通过HTTP响应完成的。
  7. 页面刷新

    • 为了实现数据的实时显示,HTML页面中包含了一个<meta>标签,它告诉浏览器每秒刷新页面一次。这是通过设置http-equiv="refresh"属性和content="1"(表示1秒)来实现的。
  8. 循环刷新

    • 每次页面刷新时,浏览器都会发送一个新的HTTP请求到服务器,服务器则返回最新的数据。这个过程不断重复,从而实现了数据的实时更新。

源码

#include <WiFi.h> // 引入WiFi库,用于连接和管理Wi-Fi网络
#include <WebServer.h> // 引入WebServer库,用于创建Web服务器// 定义连接Wi-Fi网络的SSID和密码
const char* ssid = "123"; // 替换为你的Wi-Fi网络名称
const char* password = "12345678901"; // 替换为你的Wi-Fi网络密码WebServer server(80); // 创建一个Web服务器实例,监听80端口// 定义ADC引脚和参考电压
const int adcPin = 2; // ESP32-C3上用于模拟读取的ADC引脚编号
const float adcVoltage = 3.3; // ADC引脚的参考电压void setup() {Serial.begin(115200); // 初始化串口通信,波特率为115200WiFi.begin(ssid, password); // 连接到Wi-Fi网络// 循环直到连接到Wi-Fi网络while (WiFi.status() != WL_CONNECTED) {delay(1000); // 等待1秒Serial.println("Connecting to WiFi..."); // 在串口监视器中输出连接信息}Serial.println("Connected to the WiFi network"); // 连接成功后输出信息Serial.print("IP address: "); // 输出分配的IP地址Serial.println(WiFi.localIP());pinMode(adcPin, INPUT); // 设置ADC引脚为输入模式server.on("/", handleRoot); // 当访问根URL时,调用handleRoot函数server.begin(); // 启动Web服务器Serial.println("HTTP server started"); // 服务器启动成功后输出信息
}void loop() {server.handleClient(); // 处理来自客户端的请求
}// 处理根URL的请求
void handleRoot() {int adcValue = analogRead(adcPin); // 读取ADC引脚的模拟值float voltage = (adcValue / 4095.0) * adcVoltage; // 将ADC值转换为电压值// 创建HTML页面内容String html = "<html><head><meta http-equiv=\"refresh\" content=\"1\"></head><body>";html += "<h1>ADC Voltage</h1>"; // 页面标题html += "<p>Voltage: " + String(voltage, 2) + " V</p>"; // 显示电压值,保留两位小数html += "</body></html>";server.send(200, "text/html", html); // 向客户端发送HTML页面内容
}

 


http://www.mrgr.cn/news/48207.html

相关文章:

  • Gin-vue-admin(4):项目创建前端一级页面和二级页面
  • BGP的六种状态分别是什么?
  • Vscode搭建C语言多文件开发环境
  • 微服务设计(第2版)读书笔记
  • Java(二十六)Object类equals与toString
  • 区间预测 | MATLAB实现QRDNN深度神经网络分位数回归时间序列区间预测
  • 0.1s速通小猿口算保姆教程
  • 【翻译】自定义 Qt Designer 窗体
  • 动态规划-路径问题——174.地下城游戏
  • git的提取和拉取有啥区别
  • Java 桶排序
  • 【Kuberntes】kubernets资源类型service详细介绍
  • 10.11作业
  • Redis原理篇之网络模型
  • SpringBoot 集成 Redis 总结
  • 中间件有哪些分类?
  • HW--GaussDB--(一)--老登原来TM是你啊,哈哈!
  • 5.STM32的串口通信
  • 鸿蒙开发(NEXT/API 12)【使用fetch发送网络请求】远场通信服务
  • STM32学习--3-5 光敏控制传感器控制蜂鸣器
  • 【Unity基础】Unity内购支持哪些应用商店?
  • Carrier Aggregation 笔记
  • 基于Maven 运行OpenRewrite的快速示例
  • 探索机器学习中的特征选择技术
  • 【华为】配置RIP协议
  • 【cpp】模板函数 模板类 特化 书写格式备忘