物联网开发——基于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的库)

下面是实现结果

### 使用ESP8266 WiFi模块和ASRPRO实现舵机的无线开关控制 #### 硬件连接 为了使ESP8266 WiFi模块ASRPRO协同工作来控制舵机,硬件之间的正确连接至关重要。通常情况下,ESP8266通过GPIO引脚向舵机发送PWM信号以调整其角度位置;而ASRPRO作为语音识别模块负责接收用户的语音指令并将其转换成相应的电信号传递给ESP8266处理[^1]。 #### 软件编程 针对上述需求,在Arduino IDE环境中编写程序代码如下所示: ```cpp #include <Servo.h> Servo myservo; // 创建伺服对象实例用于管理舵机 int pos = 0; const int asrPin = D5; // 定义ASR PRO输出端口对应的ESP8266 GPIO编号 void setup() { pinMode(asrPin, INPUT); // 设置asrPin为输入模式 myservo.attach(D4); // 将D4设置为PWM输出并myservo关联起来 } void loop(){ if(digitalRead(asrPin)==HIGH){ for (pos = 0; pos <= 90; pos += 1) { // 假设目标角度设定为90度 myservo.write(pos); delay(15); } }else{ for (pos = 90; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } } } ``` 此段代码实现了当检测到ASRPRO发出高电平时(即接收到特定命令),让舵机转动至指定的角度范围之内;反之则返回初始状态[^2]。 #### 配置网络功能 为了让整个系统具备远程操控能力,还需要配置ESP8266接入Wi-Fi网络,并建立Web服务器监听来自客户端设备(如手机APP)发来的HTTP请求消息。这部分可以通过安装`ESP8266WiFi`库以及利用内置函数完成相应操作[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

篱笆外的xixi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值