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.
Nagyon köszönöm! Ez valóban segítség az elinduláshoz!
A lényeg, hogy érdemes belekezdeni... Erre a Soft Re-plug dologra nem gondoltam. Viszont ez megoldja a másik problémát is: Mielőtt megváltoztatnám, mindig lecsatlakoztatom. Tehát: 0. Változtatni kell a tartalmat 1. Lecsatlakozás 2. Megváltoztatni, amit kell 3. Visszacsatlakozás 4. Frissül a kép Most már csak meg kell csinálni.
Az SD/MMC kártya SPI buszt használ, lehet, hogy azt sokkal könnyebb emulálni.
Gondolom a képkeret kártyát is fogad: szerintem egyszerűbb lenne egy Wi-Fi-s SD kártyával megoldani, aminek az az eredeti ötlete, hogy egy előre beállított (FTP) szerverhez csatlakozik és oda tölti át a képeket amiket rá fotózol. Ha viszont fordítva használod, hogy a kártyára töltöd át a képeket és a képkeret mondjuk slideshow-ként, x másodpercenként frissít a következő képre, akkor megoldható.
A hozzászólás módosítva: Aug 27, 2026
Úgy emlékszem, ilyen kártyát fogad... (most nincs a kezemben, hogy megnézzem...)
Itt is megoldható a soft-os le- és visszacsatlakozás?
A WiFi-t kihagynám...
Azt jó lenne tudni, hogy a slideshow esetén előre beolvassa-e a file-neveket, vagyis tudnia kell, hogy mik lesznek ott? Mondjuk A és B file, amit felváltva mutat - ezesetben figyelni kell rá, hogy ne változtassam a file-t, miközben éppen olvassa. Vagy a léptetéskor mindig megnézi, hogy mi van ott, és az éppen jelenlévőt betölti? Talán az is lehet, hogy kevés kép / kis méretű file-ok esetén mindet betölti a saját memóriájába és később rá se néz a kártyára? Nagy eséllyel ezek típusfüggőek is lehetnek...
Szerintem úgy működik, hogy bekapcsolásnál beolvassa a fastruktúrát és az adott könyvtárban léptet, egyenként beolvasva a fájlokat. Ha könyvtárt váltasz akkor azt olvassa be (de nem nyal fel mindent, hogy aztán a RAM-ból dolgozzon: a kártyát használja folyamatosan).
A fájl csak addig nem piszkálható amíg beolvassa, egyébként ha a fájlnév változatlan akkor oké.
Sok éve kérte valaki, hogy vegyek neki egy ilyen képkeretet és az így működött (megnéztem mert érdekelt), szerintem a többi is ezt az elvet követi.
Szerintem már csak azért sem tölti fel az összes képet, mert már egy 16GB pendrive nagy valószínűséggel bele sem fér.
Persze, ez egyértelmű. De még csak nem is cache-el előre, hanem mindig csak egy képet olvas be.
Köszi mindenkinek!
Most kezdődik a tanév, de így legalább érdemes elindulnom a dolgon... Amint lesz eredmény jelentkezem!
Hali!
Ha szövegről van szó, akkor lehet legegyszerűbb webesen megcsinálni. Egy ESP32 simán elbír vele, még router vagy AP sem kell, ha a tablet direktben csatlakozik wifin egy böngészővel az esp-re... Csak duál magos ESP32-t javaslok, ebben nagy flash, nagy ram van, elég gyors is, gyakorlatilag egy tápon kívül más nem kell hozzá ... A megszokott arduinó környezetben tudod programozni, sok példa progit találsz hozzá a fejlesztőrendszer telepítése után. Még az is lehet hogy képgenerálást is meg lehet csinálni vele (létezik belőle kamerás modul is).
A webes rész a "másik oldal"... Az, hogy az információ hogyan kerül bele az általam elkészítendő eszközbe a következő lépés lesz.
Wifi, vezetékes net, RS232, Rx/Tx, RS485, I2C - majd később, hamár a cuccból "bármi" átmegy a képkeretbe. A képkeretben viszont csak USB (talán 2.0, de az is lehet, hogy csak 1.0) és SD/MMC kártyahely van. Nincs tablet. Nincs wifi. A hozzászólás módosítva: Szept 2, 2026
Holt tart most ez a projekt? Eszembe jutott, hogy régebben belefutottam egy DEMO projektbe aholis a BluePill USB-je egy kis méretű háttértárként jelent meg a windowsban (mint egy pendrájv) sajna fogalmam sincs hol van ez a projekt, de talán megtalálható az interneten.
Most ott tart, hogy elindult a félév az egyetemen...
![]() Köszi az ötletet, megnézem, hátha megtalálom... De nem biztos, hogy ezért megtanulok egy újabb uC-t... Maradnék az AVR-vonalon... Azután majd kiderül, hogy ezzel meg sem lehet oldani... A hozzászólás módosítva: Pé, 8:08
Úgy tűnik, hogy ennek van saját memóriája képek feltöltéséhez, ha megmozgatja a fantáziád.
Igen, kb. hasonlóm van.
![]() Ehhez szeretnék csinálni valamit, amit soros porton (RS232 / Rx-Tx) tudok általam generált tartalommal nagyságrendileg perces ütemezéssel megtölteni... Nem azért, mert szükségem van rá, hanem azért, érdekes... |
Bejelentkezés
Hirdetés |









