ESP8266开发实践(5)-创建可连接的wifi网络

概述

前一篇文章介绍了如何将esp8266连接到已有的wifi网络。但是在某些情况下,比如周围没有wifi时,我们可以让esp8266主动创建一个wifi网络,从而让其它设备,比如电脑、手机等连接上这个网络,然后与esp8266通信。大致的通信结构如下图所示。

原理

当esp8266主动创建这样的网络时,其工作在AP模式(接入点模式)下,即其允许其它设备接入该网络。与之相对应的便是前一篇文章中介绍的ST模式,这种模式下esp8266主动加入某个网络。

要启动这种AP工作模式,只需要使用以下接口函数:

boolean result = WiFi.softAP("ssid", "pass");

其中ssi为wifi的名称,pass为连接到此wifi时需要输入的密码。当创建成功时,返回true;创建失败时,返回false。可以看到要完成这样的工作是非常简单的,只需要调用这个函数即可。

示例

以下是一个例子,创建了一个名为esp8266-wifi、密码为12345678的wifi网络。

/**
 * 功能:将esp8266设置成soft-ap模式,以允许其它设备连接到esp8266
 * 详细:上电后esp8266将建立wifi网络,名称由ssid指定,密码由pass指定。
 * 其它设备,如手机、电脑等可连接至该网络并与esp8266进行通信。
 * 
 * 编写:李小童
 * 日期:2022-8-12
 * 开发型号:NodeMUC 1.0(ESP-12E)
 * 如需获取更多资料,以及相关的支持,可以联系:527676163@qq.com
 */
#include <ESP8266WiFi.h>

static const char *ssid = "esp8266-wifi";    // wifi名称
static const char * pass = "12345678";      // wifi密码
static int station_count = 0;               // 已经连接的结点数量

void setup() {
  // 串口工作在9600模式
  Serial.begin(19200);
  Serial.println("create ap....");

  // 进入soft-ap工作模式,如果失败则提示
  bool ok = WiFi.softAP(ssid, pass);
  if (!ok) {
    Serial.println("Create ap failed.");
    return;
  } 
  
  // 如果成功则在串口中设置其ip地址
  Serial.println("AP created.\n");
  Serial.print("ipadd:");
  Serial.println(WiFi.softAPIP());
}

void loop() {
  // 获取当前的连接设备数量,如果有没变化,不做处理
  uint8_t cnt = WiFi.softAPgetStationNum();
  if (cnt == station_count) {
    return;
  }

  // 数量变多,意味着新设备接收,提示;当设备断开连接时也提示
  if (cnt > station_count) {
    Serial.println("New station connected");
  } else if (cnt < station_count) {
    Serial.println("Station disconnected");
  }

  // 最后打印当前已经连接的设备数量
  Serial.printf("Station count: %d\n", cnt);

  // 数量发生变化时,记录最新的值
  station_count = cnt;
}

程序下载运行后,将可以在手机等设备的wifi列表里找到esp8266。然后,我们就可以选择加入,密码为12345678。

如果此时打开串行观察窗口,可以看到当程序运行起来后,如果AP创建成功将显示AP created,并输出自己的ip地址(这个ip地址为缺省值)。然后当我们用手机连接上该wifi时,将提示"New station conected",并显示新增的设备数量。当断开连接时,提示"Station disconnected"。

小结

ESP8266支持AP模式,即可以创建一个wifi网络从而让其它设备加入并与自己通信。要创建此网络,只需要调用WiFi.softAP()即可。

如果你对我的文章感兴趣,欢迎关注,或者在下方留言。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李述铜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值