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

在掌控板上搭建http服务器

在掌控板上搭建http服务器

打开Arduino IDE,并且已经添加了ESP32的支持库。以下是创建一个基本HTTP服务器的步骤:

  1. 包含必要的库

    #include <WiFi.h>
    #include <WebServer.h>
    
  2. 配置WiFi
    替换ssidpassword为你的WiFi网络名称和密码。

    const char* ssid = "your_SSID";
    const char* password = "your_PASSWORD";
    
  3. 初始化Web服务器
    创建一个监听80端口的Web服务器实例。

    WebServer server(80);
    
  4. 定义处理函数
    为不同的URL路径定义处理函数。例如,当用户访问根目录时的处理函数。

    void handleRoot() {server.send(200, "text/html", "<h1>Welcome to32 Web Server</h1>");
    }
    
  5. 设置路由
    setup()函数中,设置路由和启动服务器。

    void setup() {Serial.begin(115200);WiFi.begin(ssid, password);// 等待WiFi连接while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}// 打印ESP32的IP地址Serial.println("");Serial.println("WiFi connected.");Serial.println("IP address: ");Serial.println(WiFi.localIP());// 定义根目录的处理函数server.on("/", handleRoot);// 启动服务器server.begin();Serial.println("HTTP server started.");
    }
    
  6. 处理客户端请求
    loop()函数中,不断处理客户端的请求。

    void loop() {server.handleClient();
    }
    
  7. 上传代码到ESP32
    使用Arduino IDE上传代码到你的ESP32开发板。

  8. 访问HTTP服务器
    打开浏览器,输入ESP32的IP地址(你可以通过串口监视器查看),你将看到由你的HTTP服务器返回的欢迎信息。

  9. 完整的代码如下

    #include <WiFi.h>
    #include <WebServer.h>
    const char* ssid = "your_SSID";   //将your_SSID替换成使用的wifi的SSID
    const char* password = "your_PASSWORD";    //将your_PASSWORD替换成使用的wifi的密码
    WebServer server(80);void handleRoot() {server.send(200, "text/html", "<h1>Welcome to ESP32 Web Server</h1>");
    }void setup() {Serial.begin(115200);WiFi.begin(ssid, password);// 等待WiFi连接while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}// 打印ESP32的IP地址Serial.println("");Serial.println("WiFi connected.");Serial.println("IP address: ");Serial.println(WiFi.localIP());// 定义根目录的处理函数server.on("/", handleRoot);// 启动服务器server.begin();Serial.println("HTTP server started.");
    }void loop() {server.handleClient();
    }
    
    1. 运行结果

    将代码编译上传后,打开Arduino IDE的串口监视器,可以看到连接WiFi的过程,并打印出esp32 http服务器所在的IP地址,如图1所示。
    在这里插入图片描述

    图1 连接wifi的过程

    使用浏览器连接esp32 http服务器,运行结果如下:

    在这里插入图片描述

图2 使用浏览器登陆esp32 http服务器

相关文章:

在掌控板上搭建http服务器

在掌控板上搭建http服务器 打开Arduino IDE&#xff0c;并且已经添加了ESP32的支持库。以下是创建一个基本HTTP服务器的步骤&#xff1a; 包含必要的库&#xff1a; #include <WiFi.h> #include <WebServer.h>配置WiFi&#xff1a; 替换ssid和password为你的WiFi网…...

HCIA复习实验

实验要求 实验拓扑以及实验分析 第一步先划分网段 先对内网划分 192.168.1.0/24划分 192.168.1.0/26---骨干主线路 192.168.1.64/26---骨干备线路 ---192.168.1.128/25--vlan2 3汇总---便于减少路由表条目---在大型网络方便 192.168.1.128/26---vlan2 192.168.1.192/26---vla…...

生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程

1. LUSH流程简介 基因组测序通常用于分子诊断、分期和预后&#xff0c;而大量测序数据在分析时间方面提出了挑战。 对于从FASTQ到VCF的整个流程&#xff0c;LUSH流程在非GVCF和GVCF模式下都大大降低了运行时间&#xff0c;30 X WGS数据耗时不到2 h&#xff0c;从BAM到VCF约需…...

c#编写的各类应用程序、类库的引用(黑白盒)

001 课程简介&#xff0c;C# 语言简介&#xff0c;开发环境准备 (yuque.com)https://www.yuque.com/yuejiangliu/dotnet/timothy-csharp-001 一个Solution里包含多个Project 一、见识 C# 编写的各类应用程序 二、类库的引用&#xff08;黑/白盒引用&#xff09; 1、黑盒引用&a…...

计算机网络考研笔记

...

用感性的方式浅要了解什么是AI 与 大模型

什么是人工智能&#xff08;AI&#xff09;&#xff1f; 人工智能&#xff08;Artificial Intelligence&#xff0c;简称 AI&#xff09;是指由人制造出来的具有一定智能的系统&#xff0c;能够理解和学习人类的行为&#xff0c;并在某些任务上模仿人类的智能行为。这些任务包…...

Linux文件的查找和打包以及压缩

文件的查找 文件查找的用处&#xff0c;在我们需要文件但却又不知道文件在哪里的时候 文件查找存在着三种类型的查找 1、which或whereis&#xff1a;查找命令的程序文件位置 2、locate&#xff1a;也是一种文件查找&#xff0c;但是基于数据库的查找 3、find&#xff1a;针…...

专题十四_哈希表_算法专题详细解答

目录 哈希表简介 1. 两数之和&#xff08;easy&#xff09; 解析&#xff1a; 解法一&#xff1a;暴力&#xff1a; 解法二&#xff1a;哈希O(N) 总结&#xff1a; 2. 判断是否互为字符重排&#xff08;easy&#xff09; 解析&#xff1a; 哈希&#xff1a; 总结&…...

C++源码生成·序章

文章目录 C源码生成序章1 概述1.1 前言1.2 Python 易用性简介 2 使用 python 生成 c 源码2.1 运行脚本2.2 结果 3 项目启动3.1 项目概述3.2 环境准备3.3 克隆仓库3.4 查看标签&#xff08;Tags&#xff09;3.4 根据标签拉取代码3.5 后续步骤 C源码生成序章 1 概述 1.1 前言 …...

Android中的MVP模式

MVP&#xff08;Model-View-Presenter&#xff09;架构在 Android 开发中是一种流行的架构模式&#xff0c;它将业务逻辑和 UI 代码分离&#xff0c;通过 Presenter 来处理用户的操作和界面更新。MVP 提高了代码的可维护性和测试性&#xff0c;特别是 Presenter 中的逻辑可以单…...

kebuadm部署k8s集群

官方文档&#xff1a; Installing kubeadm | Kubernetes 切记要关闭防⽕墙、selinux、禁用交换空间&#xff0c; cpu核⼼数⾄少为2 内存4G kubeadm部署k8s⾼可用集群的官方文档&#xff1a; Creating Highly Available Clusters with kubeadm | Kubernetes 你需要在每台…...

Unity3D学习FPS游戏(2)简单场景、玩家移动控制

前言&#xff1a;上一篇的时候&#xff0c;我们已经导入了官方fps的素材&#xff0c;并且对三维模型有了一定了解。接下来我们要构建一个简单的场景让玩家能够有地方移动&#xff0c;然后写一个简单的玩家移动控制。 简单场景和玩家移动 简单场景玩家移动控制玩家模型视野-摄像…...

网上的 AQS 文章让我很失望

一、AQS 很多人都没有讲明白 &#x1f914; 翻看了网上的 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;文章&#xff0c;质量参差不齐&#xff0c;大多数都是在关键处跳过、含糊其词&#xff0c;美其名曰 “传播知识” 。 大多数都是进行大段的源码粘贴和注释&…...

滑动窗口子串

文章目录 滑动窗口一、无重复字符的最长子串二、找到字符串中所有字母异位词 子串三、和为 K 的子数组四、滑动窗口最大值五、最小覆盖子串 滑动窗口 一、无重复字符的最长子串 题目链接 &#xff08;方法一&#xff1a;暴力枚举&#xff09; &#xff08;方法二&#xff…...

【windows11 提示“Microsoft Visual C++ Runtime Library Runtime Error】

windows11 提示“Microsoft Visual C++ Runtime Library Runtime Error” 问题描述解决方法郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: windows OS:windows11 问题描述 解决方法 下载VisualCppRedist_AIO_x86_x64.exe 安…...

【leetcode|哈希表、动态规划】最长连续序列、最大子数组和

目录 最长连续序列 解法一&#xff1a;暴力枚举 复杂度 解法二&#xff1a;优化解法一省去二层循环中不必要的遍历 复杂度 最大子数组和 解法一&#xff1a;暴力枚举 复杂度 解法二&#xff1a;贪心 复杂度 解法三&#xff1a;动态规划 复杂度 最长连续序列 输入输…...

【人工智能】掌握深度学习中的时间序列预测:深入解析RNN与LSTM的工作原理与应用

深度学习中的循环神经网络&#xff08;RNN&#xff09;和长短时记忆网络&#xff08;LSTM&#xff09;在处理时间序列数据方面具有重要作用。它们能够通过记忆前序信息&#xff0c;捕捉序列数据中的长期依赖性&#xff0c;广泛应用于金融市场预测、自然语言处理、语音识别等领域…...

今日开放!24下软考机考「模拟练习平台」操作指南来啦!

2024年下半年软考机考模拟练习平台今日开放&#xff0c;考生可以下载模拟作答系统并登录后进行模拟练习&#xff0c;熟悉答题流程及操作方法。 一、模拟练习时间 2024年下半年软考机考模拟练习平台开放时间为2024年10月23日9:00至11月6日17:00&#xff0c;共15天。 考生可以在…...

合并.md文档

需求&#xff1a;将多个.md文档合并成一个.md文档。 方法一&#xff1a;通过 type 命令 参考内容&#xff1a;多个md文件合并 步骤&#xff1a; 把需要合并的 .md 文档放入到一个文件夹内。修改需要合并的 .md 文档名&#xff0c;可以在文档名前加上 1.2.3 来表明顺序&#x…...

10月18日笔记(基于系统服务的权限提升)

系统内核漏洞提权 当目标系统存在该漏洞且没有更新安全补丁时&#xff0c;利用已知的系统内核漏洞进行提权&#xff0c;测试人员往往可以获得系统级别的访问权限。 查找系统潜在漏洞 手动寻找可用漏洞 在目标主机上执行以下命令&#xff0c;查看已安装的系统补丁。 system…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

6.9本日总结

一、英语 复习默写list11list18&#xff0c;订正07年第3篇阅读 二、数学 学习线代第一讲&#xff0c;写15讲课后题 三、408 学习计组第二章&#xff0c;写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语&#xff1a;复习l默写sit12list17&#…...