De ESP32 CYD Personal Digital Assistant is een firmware-project dat de ESP32 'Cheap Yellow Display' (CYD) omtovert tot een handheld computer, sterk geïnspireerd door het klassieke Palm OS.
Belangrijkste kenmerken:
- Installatie: De firmware kan eenvoudig worden geïnstalleerd via een web flasher of handmatig via de Arduino IDE.
- Opslag: Het systeem maakt gebruik van het interne FFat-bestandssysteem, maar ondersteunt ook SD-kaarten voor primaire opslag of back-ups.
- Functionaliteiten: De PDA bevat een uitgebreide collectie applicaties, onderverdeeld in:
- PIM-apps: Agenda, contacten, notities, calculator en een TOTP-authenticator.
- Systeem & Tools: Bestandsbeheer, een oscilloscoop, voltmeter en diverse sensortests.
- Entertainment: Klassieke games (zoals Snake en Tetris), een MP3-speler en diverse screensavers.
- Netwerk: Een Gopher-browser, RSS-reader, IRC-client en Wi-Fi monitoring.
- Terminal: Een krachtig onderdeel van de firmware is de terminal, die een breed scala aan commando's biedt voor netwerkdiagnostiek (ping, traceroute), bestand manipulatie en systeembeheer.
De code is open voor aanpassingen, waardoor gebruikers hun eigen interne applicaties kunnen toevoegen via de Arduino-code.
ESP32 CYD Personal Digital Assistant
Details
Voor het gebruik is geen extra hardware vereist; u heeft enkel een CYD nodig. Indien u beschikt over een speaker, kan het apparaat geluidssignalen (beeps) afgeven bij gebeurtenissen.
Wat betreft opslag maakt het systeem gebruik van het interne flashgeheugen met het FFat-bestandssysteem. Het is mogelijk om back-ups te maken van FFat naar een SD-kaart. Men kan er ook voor kiezen om de SD-kaart direct als primaire opslag te gebruiken.
Voor gebruikers die eigen interne applicaties willen toevoegen, is dit mogelijk door de Arduino-code aan te passen.
Installatie
Installatie via web flasher
De firmware kan direct worden geïnstalleerd via: https://sau412.github.io/esp32cydpda/flash
Installatie via Arduino IDE
Vereiste bibliotheken:
- TFT_eSPI (installeren via de Arduino library manager)
- XPT2046_Bitbang (installeren via de Arduino library manager)
- ESPping
- Ticker
Stappenplan:
- Installeer de Arduino IDE.
- Installeer de bovengenoemde vereiste bibliotheken.
- Vervang het bestand
UserSetup.h door het bestand dat te vinden is op GitHub (witnessmenow).
- Voeg de ESP32-bibliotheken toe.
- Board Selectie: Ga in de Arduino IDE naar Tools > Board en selecteer
ESP32-2432S028R.
- Partition Scheme: Stel onder Tools > Partition scheme de optie
No OTA (2 MB APP/2 MB FATFS) in.
- Compileer en upload de code.
Indien er problemen optreden, kan worden teruggegrepen op de instructies van Random Nerd Tutorials.
Eerste gebruik
- Kalibreer het touchscreen. De kalibratiegegevens worden opgeslagen in
/Settings/Calibration.
- Formatteer de interne opslag als FFat wanneer daarom wordt gevraagd.
Gebruik
- Apps starten: Tik op de naam van de app om deze te openen.
- Apps afsluiten: Houd de titel van de app langer dan één seconde ingedrukt om terug te keren.
- Acties: Gebruik de knoppen binnen de applicaties om acties uit te voeren.
- Screensavers: Houd overal op het scherm ingedrukt om de screensaver te verlaten.
- Geforceerde kalibratie: Houd het touchscreen ingedrukt tijdens het herstarten om bij opstarten direct de kalibratie uit te voeren.
- Beveiliging: In de 'Security'-app kan een wachtwoord worden ingesteld. Dit wachtwoord wordt gevraagd bij het inschakelen. Let op: het wachtwoord wordt in platte tekst opgeslagen zonder encryptie.
Symbolen in de statusbalk
- Wekker: Alarm is ingeschakeld.
- Wi-Fi symbool: Verbonden met Wi-Fi.
- Klok met puntjes: Wachtend op synchronisatie met NTP.
- SD-kaart: De hoofdopslag is de SD-kaart.
- Chip: De hoofdopslag is FFat (intern geheugen).
- Noot: Er wordt muziek afgespeeld.
Applicaties en functies
Systeem en hulpprogramma's
- Bestandsbeheer (ondersteuning voor het bekijken van tekst, JPEG, PNG en het bewerken van tekst)
- Kalibratie van de touchsensor
- TFT-schermtest
- Willekeurige getallengenerator
- Systeeminformatie
- Wachtwoordbeheer
- LED-besturing
- Stopwatch
- Timer
- Breathing timer
- Life (cellular automaton)
- Teller
- I2C Scanner
- Screenshots maken (via de BOOT-knop)
- Gebruikershandleiding-applicatie
- Terminal (met seriële poort, ping, telnet)
- Backup via webinterface (downloaden is traag, ca. 40 minuten; uploaden is relatief snel)
- Oscilloscoop
- Screenshots bekijken
- Back-up FFat naar SD en herstel van SD naar FFat
- Voltmeter
- Instellingen-app
- Signaalgenerator
- L-system fractal generator
PIM-apps (Personal Information Manager)
- Calculator
- Notities
- Boeklezer
- Contacten
- To-do lijst
- Uitgavenbeheer
- Tekenen (met opslaan als BMP)
- Agenda/Planning
- Wachtwoorden (AES-256 versleutelde notities)
- Flashcards
- Tabel-editor (gegevens worden opgeslagen in CSV-formaat)
- TOTP (vergelijkbaar met Google Authenticator)
- Basis interpreter (voor geavanceerde berekeningen)
- Barcode-generator (lineaire barcodes: EAN8, EAN13, Code128)
Games
- Fifteen puzzle game
- Lights Off puzzle game
- Snake
- Turkish Kerchief Solitaire
- Memory Match
- Hanoi Towers
- Match Tree
- Simon
- N-back
- Mental Math
- 2048
- CHIP-8 emulator
- Sokoban
- Minesweeper
- Schaakbord (alleen bord en figuren, geen regels)
- Tetris
Dashboards
- Klok en Kalender
- Fuzzy Clock
- Unix Time
- Internet Time
- Analoge tijd
- Weer
- Netwerk
- Wi-Fi Channels Monitor
- Wereldtijd
- Bitcoin (block, prijs, pending transactions)
- Random Useless Fact
Screensavers
- Sterren
- Gekleurde vierkanten
- Lorenz attractor
- Noise
- Matrix
- Forest Fire Simulator
- Mood Lamp
- Through the Universe
Wi-Fi en Netwerk
- Wi-Fi verbinding
- Gopher browser
- Weer
- Chat (eenvoudige chat voor CYD PDA gebruikers)
- File Server (voor back-ups en bestandsuploads)
- RSS Reader
- IRC client
- Translate (via onofficiële Google Translate API)
- Wikipedia artikel reader
Geluid
- Piano
- Metronoom
- Tunes (Nokia melodie speler)
- MP3 speler
- Web Radio Player
Terminal commando's
millis - Toon milliseconden sinds reboot
micros - Toon microseconden sinds reboot
date - Toon huidige datum
reset - Wis scherm, herinitialiseer terminal
reboot - Herstart de CYD
host - Los een domeinnaam op
ipconfig - Toon alle netwerkinformatie
ip - Toon huidig IP-adres
gateway - Toon huidige gateway
dns - Toon huidige DNS
netmask - Toon huidig netmasker
rssi - Toon huidige RSSI-waarde
hostname {hostname} - Stel hostname in
ping {host} - Ping een specifieke host continu (tik scherm om te stoppen)
serial [speed] - Verbind met seriële poort met opgegeven snelheid (standaard 115200)
telnet {host} [port] - Verbind via telnet met specifieke host en poort
telnets {host} [port] - Verbind via telnet met SSL naar specifieke host en poort
wget {url} [filename] - Download bestand via http/https en toon of sla op
tracert {host} - Traceroute naar host
ipinfo {ip} - Toon IP-informatie (via ipinfo.io)
translate {from} {to} {text} - Vertaal met Google Translate
weather [lat] [lon] - Toon weer op specifieke locatie
chat [{nick} {message}] - Toon chat of stuur bericht naar chat
sdtoffat {sdpath} {ffatpath} - Kopieer bestand van SD naar FFat
ffattosd {ffatpath} {sdpath} - Kopieer bestand van FFat naar SD
utf8tocp1251 {fromfile} {tofile} - Converteer bestandscodering van UTF-8 naar CP1251
beep - Geluidssignaal (beep)
tone - Start geluidstoon
notone - Stop geluidstoon
hexdump {path} - Bekijk bestanden in hex-codes
uuidgen - Genereer UUID
uptime - Toont uptime in dagen, uren, minuten, seconden
random [from] [to] - Willekeurig getal
cd {path} - Wijzig directory
pwd - Toon huidige directory
mkdir {path} - Maak directory aan
rmdir {path} - Verwijder lege directory
rm {path} - Verwijder bestand
file {path} - Toon bestandstype
touch {path} - Maak leeg bestand aan
ls {path} - Lijst bestanden in directory
cat {path} - Toon inhoud van bestand
more {path} - Toon bestand pagina per pagina
head {path} - Toon begin van het bestand
tail {path} - Toon einde van het bestand
grep {text} {path} - Zoek regels met specifieke tekst
append {path} {text} - Voeg tekst toe aan bestand
crc {path} - Bereken CRC van bestand
md5sum {path} - Bereken MD5 van bestand
sha256sum {path} - Bereken SHA256 van bestand
brainfuck {path} - Voer brainfuck code uit vanuit bestand
basic {path} - Voer BASIC code uit vanuit bestand
echo {text} - Toon tekst en verlaat
caesar {text} - Versleutel tekst met Caesar-encryptie
seq {from} {to} - Genereer getallenreeks
wc {path} - Bereken woorden, regels en bytes in bestand
lscpu - Informatie over CPU
lsmem - Informatie over geheugen
lsblk - Informatie over interne opslag
view {path} - Bekijk bestand (GUI viewer)
hexview {path} - Bekijk bestand in hex (GUI viewer)
edit {path} - Bewerk bestand (GUI editor)
csv {path} - Bewerk bestand in tabel-editor
cp1251toutf8 {path} {path} - Wijzig codering van cp1251 naar utf-8
base16encode {path} [path] - Codeer bestand naar base16
base16decode {path} [path] - Decodeer bestand van base16
base32encode {path} [path] - Codeer bestand naar base32
base32decode {path} [path] - Decodeer bestand van base32
base64encode {path} [path] - Codeer bestand naar base64
base64decode {path} [path] - Decodeer bestand van base64
aes_encrypt {password} {path} [path] - Versleutel bestand met AES-256
aes_decrypt {password} {path} [path] - Ontsleutel bestand met AES-256
app {app_name} - Start app op naam
Filename from /Terminal - Voer commando's uit een bestand één voor één uit
Gebruiksvoorwaarden
De code mag naar wens worden aangepast. Bugrapporten en pull requests worden gewaardeerd.
Links
ESP32 CYD Personal Digital Assistant
Details
Voor het gebruik is geen extra hardware vereist; u heeft enkel een CYD nodig. Indien u beschikt over een speaker, kan het apparaat geluidssignalen (beeps) afgeven bij gebeurtenissen.
Wat betreft opslag maakt het systeem gebruik van het interne flashgeheugen met het FFat-bestandssysteem. Het is mogelijk om back-ups te maken van FFat naar een SD-kaart. Men kan er ook voor kiezen om de SD-kaart direct als primaire opslag te gebruiken.
Voor gebruikers die eigen interne applicaties willen toevoegen, is dit mogelijk door de Arduino-code aan te passen.
Installatie
Installatie via web flasher
De firmware kan direct worden geïnstalleerd via: https://sau412.github.io/esp32cydpda/flash
Installatie via Arduino IDE
Vereiste bibliotheken:
- TFT_eSPI (installeren via de Arduino library manager)
- XPT2046_Bitbang (installeren via de Arduino library manager)
- ESPping
- Ticker
Stappenplan:
- Installeer de Arduino IDE.
- Installeer de bovengenoemde vereiste bibliotheken.
- Vervang het bestand
UserSetup.h door het bestand dat te vinden is op GitHub (witnessmenow).
- Voeg de ESP32-bibliotheken toe.
- Board Selectie: Ga in de Arduino IDE naar Tools > Board en selecteer
ESP32-2432S028R.
- Partition Scheme: Stel onder Tools > Partition scheme de optie
No OTA (2 MB APP/2 MB FATFS) in.
- Compileer en upload de code.
Indien er problemen optreden, kan worden teruggegrepen op de instructies van Random Nerd Tutorials.
Eerste gebruik
- Kalibreer het touchscreen. De kalibratiegegevens worden opgeslagen in
/Settings/Calibration.
- Formatteer de interne opslag als FFat wanneer daarom wordt gevraagd.
Gebruik
- Apps starten: Tik op de naam van de app om deze te openen.
- Apps afsluiten: Houd de titel van de app langer dan één seconde ingedrukt om terug te keren.
- Acties: Gebruik de knoppen binnen de applicaties om acties uit te voeren.
- Screensavers: Houd overal op het scherm ingedrukt om de screensaver te verlaten.
- Geforceerde kalibratie: Houd het touchscreen ingedrukt tijdens het herstarten om bij opstarten direct de kalibratie uit te voeren.
- Beveiliging: In de 'Security'-app kan een wachtwoord worden ingesteld. Dit wachtwoord wordt gevraagd bij het inschakelen. Let op: het wachtwoord wordt in platte tekst opgeslagen zonder encryptie.
Symbolen in de statusbalk
- Wekker: Alarm is ingeschakeld.
- Wi-Fi symbool: Verbonden met Wi-Fi.
- Klok met puntjes: Wachtend op synchronisatie met NTP.
- SD-kaart: De hoofdopslag is de SD-kaart.
- Chip: De hoofdopslag is FFat (intern geheugen).
- Noot: Er wordt muziek afgespeeld.
Applicaties en functies
Systeem en hulpprogramma's
- Bestandsbeheer (ondersteuning voor het bekijken van tekst, JPEG, PNG en het bewerken van tekst)
- Kalibratie van de touchsensor
- TFT-schermtest
- Willekeurige getallengenerator
- Systeeminformatie
- Wachtwoordbeheer
- LED-besturing
- Stopwatch
- Timer
- Breathing timer
- Life (cellular automaton)
- Teller
- I2C Scanner
- Screenshots maken (via de BOOT-knop)
- Gebruikershandleiding-applicatie
- Terminal (met seriële poort, ping, telnet)
- Backup via webinterface (downloaden is traag, ca. 40 minuten; uploaden is relatief snel)
- Oscilloscoop
- Screenshots bekijken
- Back-up FFat naar SD en herstel van SD naar FFat
- Voltmeter
- Instellingen-app
- Signaalgenerator
- L-system fractal generator
PIM-apps (Personal Information Manager)
- Calculator
- Notities
- Boeklezer
- Contacten
- To-do lijst
- Uitgavenbeheer
- Tekenen (met opslaan als BMP)
- Agenda/Planning
- Wachtwoorden (AES-256 versleutelde notities)
- Flashcards
- Tabel-editor (gegevens worden opgeslagen in CSV-formaat)
- TOTP (vergelijkbaar met Google Authenticator)
- Basis interpreter (voor geavanceerde berekeningen)
- Barcode-generator (lineaire barcodes: EAN8, EAN13, Code128)
Games
- Fifteen puzzle game
- Lights Off puzzle game
- Snake
- Turkish Kerchief Solitaire
- Memory Match
- Hanoi Towers
- Match Tree
- Simon
- N-back
- Mental Math
- 2048
- CHIP-8 emulator
- Sokoban
- Minesweeper
- Schaakbord (alleen bord en figuren, geen regels)
- Tetris
Dashboards
- Klok en Kalender
- Fuzzy Clock
- Unix Time
- Internet Time
- Analoge tijd
- Weer
- Netwerk
- Wi-Fi Channels Monitor
- Wereldtijd
- Bitcoin (block, prijs, pending transactions)
- Random Useless Fact
Screensavers
- Sterren
- Gekleurde vierkanten
- Lorenz attractor
- Noise
- Matrix
- Forest Fire Simulator
- Mood Lamp
- Through the Universe
Wi-Fi en Netwerk
- Wi-Fi verbinding
- Gopher browser
- Weer
- Chat (eenvoudige chat voor CYD PDA gebruikers)
- File Server (voor back-ups en bestandsuploads)
- RSS Reader
- IRC client
- Translate (via onofficiële Google Translate API)
- Wikipedia artikel reader
Geluid
- Piano
- Metronoom
- Tunes (Nokia melodie speler)
- MP3 speler
- Web Radio Player
Terminal commando's
millis - Toon milliseconden sinds reboot
micros - Toon microseconden sinds reboot
date - Toon huidige datum
reset - Wis scherm, herinitialiseer terminal
reboot - Herstart de CYD
host - Los een domeinnaam op
ipconfig - Toon alle netwerkinformatie
ip - Toon huidig IP-adres
gateway - Toon huidige gateway
dns - Toon huidige DNS
netmask - Toon huidig netmasker
rssi - Toon huidige RSSI-waarde
hostname {hostname} - Stel hostname in
ping {host} - Ping een specifieke host continu (tik scherm om te stoppen)
serial [speed] - Verbind met seriële poort met opgegeven snelheid (standaard 115200)
telnet {host} [port] - Verbind via telnet met specifieke host en poort
telnets {host} [port] - Verbind via telnet met SSL naar specifieke host en poort
wget {url} [filename] - Download bestand via http/https en toon of sla op
tracert {host} - Traceroute naar host
ipinfo {ip} - Toon IP-informatie (via ipinfo.io)
translate {from} {to} {text} - Vertaal met Google Translate
weather [lat] [lon] - Toon weer op specifieke locatie
chat [{nick} {message}] - Toon chat of stuur bericht naar chat
sdtoffat {sdpath} {ffatpath} - Kopieer bestand van SD naar FFat
ffattosd {ffatpath} {sdpath} - Kopieer bestand van FFat naar SD
utf8tocp1251 {fromfile} {tofile} - Converteer bestandscodering van UTF-8 naar CP1251
beep - Geluidssignaal (beep)
tone - Start geluidstoon
notone - Stop geluidstoon
hexdump {path} - Bekijk bestanden in hex-codes
uuidgen - Genereer UUID
uptime - Toont uptime in dagen, uren, minuten, seconden
random [from] [to] - Willekeurig getal
cd {path} - Wijzig directory
pwd - Toon huidige directory
mkdir {path} - Maak directory aan
rmdir {path} - Verwijder lege directory
rm {path} - Verwijder bestand
file {path} - Toon bestandstype
touch {path} - Maak leeg bestand aan
ls {path} - Lijst bestanden in directory
cat {path} - Toon inhoud van bestand
more {path} - Toon bestand pagina per pagina
head {path} - Toon begin van het bestand
tail {path} - Toon einde van het bestand
grep {text} {path} - Zoek regels met specifieke tekst
append {path} {text} - Voeg tekst toe aan bestand
crc {path} - Bereken CRC van bestand
md5sum {path} - Bereken MD5 van bestand
sha256sum {path} - Bereken SHA256 van bestand
brainfuck {path} - Voer brainfuck code uit vanuit bestand
basic {path} - Voer BASIC code uit vanuit bestand
echo {text} - Toon tekst en verlaat
caesar {text} - Versleutel tekst met Caesar-encryptie
seq {from} {to} - Genereer getallenreeks
wc {path} - Bereken woorden, regels en bytes in bestand
lscpu - Informatie over CPU
lsmem - Informatie over geheugen
lsblk - Informatie over interne opslag
view {path} - Bekijk bestand (GUI viewer)
hexview {path} - Bekijk bestand in hex (GUI viewer)
edit {path} - Bewerk bestand (GUI editor)
csv {path} - Bewerk bestand in tabel-editor
cp1251toutf8 {path} {path} - Wijzig codering van cp1251 naar utf-8
base16encode {path} [path] - Codeer bestand naar base16
base16decode {path} [path] - Decodeer bestand van base16
base32encode {path} [path] - Codeer bestand naar base32
base32decode {path} [path] - Decodeer bestand van base32
base64encode {path} [path] - Codeer bestand naar base64
base64decode {path} [path] - Decodeer bestand van base64
aes_encrypt {password} {path} [path] - Versleutel bestand met AES-256
aes_decrypt {password} {path} [path] - Ontsleutel bestand met AES-256
app {app_name} - Start app op naam
Filename from /Terminal - Voer commando's uit een bestand één voor één uit
Gebruiksvoorwaarden
De code mag naar wens worden aangepast. Bugrapporten en pull requests worden gewaardeerd.
Links