wemos D1 arduino物联网开发板应用笔记6-STA模式连接网络

前言

本节我们学习使用WeMos D1连接网络,我这里使用手机开WIFI热点,SSID为sand,passwd为12345678,连接时候需要将模块设置位STA模式(Station模式)。

一、基础知识

1.Station模式简介

WeMos D1处于Station模式时候能够连接WIFI热点,Station模式也叫做STA站点,每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称为一个STA站点。

在STA连接WiFi热点过程中,首先WiFI热点会发出信标帧(beacon),同时STA也会发出Probe Request帧,然后STA会收到信标帧(beacon)或者WiFi热点回复的Probe Response数据帧,之后根据收到的信号强度决定连接哪一个热点,同意环境下不同WiFi热点可能含有相同的SSID,模块连接信号强度最强的WiFi热点。

2.ESP8266WiFi库

在这里插入图片描述
从上图中可以看出ESP8266WiFi库主要包含Station、Soft AP、config、WiFiClient、WiFiServer、scan、hostname,本节主要介绍Station相关的函数使用。
在这里插入图片描述

二、实例

1.应用程序1

1.1 动态IP方式连接WiFi热点

#include "ESP8266WiFi.h"
char* ssid = "sand";
char* passwd = "12345678";
void setup() {
  Serial.begin(115200);
  // Set WiFi to station mode
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, passwd);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.println("connecting......");
  }
  Serial.println("Connect to router successfully!");
  Serial.println(String("mac address is ")+WiFi.macAddress());
}
void loop() {
  if (WiFi.status() == WL_CONNECTED)
  {
    Serial.println("Connect to router success");
    Serial.println(String("Subnet mask is ")+WiFi.subnetMask().toString());
    Serial.println(String("gatewayIP address is ")+WiFi.gatewayIP().toString());
    Serial.println(String("dnsIP address is ")+WiFi.dnsIP().toString());
    Serial.println(String("SSID is ") + WiFi.SSID());
    Serial.println(String("PSK is ") + WiFi.psk());
    Serial.println(String("BSSID is ") + WiFi.BSSIDstr());
    Serial.println(String("RSSI is ") + WiFi.RSSI());
  }else
  {
    Serial.println("Connect to router failed");  
  }
  // Wait a bit before scanning again
  delay(1000);
}

上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址,并在loop()函数中循环打印IP地址网络信息。

1.2编译运行
程序编译上传后设备执行Log如下:
在这里插入图片描述

2.应用程序2

2.1 静态IP方式连接WiFi热点程序

#include "ESP8266WiFi.h"
char* ssid = "sand";
char* passwd = "12345678";
IPAddress local_static_ip(192, 168, 43, 10);
IPAddress local_gateway(192, 168, 43, 1);
IPAddress local_subnet(255, 255, 255, 0);
IPAddress local_dns_ip(192, 168, 43, 1);
void setup() {
  Serial.begin(115200);
  // Set WiFi to station mode
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, passwd);
  WiFi.config(local_static_ip, local_gateway, local_subnet, local_dns_ip);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.println("connecting......");
  }
  Serial.println("Connect to router successfully!");
  Serial.println(String("mac address is ")+WiFi.macAddress());
}
void loop() {
  if (WiFi.status() == WL_CONNECTED)
  {
    Serial.println("Connect to router success");
    Serial.println(String("IP address is ")+WiFi.localIP().toString());
    Serial.println(String("Subnet mask is ")+WiFi.subnetMask().toString());
    Serial.println(String("gatewayIP address is ")+WiFi.gatewayIP().toString());
    Serial.println(String("dnsIP address is ")+WiFi.dnsIP().toString());
    Serial.println(String("SSID is ") + WiFi.SSID());
    Serial.println(String("PSK is ") + WiFi.psk());
    Serial.println(String("BSSID is ") + WiFi.BSSIDstr());
    Serial.println(String("RSSI is ") + WiFi.RSSI());
  }else
  {
    Serial.println("Connect to router failed");  
  }
  // Wait a bit before scanning again
  delay(1000);
}

上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后,设置固定IP地址后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址,并在loop()函数中循环打印IP地址网络信息。

2.2编译运行
程序编译上传后设备执行Log如下:
在这里插入图片描述

3.应用程序3

3.1 修改hostname程序

#include "ESP8266WiFi.h"
char* ssid = "sand";
char* passwd = "12345678";
char *host = "ESP8266_TEST1";
void setup() {
  Serial.begin(115200);
  // Set WiFi to station mode
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, passwd);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.println("connecting......");
  }
  Serial.println("Connect to router successfully!");
  Serial.println(String("mac address is ")+WiFi.macAddress());
  Serial.println(String("hostname is ")+WiFi.hostname());
  WiFi.hostname(host);
}
void loop() {
  if (WiFi.status() == WL_CONNECTED)
  {
    Serial.println("Connect to router success");
    Serial.println(String("hostname is ")+WiFi.hostname());
  }else
  {
    Serial.println("Connect to router failed");  
  }
  // Wait a bit before scanning again
  delay(1000);
}

上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址和hostname,之后设置hostname为"ESP8266_TEST1",并在loop()函数中循环打印hostname信息。

3.2编译运行

程序编译上传后设备执行Log如下:
在这里插入图片描述
程序联网成功后获取hostname为ESP_08ED87,手机开的热点截图如下
在这里插入图片描述

程序修改hostname后,手机开的热点截图如下
在这里插入图片描述

三、结语

1.总结:

本节完,实际操作过程中需要注意的地方有如下几点:

(1)获取网络状态?

程序需要在loop()函数中循环获取网络状态,如果网络发生变化,程序需要做出相应动作。

(2)配置静态IP地址等?

参考程序,注意WiFi.config()的参数设置。

2. 获取源码

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

公众号:物联网客栈,扫码关注,回复wemos即可。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WeMos D1 Wifi Arduino esp8266是一块基于esp8266芯片的Arduino开发,用于开发智能家居、IoT等应用。下面是其使用步骤: 1. 安装驱动程序 在连接WeMos D1 Wifi Arduino esp8266到电脑上之前,需要安装它的CH340驱动程序,否则电脑无法识别该设备。 2. 连接到电脑 将WeMos D1 Wifi Arduino esp8266通过USB接口连接到电脑上,并选择正确的串口和波特率。 3. 安装Arduino IDE WeMos D1 Wifi Arduino esp8266可以通过Arduino IDE进行编程。在开始编程之前,需要先安装Arduino IDE。 4. 安装esp8266支持库 由于WeMos D1 Wifi Arduino esp8266基于esp8266芯片,所以需要安装esp8266支持库。在Arduino IDE中,点击工具->开发->Boards Manager,搜索esp8266,然后选择最新版本进行安装。 5. 编写程序 在Arduino IDE中,选择WeMos D1 Wifi Arduino esp8266开发,并打开一个代码文件。然后就可以开始编写程序了。例如,可以通过WeMos D1 Wifi模块连接到无线网络,并通过网页服务器控制一个LED灯。 6. 上传程序 在编写好程序之后,就可以将程序上传到WeMos D1 Wifi Arduino esp8266中运行。点击Arduino IDE的“上传”按钮,即可将程序上传到WeMos D1 Wifi Arduino esp8266中。 7. 调试程序 在程序上传成功之后,可以通过串口监视器等方式进行调试,并查看程序的输出结果。如果需要修改程序,只需要重新编辑代码,然后再次上传即可。 总之,WeMos D1 Wifi Arduino esp8266是一块非常方便的Arduino开发,使用它可以轻松实现智能家居、IoT等应用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值