首页
友链
关于
搜索
1
ESP-IDF 编程笔记(一) Ubuntu20.04开发环境搭建
16 阅读
2
ESP32编程笔记(五)——WIFI
14 阅读
3
ESP32编辑笔记(6)——事件监听
10 阅读
4
ESP32编程笔记(二)新建一个ESP32工程,并输出Hello world
9 阅读
5
ESP32编程笔记(9)——Smartconfig
9 阅读
默认分类
嵌入式
GD32
ESP32
Web
Java
MySQL
其他
登录
/
注册
搜索
标签搜索
ESP32
ChencyCT
累计撰写
18
篇文章
累计收到
0
条评论
首页
栏目
默认分类
嵌入式
GD32
ESP32
Web
Java
MySQL
其他
页面
友链
关于
搜索到
18
篇与
的结果
2024-03-03
IDEA插件JRebel LS client not configured解决方案
问题描述激活JRebel时报错 JRebel LS client not configured解决方案降级使用老版本。解决步骤卸载jrebel删除C盘用户下面的.jrebel下载旧版jrebel JRebel-IDEA-2022.4.1解压到idea安装目录里面的pulgins重启idea激活方式点击JRebel activationTeam URL处填写激活网址+GUID,邮箱随便填写。然后激活即可网址1:http://jrebel-license.jiweichengzhu.com/{GUID}网址2:https://jrebel.qekang.com/{GUID}GUID可以使用 在线GUID生成邮箱随便写,格式正确就行点击激活即可。
2024年03月03日
8 阅读
0 评论
0 点赞
2024-02-28
问题解决-esp-idf编译报错undefined reference to ‘app_main‘
新建idf工程,编译报错如下。解决方法在.C文件的同级目录的CMakeLists.txt文件里面添加函数register_component()即可解决错误。
2024年02月28日
3 阅读
0 评论
0 点赞
2024-02-28
ESP32烧录问题
make flash提示A fatal error occurred: Invalid head of packet (0x80)解决方式:make menuconfig设置波特率为115200。保存在make flash就可以了
2024年02月28日
2 阅读
0 评论
0 点赞
2024-02-27
ESP32编程笔记(9)——Smartconfig
前言随着智能家居,物联网的兴起,越来越多的设备需要连接家庭wifi网络。而WIFI网络的接入是需要知道无线路由器的SSID和密码。大部分的设备是没有输入接口的,在设备中预置WIFI的SSID和密码是不现实的,为了解决这个问题,smartconfig配网方式应运而生。ESP8266,ESP32使用了ESP-Touch协议,采用的是Smartconfig(快连)技术。当前设备没有和其他设备建立任何实际连接状态下,使用smartconfig一键配置该设备接入WIFI。smartconfig只需要通过手机UDP发送报文,设备扫描可用无线信道,找到smartconfig的报文,并锁定在这一信道上开始接收数据。使用smartconfig配网只需要以下3个步骤设备初始化,开始监听smartconfig报文数据手机设置wifi的SSID和密码后,发送UDP广播设备获得报文,配置网络,接入WIFI。代码说明头文件#include "esp_smartconfig.h使用 esp_smartconfig_start() 函数配置 smartconfig并开始等待smartconfig报文数据。esp_err_t esp_smartconfig_start(const smartconfig_start_config_t *config)配置完成后使用 esp_err_t esp_smartconfig_stop() 函数停止smartconfig实例代码还是有点问题,先水一篇文章吧。#include <stdio.h> #include <string.h> #include "esp_system.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" #include "esp_event.h" #include "esp_log.h" #include "nvs_flash.h" #include "esp_netif.h" #include "esp_wifi.h" #include "esp_smartconfig.h" #include "lwip/sockets.h" #define TCP_SERVER "192.168.8.104" const char *TAG="smartconfig"; static void System_Init(void); static void WiFi_init(void); static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *data); static void smartconfig_task(void); void app_main(){ System_Init(); WiFi_init(); } static void smartconfig_task(void){ ESP_ERROR_CHECK(esp_smartconfig_set_type(SC_TYPE_ESPTOUCH)); smartconfig_start_config_t cnf = SMARTCONFIG_START_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_smartconfig_start(&cnf)); while(1){ vTaskDelay(500 / portTICK_PERIOD_MS); } } static void event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *data){ if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START){ ESP_LOGI(TAG, "wifi start"); ESP_LOGI(TAG,"smartconfig"); xTaskCreate(smartconfig_task,"task1",4096,NULL,3,NULL); }else if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED){ ESP_LOGI(TAG,"wifi disconnected, retry"); esp_wifi_connect(); }else if(event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP){ ESP_LOGI(TAG, "got ip"); ip_event_got_ip_t *event = (ip_event_got_ip_t *)data; ESP_LOGI(TAG,"got ip:"IPSTR,IP2STR(&event->ip_info.ip)); }else if(event_base == SC_EVENT && event_id == SC_EVENT_FOUND_CHANNEL){ ESP_LOGI(TAG,"sc found channel"); }else if(event_base == SC_EVENT && event_id == SC_EVENT_SCAN_DONE){ ESP_LOGI(TAG,"sc done"); }else if(event_base == SC_EVENT && event_id == SC_EVENT_GOT_SSID_PSWD){ ESP_LOGI(TAG,"sc got SSID and PWD"); smartconfig_event_got_ssid_pswd_t *evt = (smartconfig_event_got_ssid_pswd_t *)data; wifi_config_t cnf; bzero(&cnf,sizeof(wifi_config_t)); memcpy(cnf.sta.ssid, evt->ssid,sizeof(cnf.sta.ssid)); memcpy(cnf.sta.password, evt->password,sizeof(cnf.sta.password)); cnf.sta.bssid_set = evt->bssid_set; if(cnf.sta.bssid_set == true){ memcpy(cnf.sta.bssid,evt->bssid,sizeof(cnf.sta.bssid)); } ESP_LOGI(TAG,"GOT SSID: %s", evt->ssid); ESP_LOGI(TAG,"GOT PWD: %s",evt->password); esp_wifi_disconnect(); esp_wifi_set_config(WIFI_IF_STA, &cnf); esp_wifi_connect(); } } static void System_Init(void){ 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(ret); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); } static void WiFi_init(void){ ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); esp_netif_create_default_wifi_sta(); esp_event_handler_instance_t esp_any_id; esp_event_handler_instance_t esp_ip_id; esp_event_handler_instance_t esp_sc_id; ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,ESP_EVENT_ANY_ID,event_handler,NULL,&esp_any_id)); ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT,IP_EVENT_STA_GOT_IP,event_handler,NULL,&esp_ip_id)); ESP_ERROR_CHECK(esp_event_handler_instance_register(SC_EVENT,ESP_EVENT_ANY_ID,event_handler,NULL,&esp_sc_id)); wifi_init_config_t cnf = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cnf)); ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_start()); ESP_ERROR_CHECK(esp_event_handler_instance_unregister(WIFI_EVENT,ESP_EVENT_ANY_ID,&esp_any_id)); ESP_ERROR_CHECK(esp_event_handler_instance_unregister(IP_EVENT,IP_EVENT_STA_GOT_IP,&esp_ip_id)); ESP_ERROR_CHECK(esp_event_handler_instance_unregister(SC_EVENT,ESP_EVENT_ANY_ID,&esp_sc_id)); } 运行结果
2024年02月27日
9 阅读
0 评论
0 点赞
2024-02-22
ESP32编程笔记(8)——TCP client
TCP客户端通信流程使用socket函数创建一个socketint sock = socket(AF_INET, SOCK_STREAM,0);设置服务端ip地址和端口 struct sockaddr_in sock_addr; sock_addr.sin_addr.s_addr=inet_addr(TCP_SERVER_ADDRESS); sock_addr.sin_family=AF_INET; sock_addr.sin_port = htons(7789);连接服务器 int err = connect(sock,(struct sockaddr_in*)&sock_addr, sizeof(sock_addr));收发数据int len = recv(sock,rx_buffer,sizeof(rx_buffer),0); if(len < 0){ ESP_LOGE(TAG,"recv failed: %d",len); break; }else{ memset(rx_buffer,0,sizeof(rx_buffer)); ESP_LOGI(TAG, "received %d bytes from %s",len, TCP_SERVER_ADDRESS); printf("%s\n",rx_buffer); } int err = send(sock,payload,strlen(payload),0); if(err < 0){ ESP_LOGE(TAG, "send error: %d",err); }关闭连接close(sock)实例有点小问题,esp32无法打印接收的数据内容#include <string.h> #include <stdio.h> #include "esp_system.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" #include "esp_event.h" #include "esp_log.h" #include "nvs_flash.h" #include "esp_wifi.h" #include "sys/socket.h" #include "lwip/netdb.h" #define TCP_SERVER_ADDRESS "192.168.8.104" const static char* TAG = "TCP"; static int retry_times = 0; char* payload ="this is esp32"; static void System_Iniit(void); static void WiFi_Init(void); static void event_handler(void *arg,esp_event_base_t event_base,int32_t event_id,void *data); static void TCP_Client_Task(void); void app_main(){ System_Iniit(); WiFi_Init(); } static void TCP_Client_Task(void){ char rx_buffer[128]; struct sockaddr_in sock_addr; sock_addr.sin_addr.s_addr=inet_addr(TCP_SERVER_ADDRESS); sock_addr.sin_family=AF_INET; sock_addr.sin_port = htons(7789); int sock = socket(AF_INET, SOCK_STREAM,0); if(sock < 0){ ESP_LOGE(TAG,"create socket failed"); close(sock); return; } ESP_LOGI(TAG,"socket created"); int err = connect(sock,(struct sockaddr_in*)&sock_addr, sizeof(sock_addr)); if(err < 0){ ESP_LOGE(TAG, "Socket unable to connected : %d",err); close(sock); return; } while(1){ int len = recv(sock,rx_buffer,sizeof(rx_buffer),0); if(len < 0){ ESP_LOGE(TAG,"recv failed: %d",len); break; }else{ memset(rx_buffer,0,sizeof(rx_buffer)); ESP_LOGI(TAG, "received %d bytes from %s",len, TCP_SERVER_ADDRESS); printf("%s\n",rx_buffer); } int err = send(sock,payload,strlen(payload),0); if(err < 0){ ESP_LOGE(TAG, "send error: %d",err); } } } static void event_handler(void *arg,esp_event_base_t event_base,int32_t event_id,void *data){ if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START){ ESP_LOGI(TAG, "wifi event sta start"); esp_wifi_connect(); }else if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED){ if(retry_times < 3){ ESP_LOGI(TAG, "wifi event sta disconnected"); ESP_LOGI(TAG,"retry ..."); esp_wifi_connect(); retry_times++; } }else if(event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED){ ESP_LOGI(TAG ,"wifi connected"); }else if(event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP){ retry_times = 0; ip_event_got_ip_t* event = (ip_event_got_ip_t*)data; ESP_LOGI(TAG,"got ip: "IPSTR,IP2STR(&event->ip_info.ip)); xTaskCreate(TCP_Client_Task,"task1",4096,NULL,4,NULL); } } static void System_Iniit(void){ ESP_LOGI(TAG,"system init"); esp_err_t ret = nvs_flash_init(); if(ret == ESP_ERR_NVS_NEW_VERSION_FOUND || ret == ESP_ERR_NVS_NO_FREE_PAGES){ ESP_ERROR_CHECK(ret); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); } static void WiFi_Init(void){ ESP_LOGI(TAG,"WiFi init"); ESP_ERROR_CHECK(esp_event_loop_create_default()); esp_netif_create_default_wifi_sta(); esp_netif_init(); //ESP_ERROR_CHECK(esp_netif_create_default_wifi_sta()); esp_event_handler_instance_t esp_any_id; esp_event_handler_instance_t esp_ip_id; ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,ESP_EVENT_ANY_ID,&event_handler,NULL,&esp_any_id)); ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT,IP_EVENT_STA_GOT_IP,&event_handler,NULL,&esp_ip_id)); wifi_init_config_t cnf = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cnf)); wifi_config_t cof = { .sta = { .ssid="你的wifi ssid", .password = "你的wifi 密码", .threshold.authmode=WIFI_AUTH_WPA2_PSK } }; ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &cof)); ESP_ERROR_CHECK(esp_wifi_start()); ESP_ERROR_CHECK(esp_event_handler_instance_unregister(WIFI_EVENT,ESP_EVENT_ANY_ID,&esp_any_id)); ESP_ERROR_CHECK(esp_event_handler_instance_unregister(IP_EVENT,IP_EVENT_STA_GOT_IP,&esp_ip_id)); }运行结果
2024年02月22日
3 阅读
0 评论
0 点赞
1
2
3
4