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

esp32 ap httpsever 控制led

功能:浏览器/open    开 led

         /close    关led

  如不关,则亮灯10秒自动关闭

已买220v 转5V电源,5V固态继电器,开始组装无线开关。

代替家里华为的hlink灯泡,此灯必须要连入网络才能控制开和关,经常时灵时不灵。


#include <stdio.h>
#include <string.h>
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "nvs_flash.h"
#include "esp_http_server.h"
#include "driver/gpio.h"
#include "esp_timer.h"#define WIFI_SSID "ESP32_AP"
#define WIFI_PASS "wz123456"
#define MAX_STA_CONN 4#define GPIO_out  2  
static int bz=0;
static const char *TAG = "ESP32_AP_HTTP";
static int64_t time = 0;// HTTP GET 处理程序,响应 "OK"
esp_err_t open_handler(httpd_req_t *req) {char resp_str[21]="led open"; httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*");httpd_resp_set_type(req, "text/plain");httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN); gpio_set_level(GPIO_out,1);bz=1;return ESP_OK;
}//http GET "/close"处理函数
esp_err_t close_handler(httpd_req_t *req){char resp_str[21]="led close";httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); httpd_resp_set_type(req, "text/plain");httpd_resp_send(req, resp_str, HTTPD_RESP_USE_STRLEN);   gpio_set_level(GPIO_out,0);bz=0;return ESP_OK;
}
// 配置 HTTP 服务器并注册 URI 处理程序
httpd_handle_t start_webserver(void) {httpd_config_t config = HTTPD_DEFAULT_CONFIG();httpd_handle_t server = NULL;if (httpd_start(&server, &config) == ESP_OK) {httpd_uri_t ok_uri = {.uri       = "/open",.method    = HTTP_GET,.handler   = open_handler,.user_ctx  = NULL};httpd_register_uri_handler(server, &ok_uri);httpd_uri_t close_uri = {.uri      = "/close",.method   = HTTP_GET,.handler  = close_handler,.user_ctx = NULL};httpd_register_uri_handler(server, &close_uri);	}return server;
}// 初始化 AP 模式
void wifi_init_softap() {wifi_config_t wifi_config = {.ap = {.ssid = WIFI_SSID,.ssid_len = strlen(WIFI_SSID),.password = WIFI_PASS,.max_connection = MAX_STA_CONN,.authmode = WIFI_AUTH_WPA_WPA2_PSK},};if (strlen(WIFI_PASS) == 0) {wifi_config.ap.authmode = WIFI_AUTH_OPEN;}ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));ESP_ERROR_CHECK(esp_wifi_start());ESP_LOGI(TAG, "AP initialized. SSID:%s password:%s", WIFI_SSID, WIFI_PASS);
}void app_main(void) {gpio_config_t io_conf = {};      io_conf.intr_type = GPIO_INTR_DISABLE;io_conf.mode = GPIO_MODE_OUTPUT;io_conf.pin_bit_mask = 1ULL<<GPIO_out;  io_conf.pull_down_en = 0;io_conf.pull_up_en = 0;gpio_config(&io_conf);esp_err_t ret = nvs_flash_init();if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {ESP_ERROR_CHECK(nvs_flash_erase());ret = nvs_flash_init();}ESP_ERROR_CHECK(ret);ESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_create_default_wifi_ap();wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));wifi_init_softap();// 启动 HTTP 服务器start_webserver();gpio_set_level(GPIO_out,0);while(1){if(bz){time=esp_timer_get_time();while((esp_timer_get_time()-time)<10000000){  //开灯10秒vTaskDelay(10/portTICK_PERIOD_MS);}gpio_set_level(GPIO_out,0);bz=0;}vTaskDelay(10 / portTICK_PERIOD_MS);}
}

 

 

 

相关文章:

esp32 ap httpsever 控制led

功能&#xff1a;浏览器/open 开 led /close 关led 如不关&#xff0c;则亮灯10秒自动关闭 已买220v 转5V电源&#xff0c;5V固态继电器&#xff0c;开始组装无线开关。 代替家里华为的hlink灯泡&#xff0c;此灯必须要连入网络才能控制开和关&#xff0c;经常时灵时不…...

告别复杂判断!Python中实现函数重载的终极技巧

引言 说到函数重载&#xff0c;学过 Java 的同学应该不陌生&#xff0c;最常用的地方应该就是打印 log 了&#xff0c;对于不同的参数&#xff0c;调用的是不同的重载函数。那么 Python 如何实现函数重载呢&#xff1f; 重载概念 函数重载是指在同一作用域内&#xff0c;允许…...

Clang-Format:让你的代码整齐划一,格式不再烦恼

在现代软件开发中&#xff0c;代码规范和一致性对团队协作和代码质量至关重要。如何保持代码风格一致&#xff0c;避免手动格式化的繁琐操作&#xff1f;clang-format 是一款强大而灵活的代码格式化工具&#xff0c;它为开发者提供了高效的解决方案。本文将详细介绍 clang-form…...

【jvm】Full GC

目录 1. 说明2. 触发条件3. 优化4. 注意事项 1. 说明 1.Full GC&#xff08;Full Garbage Collection&#xff09;是Java垃圾回收过程中最重要且最昂贵的一种操作。2.Full GC涉及对整个堆内存&#xff08;包括年轻代和老年代&#xff09;的垃圾回收。3.当Full GC发生时&#x…...

【Python】实战:请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

# 定义汽车基类 class Car:def __init__(self, model, license_plate):self.model model # 车型self.license_plate license_plate # 车牌def start(self):print(f"{self.model} ({self.license_plate}) 启动了。")def stop(self):print(f"{self.model} ({s…...

互联网摸鱼日报(2024-11-07)

互联网摸鱼日报(2024-11-07) 36氪新闻 阿华田再现颓势 中国旅游景区上市公司&#xff0c;三季度财报好看吗&#xff1f; 电动化浪潮下&#xff0c;消费者彻底放弃百年品牌BBA&#xff1f; 估值114亿&#xff0c;海尔系独角兽终止IPO 又一知名品牌门店全关&#xff0c;高端…...

requests库

GET请求 基本实例import requestsresponse requests.get(https://www.httpbin.org/get) print(response.text)params参数import requests data {"name":"Bileton","age":"21" } response requests.get(https://www.httpbin.org/ge…...

大数据之多级缓存方案

多级缓存介绍&#xff1f;多级缓存优缺点&#xff0c;应用场景&#xff1f;多级缓存架构&#xff1f; 多级缓存介绍 多级缓存方案是一种优化手段&#xff0c;通过在多个级别上存储数据来提高应用程序的性能和响应速度。以下是对多级缓存方案的详细解析&#xff1a; 一、多级缓…...

QCon演讲实录|徐广治:边缘云原生操作系统的设计与思考

10月18日&#xff0c;在 QCon 全球软件开发大会 2024&#xff08;上海站&#xff09;&#xff0c;火山引擎边缘云资深架构师徐广治围绕火山引擎边缘计算产品背后的算力底座 - 边缘云原生操作系统&#xff0c;探讨如何实现算力服务的混合部署和跨区域弹性调度&#xff0c;以及在…...

web第二次作业

代码如下 <!DOCTYPE html> <html> <head> <!-- 设置页面的字符编码为utf-8&#xff0c;确保能正确显示各种字符 --> <meta charset"utf-8"> <title></title> <style> /* 全局样式设置 */ *{ …...

大模型技术讲解:大模型参数微调(大模型微调)

转自 秋色稻田公众号 这篇文章讲讲大模型的参数微调&#xff0c;参数微调&#xff08;Fine-tuning&#xff09;是一种机器学习技术&#xff0c;用于调整大型预训练模型的参数&#xff0c;以大模型适应特定应用场景。这种方法通常用于自然语言处理&#xff08;NLP&#xff09;…...

测试自动化如何和业务流程结合?

测试自动化框架固然重要&#xff0c;但是最终自动化的目的都是为了业务服务的。 那测试自动化如何对业务流程产生积极影响&#xff1f; 业务流程的重要性 测试自动化项目并非孤立存在&#xff0c;其生命周期与被测试的应用程序紧密相关。项目的价值在于被整个开发团队所使用&a…...

Python进阶之IO操作

文章目录 一、文件的读取二、文件内容的写入三、之操作文件夹四、StringIO与BytesIO 一、文件的读取 在python里面&#xff0c;可以使用open函数来打开文件&#xff0c;具体语法如下&#xff1a; open(filename, mode)filename&#xff1a;文件名&#xff0c;一般包括该文件所…...

ubuntu如何卸载colmap

如果你是通过源码编译并安装的 COLMAP&#xff0c;可以按照以下步骤手动卸载&#xff1a; 1. **查找安装路径**&#xff1a; 检查 COLMAP 安装时的路径&#xff08;通常是 /usr/local&#xff09;。 2. **删除二进制文件**&#xff1a; 删除已安装的 COLMAP 可执行文…...

【comfyui教程】ComfyUI即将迎来全新界面:升级体验就在11月15日

前言 ComfyUI迎来全新界面&#xff1a;升级体验就在11月15日 想象一下&#xff0c;拥有一个更直观、更智能的用户界面&#xff0c;不再需要在繁杂的设置中摸索。这不再只是梦想&#xff01;从2024年11月15日起&#xff0c;ComfyUI将正式启用新UI (Beta UI)作为默认界面&#…...

Leecode热题100-104.二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,2] 输出…...

深度学习中的 Dropout:原理、公式与实现解析

8. dropout 深度学习中的 Dropout&#xff1a;原理、公式与实现解析 在神经网络训练中&#xff0c;模型往往倾向于“记住”训练数据的细节甚至噪声&#xff0c;导致模型在新数据上的表现不佳&#xff0c;即过拟合。为了解决这一问题&#xff0c;Dropout 应运而生。通过在训练…...

【大数据学习 | HBASE】habse的表结构

在使用的时候hbase就是一个普通的表&#xff0c;但是hbase是一个列式存储的表结构&#xff0c;与我们常用的mysql等关系型数据库的存储方式不同&#xff0c;mysql中的所有列的数据是按照行级别进行存储的&#xff0c;查询数据要整个一行查询出来&#xff0c;不想要的字段也需要…...

完成程序《大奖赛评分B》

学习目标&#xff1a; 使用代码完成程序《大奖赛评分B》 题目&#xff1a; 如今许多歌手大奖赛评分时&#xff0c;为了体现公平&#xff0c;在评委给出分数后统计平均得分时&#xff0c;都会去掉最高分和最低分。编写程序&#xff0c;读入评委打分&#xff08;分数都是大于0的…...

K8S篇(基本介绍)

目录 一、什么是Kubernetes&#xff1f; 二、Kubernetes管理员认证&#xff08;CKA&#xff09; 1. 简介 2. 考试难易程度 3. 考试时长 4. 多少分及格 5. 考试费用 三、Kubernetes整体架构 Master Nodes 四、Kubernetes架构及和核心组件 五、Kubernetes各个组件及功…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...