配置ESP8266连上指定的路由

前言

对于在软件调试过程中不想通过手机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参考

### 回答1: 实现STM32F103与ESP8266的配合,可以实现一个简单的Web服务器。具体步骤如下: 首先,需要将ESP8266模块连接到STM32F103开发板上。可以使用串口或者SPI总线进行连接。连接后,需要配置ESP8266模块的工作模式,使其能够作为一个服务器。 其次,需要在STM32F103开发板上编写相应的程序。可以使用STM32CubeMX进行代码生成,选择相应的GPIO口和外设,进行配置。 然后,需要在STM32F103的代码中,进行串口通信或者SPI通信,与ESP8266模块进行数据传输。通过AT指令和ESP8266模块进行通信,可以实现WiFi的连接与配置。 接下来,需要在STM32F103的代码中,实现Web服务器的功能。可以使用STM32的内部FLASH或者SD卡等存储器,存储网页文件。通过在程序中配置相应的路由和处理函数,可以实现网页的访问与处理。 最后,需要在ESP8266模块的配置中,设置对应的IP地址和端口号,并将请求转发到STM32F103开发板上。通过解析HTTP请求,可以实现对不同网页请求的响应。 总之,通过将STM32F103与ESP8266进行配合,可以实现一个简单的Web服务器。这样,就可以通过网络访问STM32F103上的资源,并实现相应的控制与交互功能。 ### 回答2: 要实现STM32F103和ESP8266一起工作,搭建一个Web服务器可以按照以下步骤进行。 首先,连接STM32F103和ESP8266的串口,并使用AT指令将ESP8266设置为AP模式,以便创建一个WiFi网络。 通过STM32F103的USART控制器,将AT指令发送到ESP8266。使用串口通信协议进行数据传输。同时,使用GPIO控制ESP8266的复位引脚以便在需要时进行复位。 一旦ESP8266被设置为AP模式,STM32F103可以使用ESP8266创建一个TCP/IP连接。使用AT指令,可以通过发送HTTP GET请求从Web服务器上获取数据。 STM32F103还可以通过AT指令将数据发送到Web服务器。通过将数据封装在HTTP POST请求中,并将其发送到Web服务器,可以将数据发送到远程服务器。 在STM32F103上,可以使用HTTP库来解析接收到的HTTP响应。这样,可以轻松地获取响应中的数据。 最后,使用STM32F103的USART控制器,将响应数据发送到串口,并通过STM32F103上的LCD显示出来。 总结起来,要实现STM32F103和ESP8266一起工作,创建一个Web服务器,你需要连接STM32F103和ESP8266并设置ESP8266为AP模式。使用STM32F103控制ESP8266,发送AT指令来实现HTTP GET和POST请求。以及使用HTTP库来解析响应数据,并将数据发送到STM32F103上的LCD进行显示。 ### 回答3: STM32F103和ESP8266都是常见的嵌入式芯片,可以用于实现Web服务器功能。 首先,STM32F103作为主控芯片,负责控制整个系统的运行。它可以搭载一个TCP/IP协议栈,用于与ESP8266通信,并接收和处理来自ESP8266的数据。 ESP8266作为WiFi模块,可以连接到网络并通过TCP/IP协议与其他设备通信。它支持AT指令集,可以通过向其发送AT指令来控制其工作模式和网络连接。在本例中,ESP8266配置为与STM32F103通过串口通信。 实现Web服务器功能的步骤如下: 1. 配置ESP8266的工作模式和连接网络。通过向ESP8266发送AT指令,将其设置为AP或STA模式,并将其连接到指定的WiFi网络。 2. 在STM32F103中,初始化串口和与ESP8266通信的GPIO引脚。使用串口和ESP8266进行通信,发送和接收数据。 3. STM32F103发送HTTP请求到ESP8266,使用ESP8266模块作为服务器,接收STM32F103的请求并返回相应的数据。可以使用GET或POST请求来获取或发送数据。 4. ESP8266接收到来自STM32F103的HTTP请求后,解析请求的内容,并执行相应的处理操作。可以使用ESP8266的库文件来简化HTTP请求的处理。 5. ESP8266将处理结果返回给STM32F103。根据请求的内容,可以是HTML页面、JSON数据或其他格式的响应。 6. STM32F103接收到来自ESP8266的响应后,进行相应的处理,如显示HTML页面或解析JSON数据。 通过上述步骤,可以实现STM32F103控制ESP8266并利用其作为Web服务器的功能。整个过程可以灵活调整和扩展,以满足具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值