数码之家

 找回密码
 立即注册
搜索
查看: 2141|回复: 8

[Arduino] 请教个关于esp32 WiFi rssi的问题

[复制链接]
发表于 2021-11-23 23:44:11 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看乐鑫的演示视频有个遥控控制灯的  说是遥控通过espnow控制灯的开和关  通过rssi来判断控制那盏灯的开和关   我想请教下哪位高手知道espnow的发送或接收端获取rssi数据的方法  如果有例程是最好  我是用arduino编程的  arduino里没有找到espnow关于rssi的例子   请高手帮忙 先谢谢了
发表于 2021-11-24 09:30:10 | 显示全部楼层
本帖最后由 fryefryefrye 于 2021-11-24 09:57 编辑

我用过ESP32 + Arduino 接收手机的蓝牙广播信号,可以得到蓝牙信号的rssi,从而估算距离。
WiFi信号没搞过。


大概看了一下esp-now的源码,似乎没有rssi,这里有esp-32的所有的源码,你可以自己继续找找。
https://github.com/espressif/esp ... i/include/esp_now.h
回复 支持 反对

使用道具 举报

发表于 2021-11-24 17:17:39 | 显示全部楼层
8266都有,32更应该有了


void loop() {
    if(client.connected()==true)
         whetherConnect=1;
      else
         whetherConnect=0;   
    if(whetherConnect==0)
    {
        Serial.print("connecting to ");
        Serial.println(host);
   
        
        if (!client.connect(host, port)) {
            Serial.println("connection failed");
            Serial.println("wait 5 sec...");
            delay(5000);
            return;
        }
        else
        {
          whetherConnect =1;
        }
    }

    if(Serial.available())
    {
       if(Serial.read()=='#')
       {
        int n = WiFi.scanNetworks();
        Serial.println("scan done");
        if(n==0)
        {
          client.println("no networks found");
          delay(200);
        }  
        else
        {
          client.print(n);
          client.println(" networks found");
          delay(500);
          for (int i = 0; i < n; ++i)
          {
            // Print SSID and RSSI for each network found
            //client.print(i + 1);
            //client.print(": ");
            client.print(WiFi.SSID(i));
            delay(500);
            client.print(" ");
            delay(500);
            client.println(WiFi.RSSI(i));
             delay(500);
           // client.print(")");
            //client.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
          }
        }
        
        // This will send the request to the server
        client.println("------------------------------------------");
   
        //read back one line from server
        //String line = client.readStringUntil('\r');
        //Serial.println(line);
   
        //Serial.println("closing connection");
        //client.stop();
        
       // Serial.println("wait 5 sec...");
      //  delay(5000);
      }
      
   }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-24 22:08:53 | 显示全部楼层
fryefryefrye 发表于 2021-11-24 09:30
我用过ESP32 + Arduino 接收手机的蓝牙广播信号,可以得到蓝牙信号的rssi,从而估算距离。
WiFi信号没搞过 ...

貌似也没有  估计他们程序不单单只有espnow
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-24 22:27:48 | 显示全部楼层
devcang 发表于 2021-11-24 17:17
8266都有,32更应该有了

多谢 我研究下
回复 支持 反对

使用道具 举报

发表于 2021-11-24 23:06:43 | 显示全部楼层
本帖最后由 fryefryefrye 于 2021-11-24 23:09 编辑

上面那个源码,获得的是附近无线热点的信号强度。

你想做接近开关吗?用蓝牙可以有RSSI。
直接搜索一下周围的蓝牙设备,就可以获取MAC地址和RSSI。和上面搜索无线热点差不多。

但是蓝牙广播设备可以很小,电池耐用,随身携带。或者手机兼任。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-25 16:54:48 | 显示全部楼层
fryefryefrye 发表于 2021-11-24 23:06
上面那个源码,获得的是附近无线热点的信号强度。

你想做接近开关吗?用蓝牙可以有RSSI。

我是想获得最近距离设备的wifimac地址然后通过espnow给它发送信息    蓝牙rssi是可以 但得到的是blemac地址  和wifimac不一样   
回复 支持 反对

使用道具 举报

发表于 2023-4-29 09:55:20 来自手机浏览器 | 显示全部楼层
这位兄台是想做电动车靠近启动吧,我一样想法,折腾了一段时间。用的是esp8266,wifi的rssi检测,只是wifi的信号很不稳定,60-70的信号强度启动。不过信号大于85关闭始终不能解决,有的时候远离了wifi信号断联电动车还亮着。最后加个磁控开关在侧撑上解决。侧撑收起,检测有无wifi信号mac验证,有则启动,无则继续检测;侧撑放下,直接关闭电源。
wifi基本手机都开着,单独开蓝牙耗电,不如选其他蓝牙模块。
完成不久电动车实行垃圾新国标,换了辆带刷卡的电动车,就没有继续完善了。思路可以看看能不能借鉴。
回复 支持 反对

使用道具 举报

发表于 2023-4-29 21:04:30 | 显示全部楼层
qmzbz 发表于 2023-4-29 09:55
这位兄台是想做电动车靠近启动吧,我一样想法,折腾了一段时间。用的是esp8266,wifi的rssi检测,只是wifi ...

我也是在支脚上加了个开关。不过我以前用的机械接近开关,总是工作不可靠。
后来用的水银开关。稳定可靠。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-22 23:28 , Processed in 0.140400 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表