• Arduino IDE for ESP8266 (0) 官方API


    http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html

    0 简单的连接到WIFI

    #include <ESP8266WiFi.h>
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println();
    
      WiFi.begin("network-name", "pass-to-network");
    
      Serial.print("Connecting");
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
    
      Serial.print("Connected, IP address: ");
      Serial.println(WiFi.localIP());
    }
    
    void loop() {}
    

      

    1AP+STA模式

    ESP8266模块可以作为一个工作站,所以我们可以将它连接到Wi-Fi网络。它也可以作为软接入点(soft-AP)运行,建立自己的Wi-Fi网络。因此,我们可以将其他站连接到这样的ESP模块。ESP8266也可以在工作站和软接入点模式下工作。

    2 STA 模式

    站级有几个功能,以方便管理Wi-Fi连接。如果连接丢失,ESP8266将自动重新连接到上一次使用的接入点,一旦它再次可用。模块重启也会发生同样的情况。

     

    测试(1)添加几个可供连接的WIFI,自动连接,切换

    http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/station-examples.html

    /*
     *  This sketch trys to Connect to the best AP based on a given list
     *
     */
    
    #include <ESP8266WiFi.h>
    #include <ESP8266WiFiMulti.h>
    
    ESP8266WiFiMulti wifiMulti;
    
    void setup() {
        Serial.begin(115200);
        Serial.setDebugOutput(true);
        Serial.println();
        delay(10);
    	
        wifiMulti.addAP("dongdong", "dongdong");
        wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
        wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
    
    	Serial.println("Connecting Wifi...");
        if(wifiMulti.run() == WL_CONNECTED) {
            Serial.println("");
            Serial.println("WiFi connected");
            Serial.println("IP address: ");
            Serial.println(WiFi.localIP());
        }
    }
    
    void loop() {
        if(wifiMulti.run() != WL_CONNECTED) {
            Serial.println("WiFi not connected!");
            delay(1000);
        }
    }
    

     测试(二) STA文档

    WiFi.begin(ssid, password)
    • 默认情况下,只要断开连接,ESP将尝试重新连接到Wi-Fi网络。不需要单独的代码来处理这个问题。模拟断开的一个好方法是重置接入点。ESP将报告断开连接,然后尝试自动重新连接。
    WiFi.begin(ssid, password, channel, bssid, connect)

    参数的含义如下:

    • ssid- 一个包含我们想要连接的接入点的SSID的字符串,最多可以有32个字符
    • password到接入点,一个字符串应该最少8个字符长,而不是更长超过64个字符
    • channelAP的,如果我们喜欢使用特定信道来操作,否则这个参数也可以省略
    • bssid- AP的MAC地址,这个参数也是可选* connect-一个boolean参数,如果设置为false,将指示模块只保存其他参数,而不实际建立到接入点的连接

    配置

    禁用DHCP客户端(动态主机配置协议),并将站点接口的IP配置设置为用户定义的任意值。该接口将是一个静态IP配置,而不是由DHCP提供的值。

    WiFi.config(local_ip, gateway, subnet, dns1, dns2)
    • local_ip - 在此输入你想分配ESP站接口的IP地址
    • gateway - 应包含网关(路由器)的IP地址来访问外部网络
    • subnet - 这是一个掩码,用于定义本地网络的IP地址范围
    • dns1dns2- 定义维护域名目录(如www.google.co.uk的域名服务器(DNS)的IP地址的可选参数,并将它们转换为IP地址

    示例代码:

    #include <ESP8266WiFi.h>

    const char* ssid = "dongdong";
    const char* password = "dongdong";
    String name="DD_Station_01";
    IPAddress staticIP(192,168,1,22);
    IPAddress gateway(192,168,1,9);
    IPAddress subnet(255,255,255,0);

    void setup(void)
    {
      Serial.begin(115200);
      Serial.println();

      Serial.printf("Connecting to %s ", ssid);
      WiFi.begin(ssid, password);
      WiFi.config(staticIP, gateway, subnet);
      // 修改主机名
      WiFi.hostname(name);
      Serial.printf("New hostname: %s ", WiFi.hostname().c_str());

      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println();
      Serial.print("Connected, IP address: ");
      Serial.println(WiFi.localIP());   // 分配的动态地址&自己设置的静态地址

      Serial.printf("SSID: %s ", WiFi.SSID().c_str());// 连接的WIFI名
    }

    void loop() {}

      请注意,静态IP配置的站点通常会更快地连接到网络。在上面的例子用了500ms左右(一个点显示)。这是因为通过DHCP客户端获取IP配置需要时间,在这种情况下,跳过这一步。如果您将所有三个参数都作为0.0.0.0(local_ip,网关和子网)传递,它将重新启用DHCP。您需要重新连接设备以获取新的IP。

    管理连接

    重新连接

    重新连接电台。这是通过从接入点断开然后发起连接返回到相同的AP来完成的。

    WiFi.reconnect()

    注意:

    • 1.电台应该已经连接到接入点。如果不是这样,则函数将返回false不执行任何操作。
    • 2.如果true返回,则意味着连接顺序已经成功启动。用户仍然应该检查连接状态,等待WL_CONNECTED报告:
    • WiFi.reconnect();
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }

    断开

    将当前配置的SSID和密码设置为null值,并将电台与接入点断开连接。

       WiFi.disconnect(wifioff)

    • wifioff是一个可选boolean参数。如果设置为true,则电台模式将被关闭。

    已连接

    true如果电台连接到接入点,或者false没有连接,则返回

    WiFi.isConnected()

    setAutoConnect

    autoConnect是一个可选参数。如果设置为,false则自动连接功能将被禁用。如果省略或设置为true,则自动连接将被启用。

    WiFi.setAutoConnect(autoConnect)

    setAutoReconnect

    设置模块是否尝试重新连接到接入点,以防断开连接。

    WiFi.setAutoReconnect(autoReconnect)
    • 如果参数autoReconnect设置为true,则模块将尝试重新建立与AP的丢失连接。如果设置为,false那么模块将保持断开连接。

    主机名

    Serial.printf("Default hostname: %s
    ", WiFi.hostname().c_str());
    WiFi.hostname("Station_Tester_02");
    Serial.printf("New hostname: %s
    ", WiFi.hostname().c_str());

    状态

    返回Wi-Fi连接的状态。

    WiFi.status()

    SSID

    返回Wi-Fi网络的名称,正式称为服务集标识(SSID)

    Serial.printf("SSID: %s
    ", WiFi.SSID().c_str());


    软接入点AP

    1 智能连接

    ESP首先以软AP模式启动,所以我们可以使用笔记本电脑或手机连接到它。然后我们能够提供目标网络的凭据。一旦完成ESP切换到站模式,并可以连接到目标Wi-Fi。

    2 作为网路节点。

    软AP模式的另一个方便的应用是建立网状网络ESP可以在软AP和站模式下运行,因此它可以作为网状网络的节点。

    http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/server-examples.html

     
    #include <ESP8266WiFi.h>
    void setup() {
      Serial.begin ( 115200 );
      Serial.println("");
      // 设置内网
      IPAddress softLocal(192,168,128,1);   // 1 设置内网WIFI IP地址
      IPAddress softGateway(192,168,128,1);
      IPAddress softSubnet(255,255,255,0);
      WiFi.softAPConfig(softLocal, softGateway, softSubnet);
       
      //String apName = ("ESP8266_"+(String)ESP.getChipId());  // 2 设置WIFI名称
        String apName = "DD_ESP8266_AP_01";
      const char *softAPName = apName.c_str();
       
      WiFi.softAP(softAPName, "123456");      // 3创建wifi  名称 +密码 adminadmin
       
      IPAddress myIP = WiFi.softAPIP();  // 4输出创建的WIFI IP地址
      Serial.print("AP IP address: ");     
      Serial.println(myIP);
       
      Serial.print("softAPName: ");  // 5输出WIFI 名称
      Serial.println(apName);
    }
      
    void loop() { Serial.printf("Stations connected = %d ", WiFi.softAPgetStationNum()); delay(3000); }

      

     
  • 相关阅读:
    日报 18/07/10
    meta标签
    map 和 vector 的erase函数说明
    Intel CPU MMX SSE SSE2/3/4指令集手册下载URL
    关于c中 int, float, double转换中存在的精度损失问题
    c++ 常数后缀说明
    STL中容器的push()或者push_back()函数的一点说明
    fprintf, fscanf,printf,scanf使用时参数注意
    操作系统 庞丽萍 第七章
    辨析全局变量的声明与定义
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/8286117.html
Copyright © 2020-2023  润新知