Egy teljesen egyedi hardver-szoftver ökoszisztéma,
amely valós idejű szenzoradatokat, hangvizualizációt és több mint
20 látványeffektet kezel egy elegáns webes felületről.
🖥 Raspberry Pi⚙️ Arduino Mega 2560💡 NeoPixel LED🌡 Hőmérséklet szenzor🎵 Hangvizualizáció
Python Flask
Serial UART
WS2812B
I2C LCD
💡
20+
Egyedi LED effekt
5
Csatlakoztatott szenzor
3D
Nyomtatott ház CraftBottal
Rendszer architektúra
Hogyan működik együtt?
A Pi és az Arduino folyamatos soros kommunikációban (UART) dolgozik együtt. A Pi adja a parancsokat, az Arduino hajtja végre őket a valós hardveren.
🖥
Raspberry Pi
Python · Flask webszerver
USB · UART · 9600 baud
⚙️
Arduino Mega
Hardver · Szenzorok kezelése
📡 Szenzorok · Bemenetek
🌡
NTC Termisztor A0 pin
🎤
Mikrofon A1 pin
☀️
LDR Fény A2 pin
💡 Kimenetek · Látvány & Hang
💡
NeoPixel D6 pin
📟
I2C LCD 0x27
🔔
Buzzer D8 pin
Effekt katalógus
20+ egyedi vizuális effekt
Minden effekt egyedi animációval és hanghatással rendelkezik. Vidd rá az egeret egy effektre az előnézethez!
🧘
ZEN
V23 Exkluzív
⚡
VIHAR
V23 Exkluzív
🚨
RIASZTÓ
V23 Exkluzív
🤖
ROBOT
V23 Exkluzív
📊
VU METER
Audio FX
💓
PULSE
Audio FX
🎯
CENTER
Audio FX
🪩
DISCO
Audio FX
🟩
MATRIX
Retro Game
❄️
HÓ
Retro Game
🧱
TETRIS
Retro Game
👾
PAC-MAN
Retro Game
🏓
BOUNCE
Retro Game
🎰
CASINO
Retro Game
☄️
METEOR
Retro Game
⚛️
REACTOR
Sci-Fi
☢️
NUKE
Sci-Fi
📡
SCANNER
Sci-Fi
🔴
RADAR
Sci-Fi
🚔
POLICE
Party
🔥
TŰZ
Party
💥
STROBE
Party
🎉
PARTY
Party
Webes felület
Flask vezérlőpult
Így néz ki a valódi vezérlőfelület böngészőből. Az alábbi egy interaktív mockup – a gombok animáltak, a szenzor adatok élnek.
http://raspberrypi.local:5000/
↻
⬡ NEXUS CONTROL v2.3
HŐMÉRSÉKLET
23.4°C
NTC · A0 · Live
RENDSZER ÁLLAPOT
CPU38%
RAM61%
DISK24%
LCD ÜZENET
LED GYŰRŰ ELŐNÉZET
— OFF —
ESEMÉNYNAPLÓ
[ — ] Rendszer elindítva
[ — ] Arduino kapcsolódva · /dev/serial0
[ — ] Flask szerver aktív · port 5000
V23 EXKLUZÍV
AUDIO FX
RETRO GAME
SCI-FI & PARTY
ALAP
Rendszer működés
Hogyan utazik egy parancs?
Válassz egy effektet, és nézd meg élőben ahogy a parancs végighalad a rendszeren – böngészőtől az LED gyűrűig.
Válassz effektet:
🌐
Böngésző
HTTP GET kérés
/set/RAINBOW
🌶
Flask szerver
Python · Raspberry Pi
ser.write(b”RAINBOW
„)
⚙️
Arduino Mega
Serial1 · 9600 baud
effectRainbow();
NeoPixel Gyűrű
16× WS2812B · D6
strip.show();
Válassz effektet a szimulációhoz ↑
Forráskód
Kódrészletek
A rendszer kulcsfontosságú kódblokkjai – Python Flask szerver és Arduino firmware.
# Flask route: effekt beállítása@app.route("/set/<mode>")defset_mode(mode):global current_mode
current_mode = mode
# Parancs küldése az Arduinonak soros portonif ser and ser.is_open:
ser.write((mode +"
").encode("utf-8"))# Eredmény visszaadása JSON-banreturnjsonify({"status":"ok","mode": mode
})
Python · app.pySerial port inicializálás és kapcsolat felépítése
import serial
import threading
# Soros port megnyitása – Arduino Serial1definit_serial():global ser
try:
ser = serial.Serial(
port="/dev/serial0",
baudrate=9600,
timeout=1)print("Arduino kapcsolódva ✓")except Exception as e:print(f"Hiba: {e}")
ser =None# Külön szálon fut – nem blokkolja a Flask-et
t = threading.Thread(target=init_serial)
t.start()
C++ · nexus.inoSCANNER effekt – pásztázó fény a gyűrűn
// SCANNER effekt – egy fénypont fut körbevoideffectScanner() {static int pos =0;
strip.clear();// Főpixel – teljes fényerő
strip.setPixelColor(pos,
strip.Color(0,200,255));// Előző pixel – halvány utóvilágításint prev =(pos -1+ NUM_LEDS)% NUM_LEDS;
strip.setPixelColor(prev,
strip.Color(0,40,60));
strip.show();
pos =(pos +1)% NUM_LEDS;delay(40);}
C++ · nexus.inoNTC termisztor leolvasás – Steinhart–Hart egyenlet
A rendszer szíve egy Python Flask szerver, amely bármilyen böngészőből elérhető, mobilon is.
🐍
Python 3
Fő programozási nyelv
🌶
Flask
Webes REST API szerver
🔌
PySerial
UART kommunikáció
📊
psutil
Rendszer monitoring
🧵
Threading
Párhuzamos folyamatok
📐
OpenSCAD
3D ház tervezés
🌐
Webes vezérlőpult
A Flask szerver bármely eszközről elérhető a helyi hálózaton – okostelefon, tablet, laptop. Böngésző elegendő, nincs szükség app telepítésre. A felület 15 másodpercenként automatikusan frissül és megjeleníti a szenzor adatokat, a Pi CPU/RAM/disk állapotát és az eseménynaplót.
Fizikai megvalósítás
3D nyomtatott ház
CraftBot Plus · OpenSCAD
Az összes hardver-komponens egy egyedi tervezett, 3D nyomtatott „konzol” dobozba van beépítve. A tervet OpenSCAD parametrikus CAD szoftverrel készítettük, a nyomtatás CraftBot Plus nyomtatón készült. Az eredmény egy tiszta, esztétikus ház ami elrejti a kábeleket, de mutatja a LED gyűrűt és az LCD kijelzőt.
NyomtatóCraftBot Plus
Tervező szoftverOpenSCAD
AnyagPLA filament
LED ablakDiffúzor betét · NeoPixel
Alkotók
Készítette
Ez a projekt két alkotó közös munkájának az eredménye.
👨💻
Hardver & Szoftver
Fehér Zsolt Milán
Python szerver, webes felület, Arduino firmware, 3D ház tervezés OpenSCAD-ben.
👨🔧
Hardver & Elektronika
Gujka Dominik
Hardver összekötés, szenzor integráció, elektronikai tervezés és kivitelezés.
Felépítés
Alkatrészek részletesen
Minden komponens leírása – mi az, és miért ezt választottuk a projekthez.
Vezérlő · Egylapos számítógép
Raspberry Pi Zero 2 W
Kis méretű, alacsony fogyasztású Linux számítógép quad-core ARM Cortex-A53 processzorral, beépített Wi-Fi és Bluetooth modullal.
💡 Miért ezt?Elegendő teljesítmény a Python Flask szerver futtatásához, Wi-Fi-n elérhető webes felület – és kis mérete miatt beépíthető a 3D nyomtatott házba.
Mikrovezérlő
Arduino Mega 2560
Nagy teljesítményű AVR mikrovezérlő 54 digitális és 16 analóg I/O lábbal. Valós idejű hardvervezérlésre specializált.
💡 Miért ezt?A Pi nem tud közvetlenül NeoPixelt vezérelni pontos időzítéssel. Az Arduino ezt natívan kezeli, és a sok I/O láb elegendő az összes szenzorhoz.
LED kimenet
NeoPixel LED Gyűrű (16×)
16 darab WS2812B RGB LED egy gyűrűbe rendezve. Minden LED egyenként, egyetlen adatvonalon programozható – tetszőleges szín és fényerő.
💡 Miért ezt?A WS2812B protokoll megbízható, széles library-támogatással rendelkezik. A gyűrű forma egyedi forgó és radar effekteket tesz lehetővé.
💡 Miért ezt?Az I2C protokoll miatt csak 2 Arduino lábat foglal el a közvetlen 6–8 helyett, miközben folyamatos visszajelzést ad a rendszer állapotáról.
Hangkimenet
Passzív Piezo Buzzer
Passzív zümmer, amelyet külső PWM jellel kell meghajtani. A frekvencia változtatásával különböző hangmagasságú hangokat és dallamokat lehet lejátszani.
💡 Miért ezt?Az aktív buzzerrel ellentétben a passzív típus tetszőleges hangmagasságot tud megszólaltatni – ezért képes R2D2 dallamokat és Pac-Man jingle-t játszani.
Hőmérséklet szenzor
NTC Termisztor (10kΩ)
Hőmérsékletfüggő ellenállás – melegítésre csökken az ellenállása. Feszültségosztóba kötve az Arduino A0 analóg lábán mérhető.
💡 Miért ezt?Olcsó, egyszerű, nincs szükség speciális library-re. Szoba-hőmérsékletre elegendő pontossággal rendelkezik, direktben köthető az analóg lábra.
Hangszenzor
MAX4466 Mikrofon modul
Elektret mikrofon beépített erősítővel (MAX4466 IC). Állítható erősítéssel analóg feszültség-kimenetet ad az Arduino A1 analóg bemenetére.
💡 Miért ezt?Analóg amplitúdó-értéket ad vissza, amivel a hangerő intenzitása mérhető – ez szükséges a VU méterhez, Pulse és Disco effektekhez.
Fényszenzor
LDR (Fényfüggő ellenállás)
Fotorezisztor – megvilágítás hatására csökken az ellenállása. Feszültségosztóba kötve az Arduino A2 lábán méri a környezeti fényszintet.
💡 Miért ezt?Rendkívül egyszerű és olcsó az automatikus éjszakai módhoz. Nincs szükség extra library-re, az analóg értékből meghatározható a sötétség küszöbértéke.
Összekötő panel
Breadboard (720 pont)
Forrasztás nélküli próbapanel, amelyen az alkatrészek és jumper kábelek egyszerűen csatlakoztathatók. Két tápellátás-sín és egy középső elválasztó csatornával.
💡 Miért ezt?Lehetővé teszi az áramkör gyors, forrasztás nélküli összerakását és módosítását. Prototípus fázisban rugalmasságot biztosít az elrendezés változtatásához.
GPIO térkép
Raspberry Pi Zero 2 W — Lábkiosztás
A 40-pin GPIO fejlécből 3 láb van bekötve a projektben. Vidd az egeret egy pinre a részletekért.
UART TX/RX
GND (Föld)
Nem használt
Pin 6 — GND
Közös föld az Arduinohoz
Pin 8 — GPIO14 (TX)
UART adás → Arduino RX0
Pin 10 — GPIO15 (RX)
UART vétel ← Arduino TX0
Arduino lábkiosztás
Arduino Mega 2560 — Lábkiosztás
Az Arduino Mega 2560 bekötött lábai a projektben. Vidd az egeret egy pinre a részletekért.
UART Serial1 (Pi)
I2C (LCD)
Digitális kimenet
Analóg bemenet
Tápellátás
Föld (GND)
Nem használt
D6 — NeoPixel DI
lila kábel
D8 — Buzzer S
sárga kábel
TX1 (18) → Pi Pin 10
+ feszültségosztó rezisztor
RX1 (19) ← Pi Pin 8
közvetlen kapcsolat
SDA (20) — LCD
narancs kábel
SCL (21) — LCD
sárga kábel
A0 — Hőszenzor
piros kábel
A1 — Mikrofon
zöld kábel
A2 — LDR szenzor
zöld kábel
Összeköttetések
Bekötési táblázat
Pontosan melyik alkatrész melyik lábra csatlakozik, és milyen színű kábellel.
⚡ Breadboard tápellátás (közös sín)
Arduino 5V → Breadboard piros sín
Arduino GND → Breadboard kék sín
Alkatrész
Láb
Cél
Kábel
Megjegyzés
NeoPixel Gyűrű
DI
→
D6 Arduino
Lila
PWM adat
NeoPixel Gyűrű
5V
→
5V Arduino
Szürke
Direkt Arduino 5V tápra
NeoPixel Gyűrű
GND
→
GND Arduino
Fehér
DO láb lóg, nincs kötve
I2C LCD
VCC
→
Breadboard piros sín
Piros
5V a breadboardon át
I2C LCD
GND
→
Breadboard kék sín
Zöld
I2C LCD
SDA
→
Pin 20 Arduino
Narancs
I2C cím: 0x27
I2C LCD
SCL
→
Pin 21 Arduino
Sárga
Hőszenzor modul
−
→
Breadboard kék sín
Fekete
Hőszenzor modul
S
→
A0 Arduino
Piros
Analóg jel
Hőszenzor modul
5V
→
Breadboard piros sín
Piros
Mikrofon modul
+
→
Breadboard piros sín
Lila
5V táp
Mikrofon modul
G
→
Breadboard kék sín
Kék
Mikrofon modul
A0
→
A1 Arduino
Zöld
Analóg hang jel
LDR szenzor
S
→
A2 Arduino
Zöld
Analóg fény jel
LDR szenzor
5V
→
Breadboard piros sín
Sárga
LDR szenzor
−
→
Breadboard kék sín
Narancs
Passzív Buzzer
S
→
D8 Arduino
Sárga
PWM jel
Passzív Buzzer
5V
→
Breadboard piros sín
Narancs
Passzív Buzzer
−
→
Breadboard kék sín
Piros
Raspberry Pi
Pin 8 (TXD)
→
RX1 (19) Arduino
Szürke?
Közvetlen (Pi 3.3V ↔ Arduino 5V – ld. megjegyzés)
Raspberry Pi
Pin 10 (RXD)
←
TX1 (18) Arduino
—
Breadboardon át + feszültségosztó rezisztor (5V→3.3V)
📡
UART – Soros kommunikáció
Ipari és terepi buszok
Az UART (Universal Asynchronous Receiver-Transmitter) az egyik legelterjedtebb soros adatátviteli protokoll – ezt használjuk a Pi és az Arduino közötti kommunikációhoz.