[Arduino] ESP 8266 kullanarak Wi-Fi gücünü ölçme

İlginç bir rehberle karşınızdayım.

20200914_232700.jpg


ESP 8266 ile donatılmış NodeMCU V3 kartını kullanarak, herhangi bir Wi-Fi ağının dBm cinsinden çekim kuvvetini ölçeceğiz. Ölçtüğümüz değeri ise, I2C modülü yardımıyla LCD ekrana yazdıracağız.

İhtiyacımız olanlar:

  • NodeMCU geliştirme kartı
  • 2x16 LCD ekran
  • I2C kartı
  • 4 adet dişi-erkek jumper kablo
  • Yeterli büyüklükte breadboard

Devrenin kurulu oldukça basit. I2C'nin 4 portundan NodeMCU kartına:
  • GND -> GND
  • VCC -> VV/VIN (V3 kartta VV portuna)
  • SDA -> D2
  • SCL -> D1
Şeklinde bağlayın. I2C ve LCD'yi ise, breadboard üzerinde resimdeki gibi hizalayarak birleştirin.

20200914_233520.jpg


Sonrasında, Arduino IDE'den kodu kartınıza yükleyin. Kodu yüklemeden önce, ESP8266 kartını konfigure etmiş olmanız gerekmekte. Etmediyseniz, bu adresi ziyaret edebilirsiniz: Getting Started With ESP8266(LiLon NodeMCU V3) Complete Guide for IoT Startup With Example(as Server) (Flashlama kısmını yapmanıza gerek yoktur.)

Kod:

C++:
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>

const char* SSID = "Wi-Fi isminiz";

int lcdColumns = 16;
int lcdRows = 2;

LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);

int32_t getRSSI(const char* target_ssid) {
  byte available_networks = WiFi.scanNetworks();

  for (int network = 0; network < available_networks; network++) {
    return WiFi.RSSI(network);
  }
  return 0;
}

void setup(){
  Serial.begin(115200);

  lcd.begin();

  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Signal:");
  lcd.setCursor(12, 0);
  lcd.print("dBm");

  lcd.setCursor(0, 1);
  lcd.print("Time:");
  lcd.setCursor(10, 1);
  lcd.print("ms");

}

void loop(){
  unsigned long before = millis();
  int32_t rssi = getRSSI(SSID);
  unsigned long after = millis();

  lcd.setCursor(8, 0);
  lcd.print(rssi);
  lcd.setCursor(6, 1);
  lcd.print(after - before);
  delay(1000);


}

Sonuç:

20200914_232629.jpg


Peki, ne oluyor burada?

LCD'yi Arduino'ya bağlamak işkence gibi bir işlemdir normalde. Dirençler, potansiyometre, birçok kablo... Ancak I2C modülü sayesinde güç, GND ve iki veri kablosu sayesinde, 4 kabloyla direnç ve potansiyometre kullanmaya gerek kalmadan LCD kullanabilirsiniz. Kendi üzerinde direnci ve potansiyometresi vardır. Özellikle NodeMCU gibi küçük ve port sayısı az kartlar için hayat kurtarıcıdır.

ESP8266'nın Arduino için olan resmi kütüphanesinde, bağlanılan ağ için sinyal kuvveti ölçümü yapılamıuyor. Ancak herhangi bir ağa bağlanmadan, kartın görebildiği ağların sinyal kuvvetini ölçebiliyor. Bu nedenle sadece ağ ismimizi girdik, şifresini de girmedik. Zira ölçülebilen ağlar isimlerine göre listelenecek ve program, girdiğiniz isme göre, listenen ağlar arasından kendi ağınızı bulup size gösterecek.

Daha da ilginci için:

 
Son düzenleme:

Yeni konular

Geri
Yukarı