配置ESP8266连上指定的路由

原创 2016年08月29日 07:58:38

前言

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

相关数据类型介绍

一、station_config

成员名称 数据类型 功能
ssid uint8类型的数组 SSID
password uint8类型的数组 密码
bssid_set uint8 -
bssid uint8类型的数组 -

结构体原型

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) -
参数 *config station的配置
返回值 true 配置成功
- false 配置失败
注意 需要在 ESP8266 station使能的情况下调用此API -

三、 wifi_station_set_config_current

功能 配置 ESP8266 station,配置信息不保存到flash中 -
函数原型 bool wifi_station_set_config_current(struct station_config *config) -
参数 *config station的配置
返回值 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参考

版权声明:本文为博主原创文章,未经博主允许不得转载。

ESP8266作为服务器配置方法

应用场景:ESP8266模块连接到室内路由器上面然后为MCU提供接入网络的功能,MCU接入到网络后,8266作为服务器使用,通过电脑客户端访问8266. 步骤一: 确认模块中间的四个引脚接到了VCC(...
  • peakguy
  • peakguy
  • 2016年01月09日 22:44
  • 8668

ESP8266学习笔记6:ESP8266规范wifi连接操作

几周前,有网友就问我esp8266重新上电无法自动连接之前配置的路由器。这确实是目前DEMO最缺的一个功能,当首次将设备接入wifi之后,设备应该保存住SSID和PWD,在后续上电时能自己去连接wif...
  • zddxmu
  • zddxmu
  • 2015年08月21日 12:09
  • 15926

ESP8266--学习笔记(二)扫描、连接WiFi

经过上次的HelloWorld,我们知道了其实ESP8266其实是里面有个单片机的模块,我的操作其实就是操作里面的单片机,因为是单片机所以里面会有各种内置的外设,而我们的重点是使用WiFi,所以就直接...
  • qq_28877125
  • qq_28877125
  • 2017年03月16日 00:46
  • 3576

ESP8266连接到路由器 局域网通信

  • 2017年07月23日 14:05
  • 378KB
  • 下载

esp8266和stm32之五,能连接路由器和增加RFID的读写功能

  • 2015年10月20日 08:08
  • 6.27MB
  • 下载

ESP8266-SDK如何设置静态IP

ESP8266要设置静态IP需要调用wifi_set_ip_info这个函数, struct ip_info info; IP4_ADDR(&info.ip,192,168,0,200); IP...
  • chen244798611
  • chen244798611
  • 2016年05月30日 00:15
  • 4415

ESP8266-01使用记录

ESP8266芯片是wifi连接芯片,可以实现tcp连接和udp连接,同时也可实现自建热点功能。 1、esp8266联网方式 1、通过在程序中写入无线路由的ssid和密码,即可连接。 2、通过乐鑫智连...
  • gaixm
  • gaixm
  • 2016年03月29日 12:32
  • 967

WiFi-ESP8266入门开发(六)-路由系统

个人认为,赋予ESP8266最强大的功能莫过于HTTP路由,HTTP路由,根据不同的url响应不同的任务。在这里就类似于node.js的路由。 在教程里边已经展示了基本路由系统的使用,在我们访问ip...
  • solar_Lan
  • solar_Lan
  • 2017年07月03日 17:28
  • 1051

ESP8266学习笔记6:ESP8266规范wifi连接操作

几周前,有网友就问我esp8266重新上电无法自动连接之前配置的路由器。这确实是目前DEMO最缺的一个功能,当首次将设备接入wifi之后,设备应该保存住SSID和PWD,在后续上电时能自己去连接wif...
  • iotisan
  • iotisan
  • 2017年02月03日 23:52
  • 2105

esp8266 初始配置

 最近在某宝上买了块ESP8266串口WIFI,这个模块相当便宜。今天测试了一下,把测试过程放出来一起学习。      入门级的,相当简单,但我在论坛找...
  • fengyingyuechou
  • fengyingyuechou
  • 2016年04月13日 16:55
  • 4212
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置ESP8266连上指定的路由
举报原因:
原因补充:

(最多只允许输入30个字)