Hálózatkezelés, CAD/CAM és IoT projektek gyűjteménye. Cisco Packet Tracer alapú DHCP és DNS szerver konfiguráció, CNC kontúr programozás esztergagéphez, valamint DHT11 alapú okos meteorológiai állomás Raspberry Pi és ThingSpeak felhővel.
Cisco Packet Tracer alapú hálózattervezés: DHCP és DNS szerver konfigurálása, automatikus IP-cím kiosztás, domain névfeloldás és HTTP webszerver beállítása.
↓ Kattints az eszközökre az adatokért · Húzd a vásznon · Ping / Animáció gombokkal tesztelj
A feladat egy demo hálózat felépítése volt 3 kliens PC, 1 Switch (Cisco 2960-24TT) és 1 Server-PT segítségével. A szerveren DHCP (Dynamic Host Configuration Protocol) szolgáltatást kellett konfigurálni az automatikus IP-cím kiosztáshoz, és DNS (Domain Name Service) szervert létrehozni a www.bem.info domain névvel, amely a 192.168.1.100-as IP-re mutat.
A szerver statikus IP-t kapott (192.168.1.100 / 255.255.255.0, Default Gateway: 192.168.1.0), mivel önmagának nem tudna DHCP-vel IP-t kiosztani. A három PC DHCP módra lett állítva — automatikusan kapnak IP-t a serverPool-ból (Start: 192.168.1.0, Max: 10 user, DNS: 192.168.1.100).
A DNS A Record bejegyzés: www.bem.info → 192.168.1.100. A kliensek böngészőjébe csak a domain nevet kell beírni — a szerver HTTP weboldalát (index.html: „BEM INFO”) érik el.
| Eszköz | IP-cím | Mód | Szerepkör |
|---|---|---|---|
| Server0 | 192.168.1.100/24 | Statikus | DHCP + DNS + HTTP szerver |
| PC0 | 192.168.1.1 | DHCP | Kliens — auto kiosztás |
| PC1 | 192.168.1.2 | DHCP | Kliens — auto kiosztás |
| PC2 | 192.168.1.3 | DHCP | Kliens — auto kiosztás |
| Switch1 | — | Layer 2 | Cisco 2960-24TT |
A hálózati kapcsolat ellenőrzése PING paranccsal történt. A 192.168.1.1-es PC-ről pingeltük meg a 192.168.1.2-es PC-t — mind a 4 csomag megérkezett, 0% csomagvesztés, <1ms válaszidővel. Ez megerősíti, hogy a DHCP helyes IP-ket osztott ki és az eszközök kommunikálnak egymással.
A DNS + HTTP tesztnél PC1 böngészőjébe a http://www.bem.info URL-t írtuk be. A DNS szerver feloldotta a nevet 192.168.1.100-ra, a Server-PT visszaadta az index.html tartalmát: „BEM INFO — Bem info www.bem.info”.
A 0% csomagvesztés és <1 ms válaszidő megerősíti, hogy a hálózat helyes konfigurációval működik. A Switch Layer 2-n MAC-cím alapján továbbítja a kereteket.
Ebben a projektben egy átfogó hálózati infrastruktúrát terveztem és konfiguráltam Cisco Packet Tracer segítségével. A cél egy automatizált IP-cím kiosztással (DHCP), névfeloldással (DNS) és belső webes szolgáltatással (HTTP) rendelkező hálózat stabil működésének bemutatása volt.
↓ Kattints az eszközökre az adatokért · Húzd a vásznon · Ping / Animáció gombokkal tesztelj
A feladat egy kétalhálózatos vállalati hálózat felépítése volt Cisco Packet Tracer segítségével. A bal oldali LAN-ban (192.168.1.0/24) 3 kliens PC, 1 Switch (Switch0, Cisco 2960-24TT) és 1 DHCP/DNS szerver (Server0) helyezkedik el. A jobb oldali LAN-ban (212.222.135.0/24) szintén 1 Switch (Switch1) és 2 webszerver található: Server2 (VIDOR.COM) és server1 (TUDOR.COM). A két alhálózatot egy Cisco ISR4331 router (Router0) köti össze.
A bal oldali PC-k (PC0: ricsi@gmail.com, PC2: tomi@gmail.com) DHCP-n keresztül kapják az IP-címüket a Server0-tól. A DNS szerver gondoskodik arról, hogy a kliensek domain név alapján érhessék el a jobb oldali szervereket. A router statikus útvonalakkal irányítja a forgalmat a két alhálózat között.
A hálózat két különböző alhálózatot köt össze routeren keresztül. A bal oldal privát (192.168.1.0/24), a jobb oldal nyilvános IP-tartomány (212.222.135.0/24). A Router0 mindkét interfészén más IP-cím és alhálózat van konfigurálva.
| Eszköz | IP-cím | Alhálózat | Mód | Szerepkör |
|---|---|---|---|---|
| Router0 Fa0/0 | 192.168.1.1 | 192.168.1.0/24 | Statikus | Bal LAN gateway |
| Router0 Fa0/1 | 212.222.135.1 | 212.222.135.0/24 | Statikus | Jobb LAN gateway |
| Server0 | 192.168.1.100 | 192.168.1.0/24 | Statikus | DHCP + DNS szerver |
| PC0 (ricsi) | 192.168.1.3 | 192.168.1.0/24 | DHCP | Kliens — auto kiosztás |
| PC1 | 192.168.1.2 | 192.168.1.0/24 | DHCP | Kliens — auto kiosztás |
| PC2 (tomi) | 192.168.1.1 | 192.168.1.0/24 | DHCP | Kliens — auto kiosztás |
| Switch0 | — | 192.168.1.0/24 | Layer 2 | Cisco 2960-24TT (bal) |
| Switch1 | — | 212.222.135.0/24 | Layer 2 | Cisco 2960-24TT (jobb) |
| Server2 | 212.222.135.2 | 212.222.135.0/24 | Statikus | HTTP — VIDOR.COM |
| server1 | 212.222.135.4 | 212.222.135.0/24 | Statikus | HTTP — TUDOR.COM |
A hálózati kapcsolat első tesztje a bal LAN-on belüli ping volt: PC0 → PC1, mind a 4 csomag megérkezett, 0% csomagvesztéssel. Ez igazolja, hogy a DHCP helyes IP-ket osztott ki és a Switch0 megfelelően továbbítja a kereteket.
A kritikus teszt a routeren átmenő ping volt: PC0 (192.168.1.3) → server1 (212.222.135.4). A Router0 sikeresen irányította a csomagokat a két alhálózat között. Végül PC2 böngészőjéből megnyitottuk a http://VIDOR.COM és http://TUDOR.COM oldalakat — a DNS szerver feloldotta a neveket, a webszerverek visszaadták az oldalakat.
A TTL=127 érték jelzi, hogy a csomag átment egy routeren (128−1=127). Ez megerősíti, hogy a Router0 sikeresen irányítja a forgalmat a 192.168.1.0/24 és a 212.222.135.0/24 alhálózatok között.
↓ A hálózat felépítésének és konfigurálásának folyamata képekben
Első lépésként a logikai topológiát alakítottam ki a munkaterületen. Elhelyeztem három kliens számítógépet (PC0, PC1, PC2), egy központi Cisco 2960-24TT switchet és a hálózat „agyát” jelentő szervert (Server-PT). Az eszközöket megfelelő UTP kábelekkel, a megfelelő FastEthernet portokon keresztül csatlakoztattam a switchhez, létrehozva a fizikai (Layer 1/2) kapcsolatot.
Ahhoz, hogy a szerver stabil szolgáltatásokat nyújthasson (mint a DHCP vagy a DNS), elengedhetetlen egy fix, statikus IP-cím. A szerver hálózati kártyáján a 192.168.1.100-as IP-címet állítottam be, /24-es alhálózati maszkkal (255.255.255.0) és megadtam az alapértelmezett átjárót (192.168.1.0).
A „Services” fülön aktiváltam a DHCP szolgáltatást. Létrehoztam egy serverPool nevű tartományt, amely automatikusan osztja ki az IP-címeket a hálózatra csatlakozó gépeknek. Beállítottam, hogy a kiosztás a 192.168.1.0-tól kezdődjön, maximum 10 felhasználó számára, és ami a legfontosabb: megadtam a szerver saját címét (192.168.1.100) mint DNS szerver.
Senki sem szeret IP-címeket megjegyezni, ezért a DNS szolgáltatást is bekapcsoltam. Létrehoztam egy új „A Record” típusú bejegyzést: a www.bem.info domain nevet hozzárendeltem a szerver 192.168.1.100-as IP-címéhez. Így a kliensek emberi nyelven, URL alapján is elérhetik a szervert.
A szerveren futó HTTP/HTTPS szolgáltatás aktív maradt. Hogy egyértelmű legyen a sikeres csatlakozás, a szerver alapértelmezett index.html fájlját átszerkesztettem, és elhelyeztem benne a „BEM INFO” egyedi üdvözlő szöveget. Ez fog megjelenni, ha a kliensek fellépnek az oldalra.
Miután a szerver készen állt, a PC-k hálózati beállításait „Static”-ról „DHCP”-re váltottam. A képen látható, hogy a folyamat sikeres volt: a számítógépek automatikusan, hibátlanul megkapták az IP-címet, az alhálózati maszkot és a DNS szerver címét a központi szervertől.
A projekt legfontosabb része a verifikáció. Először a parancssorból (CLI) indított Ping paranccsal ellenőriztem, hogy az eszközök látják-e egymást a hálózaton (0% csomagvesztés). Végül az egyik kliens gép böngészőjéből megnyitottam a www.bem.info címet. A DNS szerver azonnal lefordította a nevet IP-címre, a webszerver pedig sikeresen kiszolgálta az általam szerkesztett HTML weboldalt.
CNC esztergagép kontúr programozása abszolút koordináta-rendszerben. A munkadarab profilja P0–P5 pontokkal definiált, ívos és kúpos átmenetekkel, G02/G03 körinterpolációval.
↓ Forgasd az egérrel · Görgesd a zoomhoz · Kattints a pontokra az adatokért · Animáció gombbal szimuláld a szerszámutat
A munkadarab egy forgásos szimmetriájú esztergált alkatrész, amelynek profilját 6 kontúrpont (P0–P5) határozza meg. A darab fő méretei: teljes hossz L = 52 mm, kis hengeres rész átmérője d = 14 mm, nagy hengeres rész átmérője D = 36 mm.
A kontúr jellemzői: P1→P2 között 2×45°-os letörés (a = 2 mm), P2→P3 között egyenes kúpos átmenet, P3→P4 között ívos lekerekítés (R = 3 mm), P4→P5 között vállra merőleges egyenes.
Az esztergálás abszolút koordinátarendszerben (G90) történik. A programnulla pont a munkadarab jobb végén (P0) van. A Z-tengely a gép tengelyirányában negatív irányba mutat, az X-tengely (ØX) a sugár kétszerese.
A kontúrpontok abszolút koordinátái a CNC programnullától mérve. Az ØX értékek az átmérőt jelölik (a gép a sugárból számol), a Z értékek a hosszirányú pozíciót mutatják, negatív irányba haladva.
| Pont | ØX (mm) | Z (mm) | Leírás |
|---|---|---|---|
| P0 | 0 | 0 | Programnulla – tengelyközép, jobb vég |
| P1 | 10 | 0 | Letörés kezdete (ØX=10, Z=0) |
| P2 | 14 | −2 | Letörés vége / kúp kezdete (a=2, 45°) |
| P3 | 14 | −11 | Kis henger vége / lekerekítés kezdete |
| P4 | 20 | −14 | Lekerekítés vége (R=3) / váll |
| P5 | 36 | −14 | Nagy henger – befogási felület |
A P3→P4 ívátmenetnél a középpont koordinátái: X=20, Z=−11, sugár R=3 mm. Az ív iránya G02 (óramutató járásával megegyező), mivel a külső kontúron a sugár a darab belseje felé mutat.
Az alábbi program a kontúr egymenetes leesztergálását tartalmazza. A valódi gyártásnál előgyalulási ciklusok (G71/G73) előznék meg, itt a kontúrprogramot mutatjuk be tisztán.
A G02 utasítás körinterpolációt hajt végre óramutató járása szerint. Az R3 paraméter a sugarat adja meg. Alternatívan I/K középpontkoordinátákkal is megadható: G02 X20 Z-14 I6 K0 (ahol I=20-14=6, K=-11-(-11)=0).
DHT11 szenzor → Arduino Uno (I2C Slave, 0x08) → Logic Level Shifter → Raspberry Pi Zero W (I2C Master) → ThingSpeak felhő. Valós idejű hőmérséklet és páratartalom mérés, 20 másodpercenként Wi-Fi-n feltöltve.
A DHT11 digitális szenzor az Arduino D2 lábára csatlakozik és 2 másodpercenként mér. Az Arduino Uno I2C Slave módban (cím: 0x08) vár a Pi lekéréseire. A Logic Level Shifter az 5V-os Arduino jeleket 3.3V-ra konvertálja a Pi számára — kötelező biztonsági elem. A Raspberry Pi Zero W I2C Master-ként 20 másodpercenként lekéri az adatot, majd Wi-Fi-n HTTP kéréssel feltölti a ThingSpeak platformra.
Miért kötelező a Logic Level Shifter? Az Arduino 5V-os logikai szinteket használ, a Raspberry Pi GPIO lábai viszont csak 3.3V-ot bírnak el. Szinteltoló nélkül a Pi processzora maradandó károsodást szenvedne.
Miért fontos a közös GND? Az I2C referenciafeszültség alapján értelmezi a jeleket. Ha az Arduino és Pi GND-je nincs összekötve, a kommunikáció teljesen megbízhatatlanná válik.
| Arduino oldal | Shifter | Raspberry Pi | Funkció |
|---|---|---|---|
| A4 (SDA) | HV1 → LV1 | Pin 3 (GPIO2) | I2C adatvonal |
| A5 (SCL) | HV2 → LV2 | Pin 5 (GPIO3) | I2C órajel |
| 5V | HV tápfeszültség | — | Magas feszültség oldal |
| — | LV tápfeszültség | Pin 1 (3.3V) | Alacsony feszültség oldal |
| GND | GND | Pin 6 / Pin 9 | Közös földelés – kötelező! |
| D2 | — | — | DHT11 DATA bemenet |
↓ Interaktív adatfolyam — kattints az elemekre · Animáció gombbal
Az Arduino Wire.onRequest() callbacket regisztrál — amikor a Pi I2C-n adatot kér, automatikusan lefut a requestEvent() függvény, és 2 bájtot küld vissza: a hőmérsékletet és a páratartalmat egész számként.
I2C-n olvassa az Arduino adatát, majd HTTP GET-tel feltölti ThingSpeak-re. Ha I2C hiba van, nem küld adatot — megvárja, míg a kapcsolat helyreáll.
🔬 Mire való a random.py? Ha az Arduino fizikailag nincs bekötve (pl. csak a Pi-n dolgozol), ez a script szimulált, véletlenszerű hőmérsékletet generál (22.1–23.0°C) és elküldi ThingSpeak-re. Így a Wi-Fi kapcsolat, az API key és a grafikon tesztelhető fizikai hardver nélkül. A kulcskülönbség: I2C hiba esetén is küld adatot — 50% alapértelmezett páratartalommal.
❓ Miért kell Logic Level Shifter?
Az Arduino 5V-os logikai szinteket használ, a Raspberry Pi GPIO lábai viszont csak 3.3V-ot bírnak el. Szinteltoló nélkül a Pi processzora maradandó károsodást szenvedne. Nem elhagyható biztonsági elem.
❓ Mi az I2C protokoll?
Kétvezetékes soros kommunikációs busz: SDA (adatvonal) és SCL (órajelvonal). Egy Master (Pi) több Slave eszközt vezérel egyedi 7 bites cím alapján. Az Arduino itt 0x08 címen hallgat.
❓ Mi a Master/Slave architektúra lényege?
A Master (Pi) vezérli a buszt: ő kezdeményezi az adatkérést, ő generálja az órajelet (SCL). A Slave (Arduino) csak válaszol, nem kezdeményez. Egy buszon több Slave lehet különböző 7 bites címekkel.
❓ Miért kell a közös GND?
Az I2C referenciafeszültség alapján értelmezi a jeleket. Ha az Arduino és Pi GND-je nincs összekötve, a „0V” eltér — a kommunikáció megbízhatatlan lesz.
❓ Miért jó a ThingSpeak?
Ingyenes IoT platform, amely HTTP protokollon fogadja az adatokat, automatikusan tárolja és grafikonon jeleníti meg. Bárhonnan elérhető, MATLAB-bal összekapcsolható az adatelemzéshez.
❓ Mi a különbség a thingspeak_push.py és a random.py között?
A thingspeak_push.py éles script: I2C hiba esetén nem küld adatot. A random.py fejlesztési segédscript: I2C hiba esetén is küld szimulált adatot (22.1–23.0°C random értékkel), hogy a ThingSpeak grafikon hardver nélkül is tesztelhető legyen.
Az F1 24 játék UDP protokollon broadcastolja a verseny telemetria adatait. Egy ESP32 mikrokontroller WiFi-n fogadja ezeket — sebességet, fordulatszámot, fékerőt, köridőt — és valós időben jeleníti meg egy integrált kijelzőn.
Az F1 24 játék beállításaiban engedélyezni kell az UDP Telemetria kimenetet (Beállítások → UDP Telemetria). Meg kell adni a céleszköz IP-jét és a 20777-es portot — ezután a játék automatikusan broadcastolja az adatokat a hálózaton.
Az ESP32 ugyanarra a WiFi hálózatra csatlakozik, mint a játékot futtató PC, és folyamatosan figyeli a 20777-es UDP portot. Minden beérkező csomagot a MacManley/f1-24-udp C++ könyvtár értelmez, majd a parsed adatok megjelennek a kijelzőn.
Az adatfolyam Little Endian kódolású, tömörített struktúrákban érkezik. Az PacketHeader (29 bájt) minden csomag elején azonosítja a típust — a packetId mező mutatja meg, hogy telemetria, körido, mozgásadat stb. érkezett-e.
| Csomag neve | ID | Méret | Tartalom | Frissítés |
|---|---|---|---|---|
| Car Telemetry | 6 | 1352 B | Sebesség, RPM, gáz, fék, DRS, gumihő | 60 Hz |
| Lap Data | 2 | 1285 B | Körido, szektor idők, pozíció, pit állapot | 60 Hz |
| Motion | 0 | 1349 B | Pozíció, sebesség, G-erők, yaw/pitch/roll | 60 Hz |
| Car Status | 7 | 1239 B | ERS, DRS, gumikompaund, üzemanyag | 60 Hz |
| Session | 1 | 753 B | Pálya, időjárás, session típus | 2 Hz |
A könyvtár használata rendkívül egyszerű: inicializálás után a read() metódus automatikusan fogadja és értelmezi a beérkező UDP csomagokat. Az adatok ezután típusos struktúramezőkként érhetők el.
A PacketHeader minden csomag első 29 bájtja. A m_packetId mező azonosítja a típust: 6 = Car Telemetry, 2 = Lap Data, 0 = Motion. A könyvtár ezt automatikusan kezeli és a megfelelő struktúrába tölti az adatot.