【玩转ESP32】16、esp32获取rssi,辅助判断硬件是否异常

系列文章:

【玩转ESP32】1、开发环境搭建
【玩转ESP32】2、开发参考资料
【玩转ESP32】3、点亮LED,Blink,blink,blink
【玩转ESP32】4、ESP32驱动DHT11
【玩转ESP32】5、i2c-tools访问i2c设备
【玩转ESP32】6、驱动i2c设备—0.96 OLED
【玩转ESP32】7、ESP32连接wifi
【玩转ESP32】8、ESP32 Guru Meditation Error报错分析
【玩转ESP32】9、ESP32 作为TCP客户端连接服务器(非阻塞接收)
【玩转ESP32】10、创建用户分区表,数据读写存储
【玩转ESP32】11、编译报错:esp_bt.h:No such file or directory
【玩转ESP32】12、esp32串口使用
【玩转ESP32】13、软件定时器esp_timer使用
【玩转ESP32】14、esp32 mqtt基础
【玩转ESP32】15、esp32 mqtt client

前言:在研发阶段,可以通过仪器测量模块的射频性能,在批量生产的时候,通过仪器效率太低,本文分享一种可以高效验证模块射频性能的办法。
1、操作策略

(1)通过仪器测量标定几个射频性能正常的模块;
(2)获取一定距离下标准模块的rssi;
(3)获取一定距离下被测量模块的rssi;
(4)被测量模块和标准模块比较,同等距离下,如果rssi相差太大,则可以判定被测量模块射频异常。

2、实现思路:

在sta模式下,连接某个特定的ap,扫描已连接的ap,获取rssi。

3、核心代码实现:
static int8_t get_rssi(void)
{
    uint16_t number = 1;
    uint16_t ap_count = 0;

    wifi_ap_record_t ap_info[1];
    wifi_config_t wifi_sta_cfg;

    ESP_LOGI(TAG,"start scan");
    memset(ap_info, 0, sizeof(ap_info));
    if (esp_wifi_get_config(WIFI_IF_STA, &wifi_sta_cfg) != ESP_OK)//获取已连接的ap参数
    {
        ESP_LOGI(TAG, "esp_wifi_get_config err");  
        return -90;
    }

    wifi_scan_config_t scan_config = { 0 };
    scan_config.ssid = wifi_sta_cfg.sta.ssid;//限制扫描的ap的ssid
    scan_config.bssid = wifi_sta_cfg.sta.bssid;//限制扫描的ap的mac地址
    esp_wifi_scan_start(&scan_config, true);//阻塞扫描ap,scan_config为扫描的参数
    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info));//获取扫描到的ap信息
    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_num(&ap_count));
    //获取扫描到的ap数量,因为限制了ssid和mac,因此最多只会扫描到1个
    for (int i = 0; (i < 1) && (i < ap_count); i++) {
        ESP_LOGI(TAG, "SSID \t\t%s", ap_info[i].ssid);
        ESP_LOGI(TAG, "RSSI \t\t%d", ap_info[i].rssi);
        ESP_LOGI(TAG, "Channel \t\t%d", ap_info[i].primary);
        ESP_LOGI(TAG, "BSSID: \t\t%02x:%02x:%02x:%02x:%02x:%02x", 
                                                        ap_info[i].bssid[0],
                                                        ap_info[i].bssid[1],
                                                        ap_info[i].bssid[2],
                                                        ap_info[i].bssid[3],
                                                        ap_info[i].bssid[4],
                                                        ap_info[i].bssid[5]);
    }
    esp_wifi_scan_stop(); 
    //from start to stop need 3210ms
    ESP_LOGI(TAG,"stop scan\r\n");

    net_rssi=ap_info[0].rssi;

    return ap_info[0].rssi;
}
4、实际获取

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

freemote

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

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

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

打赏作者

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

抵扣说明:

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

余额充值