物联网开发——基于esp8266的WIFI信号强度检测器

一、说明——ESP8266WiFiScan库

1、scanNetworks或者scanNetworksAsync

该函数可以扫描到ESP8266开发板所在环境中的可用WIFI网络,并且将WiFi网络信息保存到内存中。通过调用SSIDRSSI等函数,我们还可以得到这些扫描到的WIFI的更多信息。

此函数在扫描WiFi网络时采用同步扫描模式。与其相对应的还有scanNetworksAsync异步扫描WiFi。

所谓同步扫描就是每一次调用本函数时,ESP8266开发板会一次性得到完整的WiFi列表,并且将WiFi列表保存在内存中。

2、getNetworkInfo

当ESP8266开发板使用scanNetworks或者scanNetworksAsync对所处环境的WiFi网络进行扫描后,ESP8266开发板会将扫描到的网络信息保存在内存中。

通过此函数,我们可以获取扫描到的WiFi的网络名称、加密类型、信号强度、MAC地址、网络信道、网络是否隐藏等信息。

注:如需单独获取以上列出的WiFi信息中的某一项,可参考ESP8266WiFiScan库中信息类型的其它函数内容。

二、语法

wiFi.getNetworkInfo(i, ssid, encryptionType, RSSI, BSSID, channel, isHidden)

三、参数

getNetworkInfo函数会将WiFi网络信息存入参数中。这些参数的具体功能如下。

i:扫描到的接入点网络列表的序号(uint8_t型)
ssid:扫描到的接入点网络的网络名称(String型)
encryptionType:扫描到的接入点网络的加密类型(uint8_t型)
RSSI:扫描到的接入点网络的网络信号强度(int32_t型)
BSSID:扫描到的接入点网络的MAC地址(大小为6个元素的uint8数组指针)
channel:扫描到的接入点网络的网络通道(int32_t型)
isHidden:扫描到的接入点网络是否是隐藏网络(bool型)

四、返回值

如果成功获取WiFi信息,则返回true,否则返回false。

五、完整程序

#include <ESP8266WiFi.h>
 
void setup() {
  Serial.begin(115200);  //设置串口波特率,以便打印信息
  delay(5000);           //延时5s
  WiFi.mode(WIFI_STA);   //设置为无线终端模式
  WiFi.disconnect();     //断开,不连接到任何一个接入点
  delay(100);
  Serial.println("STA建立完成");
}
 
void loop() {
  Serial.println("同步扫描开始");
  int n = WiFi.scanNetworks();    //开始同步扫描,将返回值
  Serial.println("同步扫描结束");   //存放在变量n中
  if (n == 0){
    Serial.println("找不到网络");
  }else{
    Serial.println("发现网络");
    
    // 建立一系列变量,用于存储网络信息
    String ssid;            // 网络名称
    uint8_t encryptionType; // 网络加密类型
    int32_t RSSI;           // 网络信号强度
    uint8_t* BSSID;         // 网络接入点设备mac地址
    int32_t channel;        // 网络信道
    bool isHidden;          // 网络是否隐藏
    for (int i = 0; i < n; i++) //逐个打印扫描到的接入点信息
    {
       //获取扫描到的接入点网络信息(网络名称,信号强度等)
       WiFi.getNetworkInfo(i, ssid, encryptionType, RSSI, BSSID, channel, isHidden);
       //打印扫描到的接入点网络信息(网络名称,信号强度等)
       Serial.printf("%d: %s, Ch:%d, (%ddBm) %s %s\n", i + 1, ssid.c_str(), channel, RSSI, encryptionType == ENC_TYPE_NONE ? "开放" : "加密", isHidden ? "隐藏" : "显示");
    }
    
    Serial.println("");
    delay(5000);// 延时5s之后再次扫描
  }
}

六、附加

硬件方面只需要让esp8266通过数据线连接电脑即可(记得下载好ESP8266WiFi.h的库)

下面是实现结果

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

篱笆外的xixi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值