13. Osztály – Informatikai Portfolio
Informatikai Portfolio

13. Osztály

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.

Fityó Viktor 13.V 2024/25 tanév Cisco Packet Tracer CNC Esztergálás DHT11 IoT Raspberry Pi
Projekt #01

Hálózatkezelés

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.

DHCP & DNS Szerver

Packet Tracer · www.bem.info

↓ Kattints az eszközökre az adatokért  ·  Húzd a vásznon  ·  Ping / Animáció gombokkal tesztelj

Demo.pkt — Cisco 2960-24TT
Server-PT (192.168.1.100 · Statikus)
Switch1 (Cisco 2960-24TT)
PC0–PC2 (DHCP kliens)

Feladat leírás

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özIP-címMódSzerepkör
Server0192.168.1.100/24StatikusDHCP + DNS + HTTP szerver
PC0192.168.1.1DHCPKliens — auto kiosztás
PC1192.168.1.2DHCPKliens — auto kiosztás
PC2192.168.1.3DHCPKliens — auto kiosztás
Switch1Layer 2Cisco 2960-24TT
Eszközök3× PC-PT
1× Server-PT
1× Switch 2960-24TT
Server konfigIP: 192.168.1.100
Mask: 255.255.255.0
Gateway: 192.168.1.0
DHCP PoolName: serverPool
Start: 192.168.1.0
Max user: 10
DNS: 192.168.1.100
DNS Recordwww.bem.info
→ 192.168.1.100
Type: A Record
HTTP szerverindex.html: „BEM INFO”
HTTP + HTTPS: ON ✓
🖥️ DHCP Konfiguráció (Services → DHCP)
  • Interface: FastEthernet0
  • Pool Name: serverPool
  • Default Gateway: 192.168.1.0
  • DNS Server: 192.168.1.100
  • Start IP Address: 192.168.1.0
  • Subnet Mask: 255.255.255.0
  • Maximum Number of Users: 10
  • Service: ON ✓
🌐 DNS Konfiguráció (Services → DNS)
  • DNS Service: ON ✓
  • Record Type: A Record
  • Name: www.bem.info
  • Address: 192.168.1.100
  • HTTP: ON ✓
  • HTTPS: ON ✓
  • index.html tartalom: „BEM INFO”
  • Böngészőből: http://www.bem.info
🔌
1
Összekötés
PC0–2 + Server → Switch1 megfelelő portokba.
🖥️
2
Server IP
Statikus 192.168.1.100, GW: 192.168.1.0.
📋
3
DHCP Pool
serverPool: start .0, max 10, DNS .100.
🌐
4
DNS Rekord
www.bem.info A Record → 192.168.1.100.
📄
5
HTML fájl
index.html: „BEM INFO” szöveg szerkesztve.
🖱️
6
Hostok
PC-ken Static → DHCP, IP auto-kiosztás.

Hálózat Tesztelés

PING · HTTP · DNS

Ping parancs és böngésző teszt

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

Cisco Packet Tracer PC Command Line 1.0 C:\>ping 192.168.1.2 Pinging 192.168.1.2 with 32 bytes of data: Reply from 192.168.1.2: bytes=32 time<1ms TTL=128 Reply from 192.168.1.2: bytes=32 time<1ms TTL=128 Reply from 192.168.1.2: bytes=32 time<1ms TTL=128 Reply from 192.168.1.2: bytes=32 time<1ms TTL=128 Ping statistics for 192.168.1.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms

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.

Ping tesztPC0 → PC1
4/4 csomag ✓
0% loss, <1ms
DNS tesztwww.bem.info
→ 192.168.1.100
Feloldás: sikeres ✓
HTTP teszthttp://www.bem.info
Tartalom: „BEM INFO”
Status: 200 OK ✓
DHCP tesztPC0: .1 · PC1: .2
PC2: .3 — auto ✓
Mask: 255.255.255.0
Hálózat Projekt #02

Vállalati hálózat szimuláció: DHCP, DNS és Webszerver

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.

Hálózati Szimuláció

Packet Tracer · ISR4331 Router

↓ Kattints az eszközökre az adatokért  ·  Húzd a vásznon  ·  Ping / Animáció gombokkal tesztelj

Vállalati.pkt — ISR4331 Router
Server0 (bal · DHCP/DNS)
Router0 (ISR4331)
Switch0 / Switch1 (2960-24TT)
PC0–PC2 (DHCP kliens)
Server2 (VIDOR.COM) · server1 (TUDOR.COM)

Feladat leírás

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özIP-címAlhálózatMódSzerepkör
Router0 Fa0/0192.168.1.1192.168.1.0/24StatikusBal LAN gateway
Router0 Fa0/1212.222.135.1212.222.135.0/24StatikusJobb LAN gateway
Server0192.168.1.100192.168.1.0/24StatikusDHCP + DNS szerver
PC0 (ricsi)192.168.1.3192.168.1.0/24DHCPKliens — auto kiosztás
PC1192.168.1.2192.168.1.0/24DHCPKliens — auto kiosztás
PC2 (tomi)192.168.1.1192.168.1.0/24DHCPKliens — auto kiosztás
Switch0192.168.1.0/24Layer 2Cisco 2960-24TT (bal)
Switch1212.222.135.0/24Layer 2Cisco 2960-24TT (jobb)
Server2212.222.135.2212.222.135.0/24StatikusHTTP — VIDOR.COM
server1212.222.135.4212.222.135.0/24StatikusHTTP — TUDOR.COM
Bal LAN192.168.1.0/24
Switch0 + Server0
PC0, PC1, PC2
Router0 (ISR4331)Fa0/0: 192.168.1.1
Fa0/1: 212.222.135.1
Statikus útvonalak
Jobb LAN212.222.135.0/24
Switch1
Server2 + server1
DHCP PoolServer0 kiosztja
Start: 192.168.1.0
GW: 192.168.1.1
DNS: 192.168.1.100
DNS rekordokVIDOR.COM → .135.2
TUDOR.COM → .135.4
Type: A Record
🖥️ Server0 – DHCP Konfiguráció
  • Interface: FastEthernet0
  • Pool Name: serverPool
  • Default Gateway: 192.168.1.1
  • DNS Server: 192.168.1.100
  • Start IP Address: 192.168.1.0
  • Subnet Mask: 255.255.255.0
  • Maximum Number of Users: 10
  • Service: ON ✓
🌐 Server0 – DNS Konfiguráció
  • DNS Service: ON ✓
  • A Record: VIDOR.COM → 212.222.135.2
  • A Record: TUDOR.COM → 212.222.135.4
  • Server0 IP: 192.168.1.100
  • Gateway: 192.168.1.1
  • HTTP (Server2): ON ✓
  • HTTP (server1): ON ✓
  • Böngészőből: http://VIDOR.COM
⬡ Router0 – Interfész konfiguráció
  • Típus: Cisco ISR4331
  • Fa0/0 IP: 192.168.1.1 /24
  • Fa0/0 irány: Bal LAN (Switch0)
  • Fa0/1 IP: 212.222.135.1 /24
  • Fa0/1 irány: Jobb LAN (Switch1)
  • Routing: Statikus útvonalak
  • No shutdown: ✓ mindkét IF
🖥️ Jobb oldali szerverek
  • Server2 IP: 212.222.135.2 /24
  • Server2 GW: 212.222.135.1
  • Server2 domain: VIDOR.COM
  • server1 IP: 212.222.135.4 /24
  • server1 GW: 212.222.135.1
  • server1 domain: TUDOR.COM
  • HTTP mind: ON ✓
🔌
1
Kábelezés
PC-k + Server0 → Switch0, Switch0 → Router0, Router0 → Switch1, Switch1 → szerverek.
2
Router IP
Fa0/0: 192.168.1.1, Fa0/1: 212.222.135.1 – no shutdown mindkettő.
🖥️
3
Server0 IP
Statikus: 192.168.1.100, GW: 192.168.1.1, DNS: saját maga.
📋
4
DHCP Pool
serverPool: start .0, max 10, GW: .1, DNS: .100.
🌐
5
DNS Rekordok
VIDOR.COM → 212.222.135.2, TUDOR.COM → 212.222.135.4.
🟢
6
Jobb szerverek
Server2 + server1: statikus IP, GW: 212.222.135.1, HTTP ON.
🖱️
7
PC-k DHCP
PC0–PC2: Static → DHCP, auto IP-kiosztás Server0-tól.
8
Teszt
Ping + böngésző: VIDOR.COM és TUDOR.COM elérése kliensről.

Hálózat Tesztelés

PING · HTTP · DNS · Router

Ping és böngésző teszt — két alhálózat között

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.

Cisco Packet Tracer PC Command Line 1.0 C:\>ping 212.222.135.4 Pinging 212.222.135.4 with 32 bytes of data: Reply from 212.222.135.4: bytes=32 time=1ms TTL=127 Reply from 212.222.135.4: bytes=32 time=1ms TTL=127 Reply from 212.222.135.4: bytes=32 time=1ms TTL=127 Reply from 212.222.135.4: bytes=32 time=1ms TTL=127 Ping statistics for 212.222.135.4: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 1ms, Average = 1ms

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.

LAN pingPC0 → PC1
4/4 csomag ✓
0% loss, <1ms
Router pingPC0 → server1
4/4 csomag ✓
TTL=127 (1 hop)
DNS tesztVIDOR.COM → .135.2 ✓
TUDOR.COM → .135.4 ✓
Feloldás sikeres
HTTP teszthttp://VIDOR.COM ✓
http://TUDOR.COM ✓
Status: 200 OK
DHCP tesztPC0: .1 · PC1: .2
PC2: .3 — auto ✓
GW: 192.168.1.1

A projekt megvalósítása lépésről lépésre

Portfólió · Képgaléria

↓ A hálózat felépítésének és konfigurálásának folyamata képekben

Hálózat topológia Eszközök összekötése

1. A hálózati topológia felépítése és kábelezés

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.

2. A szerver alapozása (Statikus IP)

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

Szerver IP konfiguráció
DHCP Szolgáltatás DHCP Pool

3. DHCP szerver konfigurálása

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.

4. DNS névfeloldás beállítása

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.

DNS bekapcsolás DNS Rekord
HTTP webszerver

5. A belső weboldal (HTTP) létrehozása

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.

6. Kliensek csatlakozása (DHCP teszt)

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.

DHCP kliens lekérés
Ping Teszt Böngésző Teszt

7. Rendszerteszt: Ping és Webböngésző

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.

Projekt #02

CAD/CAM – CNC Kontúr Programozás

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.

Interaktív 3D Néző

CNC Kontúr · Esztergálás · WebGL Canvas

↓ Forgasd az egérrel  ·  Görgesd a zoomhoz  ·  Kattints a pontokra az adatokért  ·  Animáció gombbal szimuláld a szerszámutat

D=36 · d=14 · L=52 · l=14
Anyag: Acél (Ø36mm)
Teljes hossz: L = 52 mm
Kis átmérő: d = 14 mm
Nagy átmérő: D = 36 mm
Lekerekítés: R = 3 mm
Letörés: a = 2 mm × 45°

Munkadarab leírása

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.

Nyers anyagØ36 mm hengeres acélrúd
KoordinátarendszerAbszolút (G90)
Programnulla: P0 (jobb vég)
TengelyekØX = átmérő × 2
Z = hosszirány (negatív)
ÁtmenetekLetörés: a=2, 45°
Lekerekítés: R=3 mm
Kúp: P2→P3
InterpolációG01 egyenes
G02/G03 körív

Kontúrpontok

P0–P5 · Abszolút koordináták

Koordináta táblázat

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
P000Programnulla – tengelyközép, jobb vég
P1100Letörés kezdete (ØX=10, Z=0)
P214−2Letörés vége / kúp kezdete (a=2, 45°)
P314−11Kis henger vége / lekerekítés kezdete
P420−14Lekerekítés vége (R=3) / váll
P536−14Nagy 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.

P1 → P2Letörés 45°
a = 2 mm
G01 egyenes
P2 → P3Kis henger Ø14
l = 9 mm hossz
G01 egyenes
P3 → P4Lekerekítés R=3
G02 körív CW
Közép: (20, −11)
P4 → P5Váll (Z=−14)
G01 egyenes
Nagy Ø36

CNC Program

G-kód · Abszolút · Esztergálás

Kontúr G-kód program

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.

% O0001 (CNC KONTUR PROGRAM) (DATUM: JOBB VEGPONT – P0) (D=36 d=14 L=52 l=14 R=3 a=2) N10 G21 G18 G40 (MM, ZX SIK, KOMPENZACIO KI) N20 G90 G95 (ABSZOLUT, MM/FORD) N30 T0101 M06 (SZERSZAM 1 – KULSO KES) N40 G96 S180 M03 (ALLANDO VAGOSEBESSEG 180m/min) N50 G00 X40 Z5 (BIZTONSAGI PONT) (—- KONTUR MEGMUNKALAS —–) N60 G00 X0 Z2 (MEGKOZELITES) N70 G01 Z0 F0.2 (TENGELYHEZ) N80 G01 X10 Z0 (P0 -> P1 HOMLOKLAP) N90 G01 X14 Z-2 (P1 -> P2 LETORES 45 FOK a=2) N100 G01 Z-11 (P2 -> P3 KIS HENGER d=14, l=9) N110 G02 X20 Z-14 R3 (P3 -> P4 LEKEREKITES R=3, G02 CW) N120 G01 X36 (P4 -> P5 VALL) N130 G01 Z-52 (P5 NAGY HENGER VEGIG L=52) (—- VISSZAVONAS —–) N140 G00 X42 Z5 (SZERSZAM VISSZAVON) N150 M05 (FORGATAS STOP) N160 M30 (PROGRAM VEGE) %

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

G90Abszolút mód
P0-tól mért koordináták
G96 S180Állandó vágósebesség
180 m/min
G01 F0.2Lineáris interpoláció
0.2 mm/ford előtolás
G02 R3Körinterp. CW iránya
Lekerekítés R=3 mm
T0101Szerszám #1
Külső esztergakés
⚙️ G-kód parancsok magyarázata
  • G00 — Gyorsmenet (pozicionálás)
  • G01 — Lineáris interpoláció (egyenes)
  • G02 — Körinterpoláció CW (óramutató)
  • G03 — Körinterpoláció CCW (ellentétes)
  • G90 — Abszolút koordinátarendszer
  • G96 — Állandó vágósebesség (CSS)
  • M03 — Orsó indítás (CW)
  • M30 — Program vége, visszatérés
📐 Technológiai adatok
  • Anyag: C45 szerkezeti acél
  • Vágósebesség: vc = 180 m/min
  • Előtolás: f = 0.2 mm/ford
  • Fogásmélység: ap = 1–2 mm
  • Szerszám: PCLNR külső kés
  • Lapka: CNMG 120408
  • Hűtés: Emulzió 6%
  • Befogás: 3 pofás tokmány
📏
1
Nullpont
P0 beállítása: jobb véglapra, tengelyre.
🔢
2
Pontok
P0–P5 koordináták kiszámítása rajzból.
⌨️
3
Program
G-kód megírása, G01/G02 megadása.
🖥️
4
Szimuláció
Grafikus ellenőrzés ütközésvizsgálattal.
⚙️
5
Beállítás
Gépre töltés, szerszámbemérés.
6
Ellenőrzés
Mérés tolómérővel, kontúr hitelesítés.
IoT Projekt

Okos Meteorológiai Állomás – DHT11

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.

Hardver Bekötés

DHT11 · Arduino · Logic Level Shifter · RPi Zero W

Rendszer felépítése

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 oldalShifterRaspberry PiFunkció
A4 (SDA)HV1 → LV1Pin 3 (GPIO2)I2C adatvonal
A5 (SCL)HV2 → LV2Pin 5 (GPIO3)I2C órajel
5VHV tápfeszültségMagas feszültség oldal
LV tápfeszültségPin 1 (3.3V)Alacsony feszültség oldal
GNDGNDPin 6 / Pin 9Közös földelés – kötelező!
D2DHT11 DATA bemenet
DHT11DATA → Arduino D2
VCC → 5V
GND → GND
Arduino I2CSlave cím: 0x08
A4 = SDA · A5 = SCL
Logika: 5V
Level ShifterHV1↔LV1 = SDA
HV2↔LV2 = SCL
HV=5V / LV=3.3V
RPi Zero WI2C Master
Pin 3 = SDA · Pin 5 = SCL
Logika: 3.3V
ThingSpeakHTTP GET / 20mp
Field1: hőmérséklet
Field2: páratartalom
📷 RPi Zero W GPIO – Bekötési ábra
RPi Zero W GPIO bekötési ábra

↓ Interaktív adatfolyam — kattints az elemekre · Animáció gombbal

DHT11→Ard→Shifter→RPi→Cloud
DHT11
Arduino
Shifter
RPi
ThingSpeak
🔌 I2C Bekötés (Logic Level Shifter)
  • Arduino A4 (SDA) → HV1 | LV1 → Pi Pin 3
  • Arduino A5 (SCL) → HV2 | LV2 → Pi Pin 5
  • Arduino 5V → HV tápfeszültség
  • RPi 3.3V (Pin 1) → LV tápfeszültség
  • Közös GND kötelező mindhárom eszközön!
  • DHT11 DATA → Arduino D2
  • I2C cím: 0x08
☁️ ThingSpeak konfiguráció
  • Platform: ThingSpeak (MathWorks)
  • Protokoll: HTTP GET
  • API Endpoint: api.thingspeak.com/update
  • Field1: Hőmérséklet (°C)
  • Field2: Páratartalom (%)
  • Frissítés: 20 másodperc
  • Min. intervallum (ingyenes): 15 mp
  • Megjelenítés: automatikus grafikon ✓

Szoftver – Kódok

Arduino C++ · Python · smbus2 · requests · random

1. Arduino kód – vizsgaarduino.ino

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.

#include <Wire.h> #include <DHT.h> #define DHTPIN 2 // DHT11 DATA lába → D2 #define DHTTYPE DHT11 #define SLAVE_ADDR 0x08 // I2C cím (fixált a kódban) DHT dht(DHTPIN, DHTTYPE); float t, h; void setup() { dht.begin(); Wire.begin(SLAVE_ADDR); // I2C Slave indítás Wire.onRequest(requestEvent); // Pi kérésre hívódik } void loop() { t = dht.readTemperature(); // Hőmérséklet (°C) h = dht.readHumidity(); // Páratartalom (%) delay(2000); // DHT11 min. 2mp kell olvasások közt } // Ez fut le, ha a Pi adatot kér az I2C buszon void requestEvent() { byte data[2]; data[0] = (byte)t; // 1. bájt: hőmérséklet data[1] = (byte)h; // 2. bájt: páratartalom Wire.write(data, 2); }

2. Python kód – thingspeak_push.py (éles script)

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.

import smbus2 import time import requests I2C_ADDR = 0x08 API_KEY = „QNC42K1EEN75OMFG” URL = „https://api.thingspeak.com/update” bus = smbus2.SMBus(1) # I2C busz 1 (RPi) def get_arduino_data(): try: # 2 bájtot kér: data[0]=temp, data[1]=hum data = bus.read_i2c_block_data(I2C_ADDR, 0, 2) return data[0], data[1] except Exception as e: print(f”I2C hiba: {e}”) return None, None # Hiba esetén None! print(„Adatküldés indítása… (Ctrl+C-vel leállítható)”) while True: temp, hum = get_arduino_data() if temp is not None: # Csak érvényes adatnál küld params = { ‘api_key’: API_KEY, ‘field1’: temp, # Hőmérséklet ‘field2’: hum # Páratartalom } try: r = requests.get(URL, params=params) if r.status_code == 200: print(f”Siker! Temp: {temp}°C, Hum: {hum}%”) else: print(f”HTTP hiba: {r.status_code}”) except Exception as e: print(f”Hálózati hiba: {e}”) time.sleep(20) # ThingSpeak ingyenes: min. 15mp!

3. Python kód – random.py (tesztelési segédscript)

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

import smbus2 import time import requests import random # ← Ez csak ebben a scriptben van! I2C_ADDR = 0x08 API_KEY = „QNC42K1EEN75OMFG” URL = „https://api.thingspeak.com/update” bus = smbus2.SMBus(1) def get_arduino_data(): try: data = bus.read_i2c_block_data(I2C_ADDR, 0, 2) # ← ITT a különbség: valódi értéket FELÜLÍRJUK! temp = round(random.uniform(22.1, 23.0), 1) hum = data[1] # Páratartalom marad eredeti return temp, hum except Exception as e: print(f”I2C hiba (de generálok adatot): {e}”) # Ha Arduino sincs bekötve: mindkettőt generálja temp = round(random.uniform(22.1, 23.0), 1) return temp, 50 # 50% default páratartalom while True: temp, hum = get_arduino_data() if temp is not None: params = {‘api_key’: API_KEY, ‘field1’: temp, ‘field2’: hum} try: r = requests.get(URL, params=params) if r.status_code == 200: print(f”Siker! (Random) Temp: {temp}°C, Hum: {hum}%”) except Exception as e: print(f”Hálózati hiba: {e}”) time.sleep(20)
Arduino lib-ekWire.h – I2C
DHT.h – szenzor
Slave addr: 0x08
I2C adat2 bájt küldése
data[0] = temp
data[1] = hum
Python lib-eksmbus2 – I2C
requests – HTTP
random – csak teszt!
thingspeak_pushÉles script
I2C hiba → NEM küld
20mp ciklus
random.pyTeszt script
I2C hiba → KÜLD!
22.1–23.0°C szimul.

Linux Parancsok – Cheat Sheet

Raspberry Pi · I2C · Python venv · Crontab · SSH

Összes fontos parancs

i2cdetect -y 1 # Ha látsz „08”-at → Arduino kapcsolódva ✓ # Ha üres → kábelhiba, GND hiány, I2C nincs engedélyezve!
cd ~ # Felhasználói mappa source dht_projekt/bin/activate # venv BEKAPCSOLÁS # Prompt elején megjelenik: (dht_projekt) python3 thingspeak_push.py # Éles script python3 random.py # Teszt script deactivate # venv KIKAPCSOLÁS
ps aux | grep thingspeak_push.py # PID szám a 2. oszlopban kill [PID_szám] # Pl: kill 1234
crontab -e # Add hozzá ezt a sort: @reboot sleep 15 && source ~/dht_projekt/bin/activate && python3 ~/thingspeak_push.py >> ~/log.txt 2>&1 # sleep 15 → megvárja míg a Pi teljesen elindul # >> log.txt → kimenet naplózása
cat ~/log.txt # Hibák / státuszok cat /home/matyi/log.txt # Alternatív log útvonal hostname -I # Pi IP-cím (SSH-hoz!) sudo shutdown -h now # Biztonságos leállítás # FONTOS: ne csak kihúzd! SD kártya sérülhet.

Vizsga Kérdések & Válaszok

I2C · Master/Slave · Szinteltoló · IoT · GND

Várható kérdések kidolgozott válaszokkal

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

KulcsszavakI2C Master/Slave
Logic Level Shifter
IoT felhő / HTTP
I2C címArduino: 0x08
7 bites cím
Fixálva a kódban
Adatcsomag2 bájt: [temp, hum]
Egész számként
onRequest() küld
FeszültségekArduino: 5V
RPi GPIO: max 3.3V
Shifter: kötelező!
random.py céljaTeszt / fejlesztés
Hardver nélkül fut
22.1–23.0°C szimul.
IoT Projekt #02

F1 24 Valós Idejű Telemetria Kijelző

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.

Rendszer felépítése

ESP32 · WiFi · UDP · C++ · f1-24-udp lib
F1 UDP kijelző animáció
F1 UDP kijelző közelkép
F1 UDP ESP32 bekötés

Hogyan működik?

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 neveIDMéretTartalomFrissítés
Car Telemetry61352 BSebesség, RPM, gáz, fék, DRS, gumihő60 Hz
Lap Data21285 BKörido, szektor idők, pozíció, pit állapot60 Hz
Motion01349 BPozíció, sebesség, G-erők, yaw/pitch/roll60 Hz
Car Status71239 BERS, DRS, gumikompaund, üzemanyag60 Hz
Session1753 BPálya, időjárás, session típus2 Hz
VezérlőESP32
240 MHz Dual-Core
WiFi + Bluetooth
ProtokollUDP / WiFi
Port: 20777
Broadcast mód
KönyvtárMacManley/f1-24-udp
C++ · Arduino
MIT License · 9★
AdatformatLittle Endian
Packed struktúrák
15 csomagtípus
Kijelzett adatokSebesség · RPM
Gáz / Fék · Fogaskerék
Körido · Pozíció

Kód & Bekötés

Arduino C++ · UDP Socket · PacketHeader

Arduino kód – alapstruktúra

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.

#include „F1_24_UDP.h” F1_24_Parser* parser; void setup() { Serial.begin(115200); parser = new F1_24_Parser(); parser->begin(); // WiFi init + UDP socket megnyitás } void loop() { parser->read(); // UDP csomag fogadás + parse // Car Telemetry adatok (PacketId: 6) uint16_t speed = parser->telemetry.m_speed; // km/h float throttle = parser->telemetry.m_throttle; // 0.0–1.0 float brake = parser->telemetry.m_brake; // 0.0–1.0 int8_t gear = parser->telemetry.m_gear; // 1-8, N=0 uint16_t rpm = parser->telemetry.m_engineRPM; uint8_t drs = parser->telemetry.m_drs; // 0=ki 1=be // Kijelzőre írás… display.setCursor(0, 0); display.print(speed); display.print(” km/h”); }

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.

🎮 F1 24 – UDP beállítás
  • Főmenü → Beállítások
  • Telemetria → UDP Telemetria: BE
  • IP cím: ESP32 IP-je
  • Port: 20777
  • Broadcast mód: BE (opcionális)
  • Küldési ráta: 60 Hz
  • Formátum: 2024
⚡ Car Telemetry – főbb mezők
  • m_speed — uint16, km/h
  • m_throttle — float, 0.0–1.0
  • m_brake — float, 0.0–1.0
  • m_gear — int8, 1-8 / N=0 / R=-1
  • m_engineRPM — uint16
  • m_drs — uint8, 0=ki / 1=be
  • m_brakesTemperature[4] — °C
  • m_tyresPressure[4] — PSI
📶
1
WiFi
ESP32 csatlakozik a PC-vel azonos hálózatra.
🎮
2
Játék
F1 24-ben UDP bekapcsolás, port 20777.
📡
3
Fogadás
ESP32 a 20777-es portot figyeli UDP socketen.
⚙️
4
Parse
Könyvtár azonosítja a csomagtípust, kibontja a struktúrát.
🖥️
5
Kijelző
Sebesség, RPM, fogaskerék, körido megjelenik.
6
Valós idő
60 Hz-es frissítés, késleltetés minimális.
PacketHeader29 bájt
m_packetId → típus
m_sessionUID
Kerék sorrend0 = Hátsó bal (RL)
1 = Hátsó jobb (RR)
2 = Első bal (FL)
3 = Első jobb (FR)
G-erőkgForceLateral
gForceLongitudinal
gForceVertical
KompatibilitásF1 24 (2024 fmt)
Visszafelé: F1 23
és F1 22 is támogatott