Manapság már szinte el sem tudjuk képzelni az életünket internet nélkül, pláne nem úgy, hogy ne lenne állandó hozzáférésünk a tudás tárházához, a Wikipediához. Pedig mi van akkor, ha épp nincs hálózat? Vagy ha olyan helyen vagyunk, ahol nem opció a mobilnet, de mégis szükségünk lenne egy-egy információra? Nos, pontosan erre a problémára kínál rendkívül elegáns és meglepően kompakt megoldást egy új, nyílt forráskódú projekt, amely egy olcsó, sárga kijelzőre (CYD, azaz Cheap Yellow Display) zsúfolja be a teljes offline Wikipediát.
Mi az a CYD, és hogyan működik?
A Cheap Yellow Display valójában egy ESP32-es mikrokontroller köré épülő, alacsony költségű fejlesztőpanel. Jellemzően egy régebbi ESP32 variánst, egy ellenállásos érintőképernyős kijelzőt, egy SD kártya foglalatot és nem sok mást tartalmaz. Ezek az eszközök általában egyszerű mikrokontrolleres alkalmazásokhoz készülnek, ahol felhasználói felületre is szükség van, de ahogy ez a projekt is mutatja, a lehetőségeik jóval tágabbak. A konkrétan említett ESP32-2432S028, vagy más néven a JC2432S024 egy 2,4 hüvelykes, 320x240 pixeles ILI9341 kijelzőmodul XPT2046 rezisztív érintésvezérlővel és SD kártya hellyel. Maga a kijelző nem tartalmaz processzort, hanem egy ESP32-C3 fejlesztői lapkához csatlakozik, például egy SuperMini vagy DevKitM-1 típusúhoz. Az ESP32-C3 mindössze egyetlen SPI perifériával rendelkezik, így a kijelző, az SD kártya és az érintésvezérlő is ezt az egyetlen SPI buszt használja, külön chip-szelektáló vonalakkal. Az első indításkor automatikusan lefut az érintőképernyő kalibrációja, amit a rendszer elment a memóriába, így a későbbi indításoknál már kihagyható.
Hogy fér el a Wikipedia egy ilyen apró eszközön?
Ez a projekt a Kiwix nevű kezdeményezés offline Wikipedia összeállításait veszi alapul, majd ezeket dolgozza fel egy speciális formátumba, ami az ESP32 böngésző firmware-je számára optimalizált. A modern SD kártyák, még a CYD által támogatott 32 GB-os (vagy a tesztek során sikeresen használt 64 GB-os, sőt, akár 128 GB-os) méret is hatalmas mennyiségű adatot képes tárolni, így egy teljes Wikipedia – képekkel együtt – könnyedén elfér rajta. Fontos megjegyezni, hogy bár a teljes angol Wikipedia akár 90 GB-ot is kitehet, ami feszegetheti az SD kártya mérethatárait, léteznek kompaktabb verziók is. Például az Egyszerű Angol Wikipedia adatbázisa mindössze 3,3 GB, és így is 285 000 cikket és az összes képet tartalmazza. Ez a változat kifejezetten ideális egy ilyen kis kijelzőre, mivel az egyszerűbb nyelvezet és a rövidebb cikkek könnyebbé teszik az olvasást.
A mögöttes technológia, ami ezt lehetővé teszi, nem is olyan egyszerű, mint amilyennek hangzik. A Kiwix ZIM fájljai zstd fürtömörítést használnak. Egy zstd fürt kicsomagolásához a teljes fürtöt RAM-ban kell tartani, ami általában 1-4 MB, és ez meghaladja az ESP32 körülbelül 300 KB-os használható heap memóriáját. A projekt előfeldolgozója ezért újra tömöríti az egyes cikkeket LZ4-gyel, amely néhány KB munkamemóriában is kicsomagolható. Ez a zseniális trükk teszi lehetővé, hogy a hatalmas adatmennyiséget a kis ESP32 is kezelni tudja. A tartalom feldolgozása során a ZIM fájlokból kinyerik az adatokat, és egyedi fájlrendszert hoznak létre. A lényeg az, hogy a HTML, szöveg, CSS és JavaScript tartalmakat GZIP tömörítéssel látják el, míg a már eleve tömörített formátumú képeket (GIF, JPG, PNG) érintetlenül hagyják. Ez a folyamat a FAT32 fájlrendszer korlátai miatt 4 GB-os fájlokra bontja a tartalmat, és egy SQLite adatbázis segítségével indexeli az összes cikket és képet, hogy a keresés és a navigáció gyors és hatékony legyen.
A jövő és a felhasználási lehetőségek
Ez a projekt nemcsak egy technológiai bravúr, hanem egyfajta kinyilatkoztatás is arról, hogy a tudásnak nem kell feltétlenül online lennie ahhoz, hogy elérhető legyen. Gondoljunk csak a fejlődő országokra, ahol az internet-hozzáférés korlátozott vagy egyáltalán nem létezik. Egy ilyen eszköz, amellyel offline is böngészhető a Wikipedia, felbecsülhetetlen értékű lehet az oktatásban és az információhoz való hozzáférésben. De hasznos lehet bárhol, ahol nincs térerő, például túrázás közben, vagy egyszerűen csak adatforgalom-takarékossági okokból. Ezen felül a projekt rávilágít az ESP32-es mikrokontrollerek sokoldalúságára is, amelyek energiahatékony megoldást kínálnak komplex feladatok elvégzésére is.
A projekt egyik érdekessége, hogy a Lilygo T-Dongle-S3 nevű eszközzel is megvalósították, ami egy ESP32 alapú miniszámítógép beépített kijelzővel és SD kártyaolvasóval. Ez a megoldás a gyártó szerint kevesebb mint 1W-ot fogyaszt, szemben egy nagyobb teljesítményű, Linuxot futtató Radxa Cubie A7Z lapkával, ami tétlen állapotban is 2,2W-ot, terhelés alatt pedig akár 8W-ot is felvehet. Igaz, a T-Dongle verzió egy cikk betöltésére körülbelül 44 másodpercet igényel, míg egy kiwix-serve alapú szerver Linuxon 2-3 másodperc alatt hozza a tartalmat, de ne feledjük, itt egy 240 MHz-es, 512 KB RAM-mal rendelkező mikrokontrollerről van szó, nem egy i3-as processzorral és 8 GB RAM-mal szerelt laptoppal. A projekt célja a megvalósíthatóság demonstrálása volt, és ez abszolút sikerült. A tudás elérhetővé tétele, akár a legapróbb eszközökön is, hatalmas lehetőségeket rejt magában.
Kulcstények a Wikipedia olvasóról:
- Hardver alap: ESP32 mikrokontroller és „Cheap Yellow Display” (CYD), egy olcsó, érintőképernyős kijelzővel ellátott fejlesztőkártya.
- Offline tartalom: A Kiwix projektből származó Wikipedia adatbázisok használhatók, speciálisan az ESP32-re optimalizálva.
- Adattárolás: microSD kártyán tárolódnak a cikkek, képek és a teljes keresőindex, internetkapcsolat nélkül elérhetően.
- Kompatibilitás: Az Egyszerű Angol Wikipedia (kb. 3.3 GB, 285 ezer cikk) könnyedén elfér a 32 GB-os SD kártyán. A teljes angol Wikipedia (kb. 90 GB) is feltehető, de ez a CYD kártyakezelési korlátai miatt problémás lehet.
- Tömörítés: Az eredeti zstd tömörítés helyett LZ4-gyel tömörítik a cikkeket, hogy az ESP32 korlátozott RAM-jában is kezelhetőek legyenek.
- Fájlrendszer: FAT32 fájlrendszerre optimalizált, 4 GB-os darabokra vágott adatokkal és SQLite adatbázissal a gyors kereséshez.
- Energiahatékonyság: A Lilygo T-Dongle-S3 verzió kevesebb mint 1W-ot fogyaszt, ideális hordozható és energiatakarékos megoldásokhoz.
Ez a projekt újra megmutatja, hogy a technológia, még a legkisebb formában is, milyen hatalmas lehetőségeket rejt magában. A tudás decentralizálása és mindenki számára hozzáférhetővé tétele, még a legeldugottabb helyeken is, egy olyan cél, amiért érdemes dolgozni. Bárki, aki egy kicsit is otthon van a mikrokontrollerek világában, vagy csak szeretne kísérletezni, könnyedén megépítheti saját offline Wikipedia olvasóját, és élvezheti az internetmentes tudás szabadságát. A részletes útmutatók és a forráskód elérhető a projekt GitHub oldalán, így nincs más hátra, mint belevágni a „zseb-Wikipedia” építésébe!