Volumio3 zásuvný modul pre podsvietenie LCD
Návštevy: 124
Zásuvný modul pre Volumio 3 pre automatické ovládanie podsvietenia LCD na základe úrovne okolitého osvetlenia pomocou svetelného senzora VEML7700.

Tento zásuvný modul automaticky upravuje jas LCD displejov s ovládaním podsvietenia na základe podmienok okolitého osvetlenia. Používa senzor okolitého osvetlenia VEML7700 na meranie úrovne luxov a dynamicky upravuje jas displeja pre optimálne zobrazenie v akomkoľvek svetelnom prostredí.
Funkcie
- Automatická kontrola jasu: Upravuje podsvietenie LCD na základe údajov zo senzora VEML7700
- Konfigurovateľný rozsah jasu: Nastavte minimálne a maximálne úrovne jasu podľa vašich preferencií
- Plynulé prechody: Nastaviteľný faktor vyhladenia pre postupné zmeny jasu
- Prispôsobiteľná kalibrácia senzora: Dolaďte odozvu senzora pomocou multiplikátora luxov
- Flexibilný interval merania: Konfigurujte, ako často senzor číta okolité osvetlenie (0,1 - 10 sekúnd)
- Podpora viacerých jazykov: Zahŕňa angličtinu a všetky preklady podporované systémom Volumio (de, fr, pl, cz, ...)
Hardvérové komponenty
| Komponent | Model/Typ | Popis |
| Hlavná jednotka |
Raspberry Pi 3B+ |
Riadiaca jednotka |
| Displej |
7" LCD DPI (OFI009) |
Dotykový displej pripojený cez DPI rozhranie |
| Enkodér |
KY-040 |
Otočný enkodér na ovládanie hlasitosti |
| Svetelný senzor |
VEML7700 (BH-014PA) |
16-bit I2C senzor okolitého osvetlenia |
Schéma zapojenia
I2C zbernica (senzor VEML7700)
Raspberry Pi 3B+ VEML7700 (WL7700)
───────────────── ──────────────────
Pin 1 (3.3V) ──────── Pin 5 (+3.3V)
Pin 3 (GPIO 2) ──────── Pin 2 (SDA)
Pin 5 (GPIO 3) ──────── Pin 1 (SCL)
Pin 6 (GND) ──────── Pin 4 (GND)
Referencia GPIO pinov
+-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5v | | |
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | IN | TxD | 15 | 14 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
Otočný enkodér (KY-040)
- CLK: GPIO pin (BCM číslovanie z
gpio readall)
- DT: GPIO pin (BCM číslovanie)
- SW: GPIO pin (tlačidlo)
- +: 3.3V
- GND: Zem
Poznámka: Nakonfigurujte piny enkodéra vo Volumio zásuvnom module Rotary Encoder pomocou BCM čísel pinov.
Pre správne fungovanie zásuvného modulu nie je potrebné pripojenie KY-040 otočného enkodéra.
Pripojenie displeja
- Napájanie: +5V a GND z konektora X1
- DPI signály: Pripojené podľa konfigurácie DPI v
/boot/config.txt
Inštalácia
- Manuálna inštalácia zásuvný modulu
- ak to tak nie je, je potrebné zmazať súbor /data/configuration/plugins.json a reštartovať volumio príkazom
volumio vrestart
- Automatická inštalácia , nainštalujte zásuvný modul cez webové rozhranie Volumia (zatiaľ nedostupné):
- Prejdite na zásuvné moduly → Inštalovať zásuvný modul
- Vyhľadajte "LCD Backlight Control" alebo nahrajte balík zásuvný modulu
Inštalačný skript vykoná:
- Inštaláciu Python závislostí (
python3-smbus)
- Kopírovanie Python ovládacieho skriptu do
/usr/local/bin/
- Vytvorenie konfiguračného adresára na
/etc/lcd_backlight/
- Inštaláciu a povolenie systemd služby
- Nastavenie príslušných oprávnení
Konfigurácia
Prístup k nastaveniam zásuvneho modulu cez webové rozhranie Volumia pod zásuvné moduly → LCD Backlight Control tlačidlo Settings.
Dostupné nastavenia
Interval merania
- Rozsah: 0,1 - 10 sekúnd
- Predvolené: 1 sekunda
- Popis: Čas medzi meraniami svetelného senzora. Nižšie hodnoty poskytujú citlivejšie zmeny jasu, ale môžu zvýšiť využitie CPU.
Minimálny jas
- Rozsah: 0 - 255
- Predvolené: 12
- Popis: Najnižšia úroveň jasu, ktorej displej dosiahne. Zabraňuje prílišnému stmaveniu alebo úplnému vypnutiu obrazovky.
Maximálny jas
- Rozsah: 0 - 255
- Predvolené: 255
- Popis: Najvyššia úroveň jasu, ktorej displej dosiahne. Môže byť znížená na úsporu energie alebo obmedzenie maximálneho jasu.
Lux multiplikátor
- Rozsah: 0,01 - 10
- Predvolené: 0,75
- Popis: Kalibračný multiplikátor pre senzor VEML7700. Zvýšte pre svetlejšiu odozvu na okolité osvetlenie, znížte pre tmavšiu odozvu. Použite na doladenie citlivosti senzora na vaše prostredie.
Faktor vyhladenia
- Rozsah: 0,0 - 1,0
- Predvolené: 0,3
- Popis: Ovláda rýchlosť prechodov jasu. Nižšie hodnoty vytvárajú pomalšie, plynulejšie prechody. Vyššie hodnoty robia zmeny jasu okamžitejšími a citlivejšími.
Zvýšenie jasu prehrávania
- Rozsah: 0 – 255
- Predvolené: 0
- Popis: Dodatočný jas pripočítaný k vypočítanej úrovni jasu počas prehrávania hudby. Zabezpečuje lepšiu viditeľnosť obrazovky pri aktívnom používaní prehrávača. Nastavte na 0 pre vypnutie tejto funkcie.
Trvanie zvýšenia po prehrávaní
- Rozsah: 0 – 300 sekúnd
- Predvolené: 30 sekúnd
- Popis: Ako dlho sa má udržať zvýšený jas po zastavení prehrávania. Poskytuje oneskorovaciu dobu pred tým, ako sa jas vráti na úroveň založenú na okolitom osvetlení. Užitočné na udržanie jasnej obrazovky pri prechode medzi skladbami.
Ako to funguje
Kontrola okolitého osvetlenia
- Plugin v pravidelných intervaloch číta úroveň okolitého svetla zo senzora VEML7700.
- Hodnota luxov sa vynásobí nastaveným multiplikátorom luxov pre kalibráciu.
- Hodnota jasu sa vypočíta pomocou logaritmickej krivky a je obmedzená v rámci rozsahu min./max.
Systém zvýšenia pri prehrávaní
- Plugin sleduje stav prehrávania Volumia prostredníctvom jeho REST API (http://localhost:3000/api/v1/getState).
- Pri zmene stavu prehrávania na „play“:
- K vypočítanému jasu z okolia sa pridá nastavené zvýšenie jasu.
- Zvýšenie zostáva aktívne počas celého prehrávania.
- Pri zastavení prehrávania:
- Spustí sa odpočítavací časovač na nastavenú dobu trvania zvýšenia.
- Zvýšenie zostáva aktívne počas tohto obdobia.
- Po vypršaní časovača sa jas vráti na riadenie len podľa okolitého svetla.
- Algoritmus vyhladzovania plynule upravuje podsvietenie, aby sa predišlo náhlym zmenám.
Výpočet konečného jasu
Final Brightness = min(MAX_BACKLIGHT, Ambient_Brightness + Playback_Boost)
Technické detaily
Štruktúra súborov
lcd_backlight/
├── index.js # Hlavný ovládač pluginu
├── backlight_control.py # Python skript pre hardvérové ovládanie
├── lcd_backlight.service # Systemd služba
├── install.sh # Inštalačný skript
├── uninstall.sh # Odinštalačný skript
├── UIConfig.json # Konfigurácia webového rozhrania
├── package.json # Metadáta pluginu
└── i18n/ # Preklady
├── strings_en.json # Anglické reťazce
└── strings_sk.json # Slovenské reťazce
/usr/local/bin/
└── backlight_control.py # Hlavný Python skript
Konfiguračné súbory
Zásuvný modul ukladá konfiguráciu na dvoch miestach:
1. Trvalá konfigurácia
/data/plugins/system_hardware/lcd_backlight/config.json
- Ukladá všetky nastavenia zásuvného modulu
- Spravovaná konfiguračným systémom Volumia
2. Konfigurácia pre beh
/etc/lcd_backlight/
- Individuálne súbory pre každé nastavenie (napr.
lcd_enabled, lcd_int_time)
- Číta Python ovládací skript
- Umožňuje aktualizácie konfigurácie v reálnom čase bez reštartovania služby
Správa služieb
Zásuvný modul používa systemd službu (lcd_backlight.service), ktorá:
- Spúšťa Python ovládací skript ako démon
- Automaticky sa štartuje pri bootovaní, keď je zásuvný modul povolený
- Automaticky sa reštartuje pri zlyhaní
- Zaznamenáva do systemd denníka
Príklad výstupu logov
Pre účely ladenia odkomentujte dva riadky 294 - 295 v backlight_control.py:
# Odkomentujte pre ladenie
# if success:
# print(f"[{time.strftime('%H:%M:%S')}] Lux: {lux:6.1f} | Brightness: {self.current_brightness:3d}/{self.max_backlight}")
Výstup konzoly bude:
[12:34:56] Lux: 245.3 | Brightness: 145/255
[12:34:57] Lux: 248.1 | Brightness: 147/255
[12:34:58] Lux: 251.7 | Brightness: 149/255
Riešenie problémov
Zásuvný modul sa nespustí
- Skontrolujte, či je senzor VEML7700 správne pripojený cez I²C
- Overte, či je I²C povolený vo vašom systéme (
sudo i2cdetect -y 1)
- Skontrolujte stav systemd služby:
systemctl status lcd_backlight.service
- Skontrolujte logy:
journalctl -u lcd_backlight.service -f
Jas sa nemení
- Overte existenciu zariadenia podsvietenia:
ls /sys/class/backlight/
- Skontrolujte konfiguračné súbory v
/etc/lcd_backlight/
- Uistite sa, že
lcd_enabled je nastavené na 1
- Otestujte merania senzora manuálne
Jas sa mení príliš rýchlo/pomaly
- Upravte nastavenie Faktor vyhladenia
- Nižšie hodnoty = pomalšie prechody
- Vyššie hodnoty = rýchlejšie prechody
Displej príliš svetlý/tmavý
- Upravte Lux multiplikátor pre kalibráciu odozvy senzora
- Upravte rozsahy Minimálny jas a Maximálny jas
- Otestujte v rôznych svetelných podmienkach
Odinštalovanie
zásuvný modul je možné odinštalovať cez webové rozhranie Volumia. Proces odinštalovania:
- Zastaví a zakáže systemd službu
- Odstráni súbor služby
- Odstráni Python ovládací skript
- Vyčistí konfiguračné súbory