wifi測距


 

 

#include "ESP8266WiFi.h"

#include "math.h"
//d = 10^(A-(abs(rssi)) / (10 * n))  信號強度
#define N 45                //N = 10 * n ,其中n為環境衰減因子,3.25-4.5
#define A -35            //接收機和發射機間隔1m時的信號強度



void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
//  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
//  WiFi.softAP("215-wifi","1234567890");
   
  WiFi.disconnect();
  delay(100);
  Serial.println("Setup done");
 
   
}




void loop() {
  Serial.println("scan start");
  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  
   
  if (n == 0) {
    Serial.println("no networks found");
  } else {
    Serial.print(n);
    Serial.println(" networks found"); 
    for (int i = 0; i < n; ++i) {
      // Print SSID and RSSI for each network found
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(")");

      //接收信號強度指示算法(RSSI)
      //A為定位節點與參考點之間的距離d為 1m 時測得的 RSSI 值;
      //n為信號衰減因子,范圍一般為2~4。
/*
double log (double); 以e為底的對數   
double log10 (double);以10為底的對數    
double pow(double x, double y);計算以x為底數的y次冪    
float powf(float x, float y); 功能與pow一致,只是輸入與輸出皆為浮點數    
*/

    float iu, distance;
    iu = (float)(A-WiFi.RSSI(i) ) / (float)N;  
    distance = powf(10.0, iu);//計算以x為底數的y次冪     功能與pow一致,只是輸入與輸出皆為浮點數  

    Serial.print("distance:---"); Serial.println(distance);
      
    }
  }
 
       
  
 
   
  delay(3000);
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM