配置ESP8266连上指定的路由

本文详细介绍了如何使用ESP8266的station_config结构体配置Wi-Fi连接,包括SSID和密码设置,并提供了配置API的使用方法及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

对于在软件调试过程中不想通过手机APP来操纵ESP8266连接路由器,可以通过配置ESP8266相关station参数来实现这一点。

相关数据类型介绍

一、station_config

成员名称数据类型功能
ssiduint8类型的数组SSID
passworduint8类型的数组密码
bssid_setuint8-
bssiduint8类型的数组-

结构体原型

struct station_config
{
    uint8 ssid[32];
    uint8 password[64];
    uint8 bssid_set;    // Note: If bssid_set is 1, station will just connect to the router
                        // with both ssid[] and bssid[] matched. Please check about this.
    uint8 bssid[6];
};

相关API介绍

一、wifi_station_get_config

功能查询 ESP8266 station 接口当前的配置-
函数原型bool wifi_station_get_config(struct station_config *config)-
参数*config获取到的station当前的配置
返回值true获取配置成功
-false获取配置失败

二、wifi_station_set_config

功能配置 ESP8266 station并保存到flash中-
函数原型bool wifi_station_set_config(struct station_config *config)-
参数*configstation的配置
返回值true配置成功
-false配置失败
注意需要在 ESP8266 station使能的情况下调用此API-

三、 wifi_station_set_config_current

功能配置 ESP8266 station,配置信息不保存到flash中-
函数原型bool wifi_station_set_config_current(struct station_config *config)-
参数*configstation的配置
返回值true配置成功
-false配置失败
注意需要在 ESP8266 station使能的情况下调用此API-

相关例程

#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "uart.h"
#include "gpio.h"
#include "app_socket.h"
#include "string.h"

#define LINK_WIFI_SSID     "WIFI_NAME"
#define LINK_WIFI_PASSWORD "WIFI_PASSWORD"

void ICACHE_FLASH_ATTR station_run( void )
{
    struct station_config station_info;
    uint8_t status = wifi_station_get_connect_status();

    if ( status != STATION_CONNECTING
         && status != STATION_GOT_IP )
    {
        wifi_set_opmode( 0x03 );

        wifi_station_get_config( &station_info );
        os_memcpy( station_info.ssid, LINK_WIFI_SSID, os_strlen( LINK_WIFI_SSID ) );
        os_memcpy( station_info.password, "WIFI_PASSWORD",os_strlen( "WIFI_PASSWORD" ) );
        wifi_station_set_config( &station_info );

        wifi_station_connect();
    }
    os_printf( " station status is %d \r\n!",status );
}

void user_init( void )
{
    static os_timer_t station_timer;

    os_timer_disarm( &station_timer );
    os_timer_setfn( &station_timer, &station_run, NULL );
    os_timer_arm( &station_timer, 10000, 1 );
}

参考资料

[1]. ESP8266Non-OS SDK API参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值