厦门网站建设模拟,网络营销的理论基础有哪些,仿站网,网站建设与管理总结心得esp32-c3 作为HTTP server 控制led 灯。服务器注册两个uri 。一个/open 控制开#xff0c;一个/close控制关。下一步再用一片c3作为客户端#xff0c;运行http client 发送/open. /Close 模拟浏览器#xff0c;控制led. 其实只要用手机或pc或平…esp32-c3 作为HTTP server 控制led 灯。服务器注册两个uri 。一个/open 控制开一个/close控制关。下一步再用一片c3作为客户端运行http client 发送/open. /Close 模拟浏览器控制led. 其实只要用手机或pc或平板浏览器输入ip/open就能开灯ip/close就能关led,只是不能回显服务器回传的灯信息。 http server 代码 #include string.h
#include freertos/FreeRTOS.h
#include freertos/event_groups.h
#include esp_wifi.h
#include esp_event.h
#include esp_log.h
#include nvs_flash.h
#include esp_http_server.h
#include esp_timer.h
#include driver/gpio.h
// WiFi
#define WIFI_SSID ChinaNet-AETP5V
#define WIFI_PASS wf123456int state1; static EventGroupHandle_t s_wifi_event_group;
static const int WIFI_CONNECTED_BIT BIT0;
static const char *TAG WiFi_HTTP;//----------------------
#define GPIO_out 0 //led 引脚void lignt(){ //led 间隔1秒闪烁gpio_set_level(GPIO_out,1);vTaskDelay(1000/portTICK_PERIOD_MS);gpio_set_level(GPIO_out,0);vTaskDelay(1000/portTICK_PERIOD_MS); }static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data) {if (event_base WIFI_EVENT event_id WIFI_EVENT_STA_START) {esp_wifi_connect(); // } else if (event_base WIFI_EVENT event_id WIFI_EVENT_STA_DISCONNECTED) {esp_wifi_connect(); // ESP_LOGI(TAG, ...);} else if (event_base IP_EVENT event_id IP_EVENT_STA_GOT_IP) {ip_event_got_ip_t* event (ip_event_got_ip_t*) event_data;ESP_LOGI(TAG, IP: IPSTR, IP2STR(event-ip_info.ip));xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); // 锟斤拷}
}// WiFi
void wifi_init_sta(void) {s_wifi_event_group xEventGroupCreate(); // // NVSesp_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);// WiFiESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_create_default_wifi_sta();wifi_init_config_t cfg WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(cfg));ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, event_handler, NULL, NULL));ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, IP_EVENT_STA_GOT_IP, event_handler, NULL, NULL));// WiFi wifi_config_t wifi_config {.sta {.ssid WIFI_SSID,.password WIFI_PASS,},};ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); // ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, wifi_config));ESP_ERROR_CHECK(esp_wifi_start()); // WiFiESP_LOGI(TAG, WiFi );
}// http GET /open 处理函数
esp_err_t open_handler(httpd_req_t *req) {// ESP_LOGI(TAG, Requested URI: %s, req-uri); // ESP_LOGI(TAG, Requested Method: %s, http_method_str(req-method));// ESP_LOGI(TAG, Requested URI: %d, req-content_len);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); state0; //led 开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); state1; //led 关return ESP_OK;
}// HTTP server 注册两个uri
static 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 open_uri {.uri /open,.method HTTP_GET,.handler open_handler,.user_ctx NULL};httpd_register_uri_handler(server, open_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;
}void app_main(void) {//gpio 0 脚注册gpio_config_t io_conf {}; io_conf.intr_type GPIO_INTR_DISABLE;io_conf.mode GPIO_MODE_OUTPUT;io_conf.pin_bit_mask 1ULLGPIO_out; io_conf.pull_down_en 0;io_conf.pull_up_en 0;gpio_config(io_conf);wifi_init_sta();EventBits_t bits xEventGroupWaitBits(s_wifi_event_group, WIFI_CONNECTED_BIT, pdFALSE, pdTRUE, portMAX_DELAY);if (bits WIFI_CONNECTED_BIT) {ESP_LOGI(TAG, WiFi ok);// HTTP start_webserver();} else {ESP_LOGI(TAG, WiFi no);}while(1){if(state1){ESP_LOGI(GPIO, GPIO_input1);vTaskDelay(1000/portTICK_PERIOD_MS); }else{lignt(); }}}
2. 浏览器开
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleESP32 Time/titlescriptfunction fetchTime() {fetch(http://192.168.101.41/open) // 替换为你的服务器地址.then(response response.text()).then(data {document.getElementById(wz).innerText data;}).catch(error console.error(Error fetching time:, error));}// 每1秒调用 fetchTime 函数setInterval(fetchTime, 1000);/script
/head
bodyh1 ESP32 开led/h1div idwzWaiting .../div
/body
/html3 浏览器关
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleESP32 Time/titlescriptfunction fetchTime() {fetch(http://192.168.101.41/close) // 替换为你的服务器地址.then(response response.text()).then(data {document.getElementById(wz).innerText data;}).catch(error console.error(Error fetching time:, error));}// 每1秒调用 fetchTime 函数setInterval(fetchTime, 1000);/script
/head
bodyh1 ESP32 关led/h1div idwzWaiting .../div
/body
/html