打开官方例程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)
,支持smartConfig
和airKiss;
编译通过;
手机连接2.4G的wifi;
扫描下方二维码;
wifi名称自动获取,wifi密码手动输入;即可连接成功