0

1 メートルの範囲でのみブザーを鳴らす必要があります。私の esp8266 はブザーに接続されていますが、ブザーは 2 つの esp8266 を使用して 1 メートルの範囲内でオンとオフを繰り返したり、まったく鳴らないこともあります。このプロジェクトは社会的距離を保っています。他に何をすればよいですか? 私が使用しているコードは次のとおりです。

#include <ESP8266WiFi.h>

const char* APssid = "Social Distancing"; //acess point of the device
const char* APpassword = "qwertyuiop";

const int RSSI_MAX = -37;//maximum strength of signal in dBm
const int RSSI_MIN =-100;//minimum strength of signal in dBm

void setup() 
{
  WiFi.mode(WIFI_OFF);
  WiFi.disconnect(); 
  delay(50); //this part turns off the wifi and resets it if it was already on

  Serial.begin(115200);
  pinMode(14,OUTPUT); 

  Serial.println();
  
  WiFi.mode(WIFI_AP_STA); //configuring the board in hybrid mode 
  Serial.print("Configuring access point...");
  WiFi.softAP(APssid, APpassword);

  Serial.println(WiFi.softAPIP());
}

void loop() 
{
  Serial.println("Wifi is scanning");
  int n = WiFi.scanNetworks();
  Serial.println("Wifi scan ended");
  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));//SSID
                  
      Serial.print(WiFi.RSSI(i));//Signal strength in dBm  
      Serial.print("dBm (");
  
     if(WiFi.SSID(i) == "Social Distancing")
     {
      if(WiFi.RSSI(i) > -37)//THIS -37 (RSSI) is the threshold value, this value is set 
according to the distance of 1m
      {
      digitalWrite(14,HIGH);//(Generic esp8266 : (14,HIGH) , NodeMCU : (D5,HIGH) )
      Serial.println("Social Distancing");
      break;
      }
     }
      else
      {
       digitalWrite(14,LOW);
      }
     }
      delay(50);
    } 
  Serial.println("");

  delay(50);

  WiFi.scanDelete();  
}
4

2 に答える 2