Fórum témák
» Több friss téma |
Adott egy (régebbi) 7"-os "digitális képkeret", ami USB-n keresztül képes fogadni egy pendrive-ot.
Megoldható-e, hogy egy uC-rel emuláljam a pendrive-ot, és így a megjelenítendő képet kívülről, dinamikusan állítsam elő? A képkeret MMC-kártyát is tud fogadni, de egyéb csatlakozása nincs. Mivel eddig AVR-rel foglalkoztam, leginkább az jöhet szóba, de ha PIC-es megoldásról tud valaki, az már jó kiindulás lehet... Vagy helyből felejtős a dolog, mert a képkeret a csatlakozáskor beolvassa a képet, és azután nem néz a pendrive-ra? Természetesen a konkrét eszköz működhet másképpen is, de "általában" hogyan szoktak működni? Esetleg, ha a tartalom nem kép, hanem videó, amit folyamatosan generál egy uC? Egy ATMega képes lehet kiszolgálni egy alacsony felbontású (pl. 800x600/8bit) videót? A megjelenítendő tartalom alapvetően statikus szöveg lenne, 10 s - pár perc frissítéssel / változással. (Tehát nem filmet szeretnék lejátszani...) Csinált már valaki ilyet? Sajnos a Google nem volt a barátom... (Lehetséges, hogy nem jó kulcsszavakat írtam be... De a "pendrive emulátor" semmi olyat nem adott, ami számomra hasznos lenne...) Vagy ez az egész ötlet zsákutca, és inkább a képkeretben kellene szétnézni, hátha mázlim van és a kijelzőjére tudok építeni uC-t - a saját vezérlője helyett? Tudom, hogy olcsók az ilyen méretű kijelzők, de két dolog miatt készíteném el így: 1. egészen biztosan nem tudok olyan szép "dobozt" készíteni a kijelzőnek, mint egy gyári, 2. az építés élménye.
Én utánanéztem, igen, megvalósítható, de technikai szempontból van néhány komoly buktatója, amire érdemes felkészülni.
A feladat lényege, hogy a mikrokontrollernek egy USB Mass Storage Class (MSC) eszközt (pendrive-ot) kell emulálnia egy FAT16 vagy FAT32 fájlrendszerrel. A háttérben pedig folyamatosan vagy ciklikusan felül kell írnod a képadatokat. A működési elv: - USB Peripheral/OTG hardver: Olyan uC kell, ami támogatja a natív USB Peripheral (Device) módot (pl. Raspberry Pi Pico / RP2040, ESP32-S2 / ESP32-S3, vagy STM32F4 sorozat). Szoftveres oldalon a TinyUSB vagy az ESP32/STM32 saját USB stackje képes MSC eszközt emulálni. - Virtuális Fájlrendszer (RAM Disk / SD kártya): A mikrokontroller memória-területén (vagy RAM-jában) létrehozol egy minimális FAT fájlrendszer-struktúrát, amiben szerepel egyetlen képfájl (pl. IMAGE.JPG). - Dinamikus tartalom frissítése: Amikor a keret beolvassa a szektort, az uC a RAM-ban lévő legfrissebb képadatot adja át. A képet letöltheti Wi-Fi-n (ESP32-nél), előállíthatja a kódból, vagy soros porton fogadhatja. A legnagyobb nehézségek és Buktatók: - A képkeret nem érzékeli a változást (Cache probléma)A digitális képkeretek nem folyamatosan olvassák a pendrive-ot. Amikor bedugod a pendrive-ot:Beolvassa a fájllistát, betölti a képeket a saját memóriájába, és elindul a diavetítés.Probléma: Ha az uC-n kicseréled a IMAGE.JPG tartalmát a háttérben, a képkeret ezt nem fogja észrevenni, mert nem olvassa újra a fájlrendszert a pendrive-ról. Megoldás a frissítés kikényszerítésére:Virtuális újracsatlakozás (Soft Re-plug): A mikrokontroller szoftveresen lecsatlakoztatja az USB-t (húzza le a D+ vonalat/szünetelteti az emulációt), majd 1-2 másodperc múlva újra beállítja az USB kapcsolatot. A képkeret úgy érzékeli, mintha kihúztad volna a pendrive-ot és visszadugtad volna, így újra beolvassa a tartalmát.Diavetítés mód: Ha a keret folyamatosan körbe-körbe játssza le a fájlokat, akkor 2-3 fájlt érdemes emulálni (1.jpg, 2.jpg), és mindig azt a fájlt írni felül a RAM-ban, amit épp nem olvas a képkeret. - Fájlrendszer zárolási konfliktus (Read-Write contention)A FAT fájlrendszert alapvetően nem arra tervezték, hogy két eszköz egyszerre írja/olvassa. Ha a keret épp olvas egy szektort, miközben te a mikrokontroller felől módosítod a szektor tömbjét, korrumpálódhat a beolvasott kép. Ezt blokkolási logikával (mutex/szemafor) kell kezelni a kód szintjén. |
Bejelentkezés
Hirdetés |









