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.
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 |
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
}
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.