配置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参考

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

相关文章推荐

RMAN Restore Database Slow / How To Improve RMAN Restore Performance [ID 467694.1]

RMAN Restore Database Slow / How To Improve RMAN Restore Performance [ID 467694.1] Modified 10-JUN-2...

自己编译NodeMCU固件 & 提交数据到服务器

自己编译NodeMCU固件之前这篇文章nodeMCU使用小记里用到的固件是比较老的固件,不带http模块,所以无法实现http的post请求。所以……在云构建固件没法用的情况下,还得自己编译固件啊。。...

【公网远程】网页控制nodemcu的LED

id = '4567' -自己设置自己的id替换4567 ssid = 'wifi名' ssidpwd = 'wifi密码' wifi.setmode(wifi.STATION) wifi.sta....

NodeMCU上通过DS18b20采集室温

NodeMCU 是一块集成了 ESP8266的单片机芯片,很适合在物联网领域的开发,因为有廉价的ESP8266的WIFI模块,因此在未来将会有一个比较广泛的应用。但现在这块板子资料还不够多,毕竟是刚出...
  • dingzz
  • dingzz
  • 2015-07-15 09:57
  • 6966

华硕笔记本X450JB拆机及加装固态硬盘

华硕笔记本X450JB拆机及固态硬盘更换

【Arduino学习笔记】手把手教你使用ESP8266----②调试篇

ESP8266调试篇

NodeMCU文档中文翻译 8 Websocket模块

一、译文 Websocket客户端模块实现了 RFC6455 (版本 13)协议规范并且提供了简单的接口来收发消息. 本模块支持分片消息, 如果服务器无法响应会自动回复 SSL/TLS 支持 注...

ESP8266 SDK 编程入门 01-基础篇

一直都想搞智能家居方面的东西,搞智能家居就离不开网络控制,之前研究过一段时间arduino+esp8266方案,发现这种方式稳定性很差,经常出现通信错误和传输问题,查阅了一些资料,发现ESP8266模...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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