Logo

Projekt: WiFi skener

V tem projektu bomo uporabili ESP32 za nevidno zaznavanje prisotnosti oseb. Namesto senzorjev gibanja bomo uporabili WiFi omrežje. ESP32 bo preveril, če so pametni telefoni družinskih članov povezani na domači router.

Tehnični opomnik

Navodila za vezavo

Za pravilno delovanje zaslona povežite pine po naslednji tabeli:

TFT Pin Nano ESP32 Pin Opis
VCC 3.3V Napajanje (ne 5V!)
GND GND Ozemljitev
SCL (SCK) D13 SPI Clock
SDA (MOSI) D11 SPI Data
RES (RST) D8 Reset (nastavljeno v kodi)
DC D9 Data/Command
CS D10 Chip Select
BLK 3.3V Osvetlitev ozadja

Celotna koda projekta

Spodnja koda skenira lokalno omrežje in na TFT 2.0 zaslonu v realnem času prikazuje status naprav. Sistem vsakih 10 sekund preveri (ping-a) določene IP naslove in izpiše, ali je naprava prisotna v omrežju.

// Projekt: WiFi skener s prikazom na TFT 2.0 zaslonu
// Avtor: Borut Bukovnik - vadnica.org

#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <WiFi.h>
#include <ESP32Ping.h>

// Pini za TFT zaslon
#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8

// WiFi podatki
const char* ssid = "TVOJE_WIFI_IME";
const char* password = "TVOJE_GESLO";

// IP naslovi naprav
const char* ip_prva = "VPIŠI_IP_NAPRAVE"; 
const char* ip_druga = "VPIŠI_IP_NAPRAVE";

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.init(240, 320);
  tft.setRotation(1);
  tft.fillScreen(ST77XX_BLACK);
  
  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(2);
  tft.setCursor(10, 10);
  tft.print("Povezujem WiFi...");

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
  }
  
  tft.fillScreen(ST77XX_BLACK);
}

void prikaziStatus(int y, const char* ime, bool prisoten) {
  tft.setCursor(10, y);
  tft.setTextSize(2);
  tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  tft.print(ime);
  tft.print(": ");

  if (prisoten) {
    tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
    tft.println("DOMA     ");
  } else {
    tft.setTextColor(ST77XX_RED, ST77XX_BLACK);
    tft.println("NI DOMA  ");
  }
}

void loop() {
  tft.setCursor(10, 10);
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setTextSize(2);
  tft.println("PREVERJANJE...  ");

  // Preveri prvo napravo
  bool status1 = Ping.ping(ip_prva);
  prikaziStatus(60, "Naprava 1", status1);

  // Preveri drugo napravo
  bool status2 = Ping.ping(ip_druga);
  prikaziStatus(100, "Naprava 2", status2);

  delay(10000); // Osveži vsakih 10 sekund
}
WiFi Presence Scanner ESP32

Potreben material

Hvala za obisk! Dodajam politiko zasebnosti.

© 2024 Vse pravice pridržane.

Vam je koda pomagala? Če želite podpreti moj trud pri pripravi vodičev in vzdrževanju strani, mi lahko namenite donacijo za kavo.