0
点赞
收藏
分享

微信扫一扫

esp32-C3学习笔记(1)微信配网

你带来了我的快乐 2022-04-19 阅读 52
c语言

打开官方例程smart_config

static void sc_callback(smartconfig_status_t status, void *pdata) {
	switch (status) {
	//连接未开始,请勿在此阶段开始连接。
	case SC_STATUS_WAIT:
		ESP_LOGI(TAG, "SC_STATUS_WAIT");
		break;
	//发现WIfi信道
	case SC_STATUS_FIND_CHANNEL:
		ESP_LOGI(TAG, "SC_STATUS_FINDING_CHANNEL");
		break;
	//得到wifi名字和密码
	case SC_STATUS_GETTING_SSID_PSWD:
		ESP_LOGI(TAG, "SC_STATUS_GETTING_SSID_PSWD");
		break;
   //已经获取wifi名字与密码在连接路由器
	case SC_STATUS_LINK:
		ESP_LOGI(TAG, "SC_STATUS_LINK");
		wifi_config_t *wifi_config = pdata;
		ESP_LOGI(TAG, "SSID:%s", wifi_config->sta.ssid);
		ESP_LOGI(TAG, "PASSWORD:%s", wifi_config->sta.password);
		ESP_ERROR_CHECK(esp_wifi_disconnect());
		ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, wifi_config));
		ESP_ERROR_CHECK(esp_wifi_connect());
		break;
    //成功获取到IP,连接路由完成。
	case SC_STATUS_LINK_OVER:
		ESP_LOGI(TAG, "SC_STATUS_LINK_OVER");
		if (pdata != NULL) {
			uint8_t phone_ip[4] = { 0 };
			memcpy(phone_ip, (uint8_t*) pdata, 4);
			ESP_LOGI(TAG, "Phone ip: %d.%d.%d.%d\n", phone_ip[0], phone_ip[1],
					phone_ip[2], phone_ip[3]);
		}
		//发送消息到另外一个任务,告诉它已经连接成功
		xEventGroupSetBits(wifi_event_group, ESPTOUCH_DONE_BIT);
		break;
	default:
		break;
	}
}
/*··················*/

	while (1) {
		uxBits = xEventGroupWaitBits(wifi_event_group,
				CONNECTED_BIT | ESPTOUCH_DONE_BIT, true, false, portMAX_DELAY);
		//如果获取的标志位是成功获取IP,则表示成功连接到了Wi-Fi		
		if (uxBits & CONNECTED_BIT) {
			ESP_LOGI(TAG, "WiFi Connected to ap");
		}

       //如果获取的标志位是一键配置的回调表示成功连接到了Wi-Fi,则停止配置	
		if (uxBits & ESPTOUCH_DONE_BIT) {
			ESP_LOGI(TAG, "smartconfig over");
			esp_smartconfig_stop();
			vTaskDelete(NULL);
		}
	}

设置配网方式触发为:esp_smartconfig_set_type(SC_TYPE_ESPTOUCH_AIRKISS),支持smartConfigairKiss;

编译通过;

手机连接2.4G的wifi;

扫描下方二维码;

 在这里插入图片描述

wifi名称自动获取,wifi密码手动输入;即可连接成功

在这里插入图片描述

 

举报

相关推荐

0 条评论