当前位置: 首页 > 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);}
}

 

 

 

http://www.lryc.cn/news/478574.html

相关文章:

  • 告别复杂判断!Python中实现函数重载的终极技巧
  • Clang-Format:让你的代码整齐划一,格式不再烦恼
  • 【jvm】Full GC
  • 【Python】实战:请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
  • 互联网摸鱼日报(2024-11-07)
  • requests库
  • 大数据之多级缓存方案
  • QCon演讲实录|徐广治:边缘云原生操作系统的设计与思考
  • web第二次作业
  • 大模型技术讲解:大模型参数微调(大模型微调)
  • 测试自动化如何和业务流程结合?
  • Python进阶之IO操作
  • ubuntu如何卸载colmap
  • 【comfyui教程】ComfyUI即将迎来全新界面:升级体验就在11月15日
  • Leecode热题100-104.二叉树的最大深度
  • 深度学习中的 Dropout:原理、公式与实现解析
  • 【大数据学习 | HBASE】habse的表结构
  • 完成程序《大奖赛评分B》
  • K8S篇(基本介绍)
  • linux alsa-lib snd_pcm_open函数源码分析(三)
  • 基于ssm的个人健康管理系统
  • Debian下载ISO镜像的方法
  • 大厂面试真题-简单说说线程池接到新任务之后的操作流程
  • 「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用
  • C++关键字:mutable
  • Agent 智能体开发框架选型指南
  • 基于Zynq FPGA对雷龙SD NAND的测试
  • AOSP沙盒android 11
  • 【JWT】Asp.Net Core中JWT刷新Token解决方案
  • AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具