<< Zpět

 

  Česky: , English:

CH32LibSDK

SDK knihovna pro low-end CH32 RISC-V mikrokontrolery

Před-alfa verze 0.38, rozpracováno - ve vývoji

(c) 2025 Miroslav Němeček

https://github.com/Panda381/CH32LibSDK

Download knihovny spolu s ukázkovými aplikacemi a všemi podklady

Obsah

 

Úvod

CH32LibSDK je SDK knihovna sloužící ke snazšímu vývoji aplikací s procesory CH32 RISC-V. Je zaměřena na low-end procesory, typicky CH32V003, CH32V002-CH32V007, CH32X033-CH32X035, CH32V103, CH32L103, CH32V203 a CH32V208. Vyšší typy procesorů (s funkcemi Ethernet) nejsou podporovány.

V současnosti je knihovna ve vývoji. Mnoho funkcí chybí nebo nebylo testováno.

Jak kompilovat ve Windows pomocí příkazového řádku:

- Použijte FAR Manager k editaci zdrojových souborů a spouštění BAT skriptů.
- Stáhněte si MounRiver Studio v1.92
http://mounriver.com/download
- Nainstalujte MounRiver Studio.
- Vyjměte kompilátor "toolchain\RISC-V Embedded GCC12" do samostatné složky.
- Upravte soubor _c1.bat a zadejte cestu ke složce "bin" kompilátoru: set GCC_CH32_PATH=C:\GCC_CH32\bin
- Vyjměte nástroj "toolchain\OpenOCD\bin" nebo použijte openocd ze složky _tools\openocd.
- Někdy může být nutné použít WCH-LinkUtility ze složky ExTool\SQWTool - může být potřeba vymazat flash paměť pomocí vypnutí napájení, protože OpenOcd to nedokáže.
- Zkompilujte program pomocí c.bat.
- Zapište zkompilovaný program do flash pomocí e.bat, s WCH-LinkE programátorem (k dispozici např.
https://pajenicko.cz/usb-programator-a-debug-adapter-wch-link ). U verze konzole s SD kartou postačí nahrát program na SD kartu a zavést do procesoru pomocí boot loaderu.
- Vymažte kompilaci pomocí d.bat.

 

Přehled herních konzolí a zařízení

Herní konzole a zařízení vytvořená v rámci knihovny CH32LibSDK, a jejich vlastnosti:

 

AntCalc

BeatleBoy
BeatlePad

BeatleCalc
+ Sinclair Scient.
+ Datamath

BabyBoy

BabyPad

BabyPC - WCH80
(klon ZX80)

PidiBoy

PidiPad

TweetyBoy

Procesor CH32V002A4M6 CH32V002J4M6,
CH32V003J4M6,
CH32V006F8P6
2x
CH32V002A4M6
CH32V002A4M6 CH32V002A4M6 2x
CH32V002A4M6
CH32V006F8P6 CH32V006E8R6 CH32X035G8R6
Pouzdro SOP16 SOP8, TSSOP20 SOP16 SOP16 SOP16 SOP16 TSSOP20 QSOP24 QSOP28
Flash 16KB 16KB, 62KB 2x16KB 16KB 16KB 2x16KB 62KB 62KB 62KB
RAM 4KB 2KB, 4KB, 8KB 4KB 4KB 4KB 4KB 8KB 8KB 20KB
Hodiny 24MHz 24MHz 24MHz 24MHz 50MHz 50MHz 48MHz 50MHz 48MHz
Krystal - - - - 25MHz 25MHz - 25MHz -
Napájení CR2032 CR2032, USB 5V USB 5V nebo 3.3V CR2032 USB 5V USB 5V 1xAAA, step-up 3.3V USB 3.3V 1xAA, step-up 3.3V
Displej OLED I2C 128x64
SSD1306 B&W, modrožlutý
OLED I2C 128x64
SSD1306 B&W
,
VGA mono
9-místný LED:
2xBQ-M324RD
BS-A344RD
OLED I2C 128x64
SSD1306 B&W
VGA mono VGA mono OLED I2C 128x64
SSD1306 B&W
VGA 9 barev LCD SPI 160x80
ST7735S RGB
SD karta - - - - - - Ano Ano Ano
Schéma schéma schéma OLED
schéma VGA
schéma CPU2
schéma CPU6
schéma schéma schéma schéma schéma schéma schéma
BASIC - - - - - BASIC80 (ZX80) - - -
Přesnost 21 číslic mantisa
2 číslice exponent
- 13 číslic mantisa
2 číslice exponent
- - 32-bit celé číslo - - -
Prototyp

 

Ukázkové hry

Ukázkové hry, vytvořené pro herní konzole knihovny CH32LibSDK:

 

BeatleBoy
BeatlePad

BabyBoy

BabyPad

BabyPC - WCH80
(klon ZX80)

PidiBoy

PidiPad

TweetyBoy


Ants - karetní hra. Úkolem je budovat svůj
hrad a bourat hrad protivníka.
--- --- mono mono --- color ---

Atoms - explodující atomy.
mono mono mono mono mono color color

Chess - šachy.
--- --- --- --- --- color ---

Eggs - přeměňování kamenů
vejce-kuře-slepice.
mono mono mono mono mono color color

Fifteen - puzzle, cílem je uspořádat kameny
zpět do správného pořadí.
mono mono mono mono mono color color

Flappy - klasické logické puzzle
z Sharp MZ800, 105 scén.
--- --- --- --- --- color ---

Invaders - střílečka Space Invaders.
mono mono mono mono mono color color

Life - celulární automat.
mono mono mono mono mono color color

Maze - bludiště.
mono mono mono mono mono color color

Sokoban - logické puzzle.
mono mono mono mono mono color color

TArkan - Tiny-Arkanoid
((c) Daniel Champagne)
mono mono mono mono mono color color

TBert - Tiny-Bert
((c) Daniel Champagne)
mono mono mono mono mono color color

TBike - Tiny-Bike
((c) Daniel Champagne)
mono mono mono mono mono color color

TBomber - Tiny-Bomber
((c) Daniel Champagne)
mono mono mono mono mono color color

TDDug - Tiny-DDug
((c) Daniel Champagne)
mono mono mono mono mono color color

TDoc - Tiny-Doctor
((c) Daniel Champagne)
mono mono mono mono mono color color

TDungeon - Tiny-Dungeon
((c) Lorandil)
mono mono mono mono mono color color

Tetris
mono mono mono --- mono color color

TInvader - Tiny-Invaders
((c) Daniel Champagne)
mono mono mono mono mono color color

TMissile - Tiny-Missile
((c) Daniel Champagne)
mono mono mono mono mono color color

TMorpion - Tiny-Morpion
((c) Daniel Champagne)
mono mono mono mono mono color color

TPipe - Tiny-Pipe
((c) Daniel Champagne)
mono mono mono mono mono color color

TPlaque - Tiny-Plaque
((c) Daniel Champagne)
mono mono mono mono mono color color

Train - logická hra.
mono mono mono mono mono color color

TSQuest - Tiny-SQuest
((c) Daniel Champagne)
mono mono mono mono mono color color

TTrick - Tiny-Trick
((c) Daniel Champagne)
mono mono mono mono mono color color

TTris - Tiny-Tris
((c) Daniel Champagne)
mono mono mono mono mono color color

TVTennis - televizní tenis.
mono mono mono mono mono color color
Počet her 25 25 26 25 25 28 25

mono = černobílá verze, color = barevná verze, --- = neimplementováno

 

AntCalc

AntCalc je náramková programovatelná kalkulačka s vědeckými funkcemi. Obsahuje levný procesor CH32V002A4M6, modrožlutý OLED displej I2C 0.96" s řadičem SSD1306 a rozlišením 128x64 pixelů B&W (k dostání např. zde: https://www.hadex.cz/m508c-displej-oled-096-128x64-znaku-iici2c-4piny-modrozluty/). Dále obsahuje 12 tlačítek a napájení z baterie CR2032. Kalkulačka pracuje s reverzní polskou notací RPN - to znamená, že čísla se nejdříve vloží do zásobníku kalkulátoru tlačítkem Enter a poté se provede požadovaná operace stiskem operátoru. Zásobník kalkulačky má velikost 10 registrů. Nejnižší 4 registry jsou zobrazeny na displeji pod jmény X, Y, Z a T. Kalkulačka počítá v BCD kódu s přesností 21 platných číslic, spolu s exponentem v rozsahu +-99. Na displeji se zobrazí maximálně 14 číslic při zobrazení bez exponentu nebo 11 číslic s exponentem. K dispozici jsou funkce pro výpočet přímých i inverzních goniometrických funkcí, mocninná funkce, dekadická a přirozená logaritmická a exponenciální funkce. Kalkulačka disponuje 10 paměťovými registry, jejichž obsah se uchovává i ve vypnutém stavu v paměti flash. Kalkulačku je možné programovat pomocí maker obsahujících záznam stisknutých kláves. Do paměti kalkulačky lze nahrát 10 maker, každé o délce až 38 kláves. Kalkulačka má rozměr 30x55 mm. Jako vypínač je použit jumper na konektoru, který slouží současně i k programování procesoru.

Funkce kalkulačky AntCalc

Kalkulačka se ovládá pomocí 12 tlačítek. 10 tlačítek jsou číslice, 1 tlačítko desetinná tečka a 1 tlačítko 2nd pro přepínání dalších módů. Celkem lze opakovaným stiskem tlačítka 2nd přecházet mezi 7 stavy. Dojde-li během operací k chybě (dělení nulou nebo odmocnina ze záporného čísla), zobrazí se na řádku registru X text "overflow". Stiskem jakéhokoliv tlačítka se hlášeny chyby ukončí a registr X se vynuluje.

0..9 ... zadání číslice

. ... Zadání desetinné tečky. Je-li kalkulačka v módu editace exponentu, lze tlačítkem desetinné tečky přejít zpět k editaci mantisy.

2nd ... Přepínač dalších funkcí kalkulačky. Zvolený režim se zobrazí na horním řádku displeje vlevo.

+, -, *, :, Y^x (2nd 0..4) ... aritmetické operace mezi registry X a Y

y<>x (2nd 5) ... záměna registrů X a Y

Vx (2nd 6) ... druhá odmocnina

Enter (2nd 7) ... přesun čísla X do registru Y

CE (2nd 8) ... Smazání posledního znaku během editace. Tlačítkem EE lze přepnout na editaci exponentu, tlačítkem tečka se přepne na editaci mantisy. Tlačítkem CE se aktivuje režime editace čísla, pokud editace neprobíhá.

EE (2nd 9) ... Zadání exponentu. Tlačítkem EE lze zahájit editaci čísla zobrazeného na displeji. Tlačítkem desetinné tečky se editace přepne na mantisu.

+/- (2nd .) ... Změna znaménka mantisy nebo exponentu čísla na displeji.

sin (2x2nd 0) ... sinus

asin (2x2nd 1) ... arkus sinus

log (2x2nd 2) ... dekadický logaritmus

ln (2x2nd 3) ... přirozený logaritmus

cos (2x2nd 4) ... kosinus

acos (2x2nd 5) ... arkus kosinus

exp10 (2x2nd 6) ... dekadický exponent

exp (2x2nd 7) ... přirozený exponent

tan (2x2nd 8) ... tangens

atan (2x2nd 9) ... arkus tangens

1/x (2x2nd .) ... převrácená hodnota

RCL0..RCL9 (3x2nd 0..9) ... vyvolání obsahu paměti 0 až 9

PI (3x2nd .) ... číslo Pi

STO0..STO9 (4x2nd 0..9) ... Uložení čísla do paměti 0 až 9. Obsah se uchová ve flash paměti i ve vypnutém stavu.

DEG (4x2nd .) ... Přepínání úhlové míry goniometrických funkcí mezi stupni (DEG) a radiány (RAD). Zvolené nastavení se zobrazí uprostřed horního řádku displeje a uchová se v paměti flash.

RUN0..RUN9 (5x2nd 0..9) ... Přehrátí makra číslo 0 až 9.

INT (5x2nd .) ... Odříznutí desetinné části čísla (zaokrouhlení na celá čísla směrem k nule).

PRG0..PRG9 (6x2nd 0..9) ... Zahájení záznamu makra do programu číslo 0 až 9. Do paměti se ukládají kódy stisknutých kláves. Do jednoho makra lze uložit až 38 kódů tlačítek. Stisky tlačítka 2nd se do programu neukládají - uloží se výsledný kód funkce, jako 1 kód. Během záznamu makra bliká v pravém horním rohu displeje text PROG0..PROG9 indikující probíhající záznam. Dojde-li k překročení počtu tlačítek, indikátor zůstane svítit, ale přestane blikat jako indikace, že tlačítka se přestala ukládat. Zaznamenávání makra lze ukončit stiskem kterékoliv z funkcí PRG0 až PRG9 (není nutné použít stejné číslo makra).

C (6x2nd .) ... Vymaže registry kalkulačky. Obsahy pamětí a programů zůstanou zachovány. Stejný účinek má vypnutí a zapnutí kalkulačky.

Poznámky ke konstrukci:

V kalkulačce byl použit velmi levný čínský procesor CH32V002A4M6. Je v pouzdru SOP16 s velkými roztečemi vývodů, a proto je konstrukce kalkulačky vhodná i pro začínající konstruktéry. Kalkulačka je ze spodní strany opatřena 2 očky k provlečení řemínku. Pro zjednodušení konstrukce byla jako vypínač použita propojka nasazená na konektoru, který slouží též k programování procesoru kalkulačky. V zapnutém stavu je propojka nasazena na 2 pinech vpravo, ve vypnutém stavu na 2 pinech vlevo. Displej byl použit dvoubarevný, modrožlutý OLED displej s řadičem SSD1306 a rozlišením 128x64. Displej je ve skutečnosti jednobarevný, horních 16 linek se zobrazí žlutou barvou a dalších 48 linek modrou barvou. Případně lze stejně tak použít jednobarevný displej. Konstrukci horního krytu s popiskami tlačítek ponechávám na dalších konstruktérech - v prototypu jsem použil pouze papírový štítek s proseknutými otvory pro tlačítka.

>>> Zdrojové kódy a všechny potřebné podklady kalkulačky AntCalc naleznete v CH32LibSDK knihovně ve složce ch32\DEVICE\. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/DEVICE <<<

 

BeatleBoyPad (BeatleBoy, BeatlePad)

BeatleBoyPad je dvoj-konzole s vyměnitelnými ROM cartridges. Sestává ze dvou konzolí. První konzole, BeatleBoy, obsahuje OLED I2C černobílý displej 128x64 pixelů s řadičem SSD1306, vestavěný reproduktor a 6 tlačítek (4 směrové šipky a tlačítka A a B). Konzole je napájena baterií CR2032. Druhá konzole, BeatlePad, má černobílý výstup na VGA monitor a konektor pro externí reproduktor. Do konzolí se zasouvá cartridge s programem, obsahující levný čínský procesor CH32V002J4M6, CH32V003J4M6 nebo CH32V006F8P6. Poznámka: pro procesor V006 se používá jiné zapojení cartridge než pro procesory V002 a V003.

Cartridge jsou společné pro obě konzole. Procesor v cartridge si sám rozliší podle napětí, do které konzole je zapojený, a podle toho se přepne do příslušného módu. Z důvodu autodetekce konzole je proto nutné zachovat použité napájení - konzole BeatleBoy se napájí z 3V baterie, konzole BeatlePad se napájí z 5V externího zdroje. Kromě detekce napájecího napětí detekuje procesor v případě konzole BeatlePad připojení VGA kabelu. Program v konzoli se spustí až po připojení VGA monitoru. To je z důvodu, aby bylo možné přeprogramovat cartridge v programátoru, protože VGA konzole využívá i programovací pin.

Pro konzole je připraveno 25 her. Všechny připravené hry je možné naprogramovat do všech typů cartridge - s procesory V002, V003 nebo V006. Varianta s procesorem V002 má k dispozici více paměti RAM než procesor V003, a výstup na VGA monitor probíhá přes SPI řadič, což umožňuje používat i vyšší rozlišení videomódů (v připravených hrách to není využito). Procesor V006 má více paměti RAM oproti procesoru V002. Přesto se doporučuje, pokud to software nevyžaduje, používat přednostně procesor CH32V003J4M6. Přestože se jedná o starší typ procesoru, jeho výhodou je vyšší stabilita oscilátoru a tedy menší šum ve VGA obraze.

Při konstrukci je potřeba použít rezistory s přesností 1%, jinak může docházet k nesprávné detekci stisků tlačítek. Jas OLED displeje je ponechán na nízké úrovni, aby se minimalizovala spotřeba baterky. Aktuální napětí baterie CR2032 se zobrazí při startu většiny programů. Měření se provádí s využitím interní reference procesoru, a proto se zobrazený údaj může lišit až o 10%, a je nutné ho tedy brát jen jako orientační. U displeje pozor na rozmístění pinů - vyskytují se obvykle dvě verze, s pořadím pinů VCC-GND-SCL-SDA nebo GND-VDD-SCL-SDA. Na plošném spoji jsou připraveny obě varianty (případně lze připojovat displej měnitelně přes pinovou lištu). Displej OLED je zde použit v obrácené poloze oproti ostatním konzolím - otočení obrazu je nadefinováno v inicializační sekvenci displeje.

K výstupu VGA obrazu se využívá interní HSI RC oscilátor. Jeho frekvence není stabilizovaná krystalem a proto je nutné počítat jednak s mírnou odchylkou časování signálu a jednak s šumem v obraze. Procesor V003 má o trochu nižší šum v obraze než procesory V002 a V006. Může se stát, že některé VGA monitory obraz nezobrazí, z důvodu nízké kvality časování obrazového signálu.

Programy lze do cartridge nahrát pomocí programátoru WCH-LinkE (k dispozici např. zde: https://pajenicko.cz/usb-programator-a-debug-adapter-wch-link). Na catridge je pin číslo 4 ponechán jako možnost k přeprogramování procesorů vyžadujících 2-vodičové programování (SWDIO+SWCLK, např. CH32X035). V současnosti tato možnost není využita a je možné tento pin použít jako slepý pin, usnadňující orientaci zasunutí cartridge (tj. na cartridge uštípnout kolík číslo 4 a na konzoli příslušný pin ucpat např. bužírkou).

BeatleBoy:

BeatlePad:

Cartridge:

 

BeatleCalc s emulací kalkulaček Sinclair Scientific a Datamath

BeatleCalc je minimalistická vědecká kalkulačka, doplněná emulátory kalkulaček Sinclair Scientific (rok 1974, procesor TMC0805) a Texas Instruments TI-2500 Datamath (rok 1972, procesor TMS0803). Kalkulačka interně používá BCD kód, netrpí proto nepřesnostmi binárního vyjádření desetinných čísel. Počítá interně s přesností 13 číslic. Exponent je v rozsahu -99 až +99. Obsahuje výpočty přímých i zpětných goniometrických funkcí, v radiánech i ve stupních, přirozená a dekadická logaritmická a exponenciální funkce, mocnina a odmocnina. Preferuje prioritu operací, lze používat i závorky. Čísla lze uschovat ve 4 paměťových registrech, které si uchovávají hodnotu i při vypnutém napájení.

Přepnutí režimu kalkulačky mezi emulací nebo kalkulačkou BeatleCalc:

Ovládání emulovaných kalkulaček naleznete v příslušných manuálech ke kalkulačkám. Upozorňuji, že kalkulačka Sinclair používá RPN reverzní logiku - nejdříve je potřeba zadat číslo a poté požadovanou operaci (typicky '+' slouží k vložení čísla do zásobníku). Emulátory používají jen některá tlačítka kalkulačky - rozložení použitých tlačítek lze vidět na obrázcích štítků ke kalkulačkám.

Funkce kalkulačky BeatleCalc:

STO1..STO4 ... Uložení čísla na displeji do paměťového registru 1 až 4. Číslo se uloží do flash paměti druhého procesoru CPU2, zůstane k dispozici i po vypnutí napájení.

RCL1..RCL4 ... Zobrazení čísla z paměťového registru 1 až 4.

CE ... Vymazání poslední číslice nebo vypnutí indikace chyby. Je-li na displeji zobrazeno needitované číslo, přejde se do režimu editace.

2nd, 3rd ... Volba alternativních funkcí. Na prvním místě displeje se zobrazí indikátor (2nd=horní čárka, 3rd=dolní čárka).

= ... Výpočet výrazu. Opakovaným stiskem se opakuje poslední operace s posledním operandem.

EE ... Režim zadávání exponentu. Je-li na displeji zobrazeno needitované číslo, přejde se do režimu editace exponentu. Tlačítkem desetinné tečky lze přejít do režimu editace mantisy čísla.

LOG, EXP10 ... Logaritmická a exponenciální funkce s dekadickým základem.

LN, EXP ... Logaritmická a exponenciální funkce s přirozeným základem.

TAN, ATAN, SIN, ASIN, COS, ACOS ... Goniometrické funkce počítající v radiánech.

TAND, ATAND, SIND, ASIND, COSD, ACOSD ... Goniometrické funkce počítající ve stupních.

Poznámky ke konstrukci:

V kalkulačce byly použity dva procesory CH32V002A4M6. Důvodem volby (kromě nízké ceny) je jejich snadné letování, vhodné i pro začátečníky. Procesor CPU1 je hlavní výkonný procesor. Procesor CPU2 obsluhuje multiplex displeje a slouží k uchování konfigurace a paměťových registrů. Na fotografiích vidíte prototyp kalkulačky - řešil jsem především software kalkulačky, ne konstrukci, doporučuji proto zvolit raději vlastní konstrukci kalkulačky. Jako horní kryt kalkulačky lze použít potištěný plošný spoj. Já jsem u prototypu vytiskl popisku na papír, polepil z obou stran průhlednou lepící páskou a vysekl otvory pro tlačítka výsečníkem na kůži. Displej doporučuji překrýt červeným plexisklem, jinak může být špatně čitelný na světle. Kondenzátory by měly být přiletovány na ležato, aby nepřekážely hornímu krytu. Jako číslici na první pozici jsem použil 1-místnou LED číslicovku. Nemusíte ji použít, protože se na tomto místě zobrazuje pouze znaménko čísla a indikátory tlačítek 2nd a 3rd (segmenty A, D a G). Číslicovku můžete nahradit pouze plochou červenou LEDkou, kterou zapojíte mezi signály D1 a SG. Indikátory 2nd a 3rd nejsou nutné. U prototypu jsem neřešil napájení. Je možné použít i např. akumulátor 3.7V s nabíjecím obvodem. Baterie CR2032 nemusí stačit výkonem, displej může mít velký odběr.

Firmware kalkulačky má dvě části. Ve složce ch32\DEVICE\BeatleCalc naleznete hlavní výkonný firmware, který nahrajete do procesoru CPU1 (např. programátorem WCH-LinkE: https://pajenicko.cz/usb-programator-a-debug-adapter-wch-link). Ve složce ch32\DEVICE\BeatleCalc_CPU2 je firmware pro druhý procesor, CPU2. Dokud nebudou firmware nahrány do obou procesorů a komunikace mezi nimi nebude funkční, zůstane displej tmavý. Potřebujete-li najít chybu nefunkčnosti, použijte program ch32\DEMO\LED, ve kterém budete zadávat příslušné piny, a kontrolní LEDkou kontrolovat zda jsou signály v pořádku.

Poznámka: Emulace kalkulaček byla ověřována emulátorem https://static.righto.com/calculator/sinclair_scientific_simulator.html od autora Ken Shirriff. Nebyly k dispozici fyzické kalkulátory k ověření funkčnosti, proto se může stát, že funkce kalkulaček nemusí přestě souhlasit s originálem.

>>> Zdrojové kódy a všechny potřebné podklady naleznete v CH32LibSDK knihovně ve složce ch32\DEVICE\. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/DEVICE <<<

 

BabyBoy

BabyBoy je nejjednodušší herní mini-konzole s 6 tlačítky, s levným procesorem CH32V002A4M6 (cena 10 centů), s vestavěným reproduktorem a OLED I2C černobílým displejem 128x64 pixelů s řadičem SSD1306. Konzole je napájena baterií CR2032, případně ji lze napájet externím zdrojem 3.3V přes programovací konektor. Díky zjednodušením a díky snadnému letování procesoru v pouzdru SOP16 s roztečí pinů 1.27mm je konzole předurčena především začátečníkům, jako stavebnice k prvnímu seznámení se s elektronikou.

U displeje pozor na rozmístění pinů - vyskytují se obvykle dvě verze, s pořadím pinů VCC-GND-SCL-SDA nebo GND-VDD-SCL-SDA. Na plošném spoji jsem použil dvě pinové lišty, pro obě verze displeje, abych mohl displeje měnit a zasunout je do správné pozice. Poznámka: Rezistor R1 je možná zbytečně velký (je to z důvodu snížení spotřeby). Zvažte jeho zmenšení nebo dokonce vypuštění.

BabyBoy neobsahuje SD kartu. Programy je nutné do procesoru nahrát pomocí programátoru WCH-LinkE (k dispozici např. zde: https://pajenicko.cz/usb-programator-a-debug-adapter-wch-link).

 

BabyPad

BabyPad je herní mini-konzole se 7 tlačítky, s levným procesorem CH32V002A4M6 (cena 10 centů), s krystalem 25 MHz (volitelně), zvukovým výstupem a VGA mono B&W výstupem na monitor. Krystal a příslušné kondenzátory není nutné použít - pokud software detekuje, že krystal není k dispozici, použije se interní HSI oscilátor, naladěný na frekvenci blízko 25 MHz. Obraz je v tom případě mírně zašuměný, ale stále ještě použitelný - záleží na použitém monitoru, jak si se stabilizací obrazu poradí. Mírné rušení obrazu se může objevovat i při použití krystalu - je to z důvodu softwarového generování obrazu. BabyPad používá procesor v pouzdru SOP16 s roztečí pinů 1.27mm, což umožňuje snadné pájení i začátečníkům. Spolu s jednoduchou konstrukcí (a možností neosadit krystal) je předurčen především začátečníkům jako stavebnice k prvnímu seznámení se s elektronikou.

BabyPad neobsahuje SD kartu. Programy je nutné do procesoru nahrát pomocí programátoru WCH-LinkE (k dispozici např. zde: https://pajenicko.cz/usb-programator-a-debug-adapter-wch-link).

 

BabyPC - WCH80, klon ZX80

BabyPC - WCH80 je levný mini-počítač se 2 procesory CH32V002, vytvořený po vzoru počítače ZX80. Nejedná se o emulátor, počítač neemuluje ROM počítače ZX80 a ani neemuluje strojové instrukce Z80. Byl vytvořen jako zcela nezávislý počítač s programovacím jazykem BASIC80 a výstupem na VGA monitor, funkci ZX80 pouze co nejvíce napodobuje. Používá procesor CH32V002A4M6, který je díky velké rozteči pinů 1.27mm vhodný ke snadnému letování i konstruktérům začátečníkům. Spolu s ostatními THT součástkami je WCH80 vhodný především jako stavebnice pro začínající konstruktéry. Vestavěný programovací jazyk BASIC80 slouží k seznámení se s programováním počítačů a k vyzkoušení, jak se programovalo programátorům v letech 1980.

Počítač neobsahuje paměťové médium k ukládání programů. Vlastní programy lze ukládat přímo do flash paměti procesoru. K dispozici je 14 paměťových slotů, tedy 14 míst k uložení vlastních programů, číslovaných 0 až 13. Slot 0 se nachází v hlavním procesoru CPU1. Spolu s programem se při uložení do slotu 0 uloží i datové proměnné (přesněji pouze první polovina paměti s proměnnými). Slot 0 se automaticky nahraje do programové paměti po zapnutí počítače. Paměťové sloty 1 až 13 se nachází v druhém procesoru, CPU2. Všechny sloty umožňují uložení celé paměti s programem, kromě posledního slotu 13, který má pouze poloviční velikost.

Po prvním naprogramování procesorů obsahují sloty 28 ukázkových programů a her, vytvořených v jazyku BASIC80. Po naprogramování procesorů již programátor není potřeba - ale může být užitečný v případě, kdy si chcete obsahy procesorů zálohovat do PC, nebo když chcete měnit verze programů. S využitím slotu 0 lze programy přenášet i mezi různými zálohami paměti procesoru, kopírováním mezi procesory CPU1 a CPU2.

Kromě firmware s BASIC80 je možné do počítače programátorem nahrát i hry a programy, vytvořené v jazyku C. Je připraveno 25 ukázkových her. Hry naleznete v knihovně CH32LibSDK. Je třeba ovšem pamatovat na to, že přeprogramováním procesoru CPU1 se přepíše i obsah slotu 0. Obsahy slotů 1 až 13 v CPU2 se nahráním her nemění. U her v C kódu se obvykle používají k ovládání klávesy: 8,F=vpravo, 7,E=nahoru, 5,S=vlevo, 6,D=dolů, A,mezera=akce, B,NEW LINE=alternativní akce, X,P=info, Y,0=zpět.

Více podrobností a podklady naleznete na samostatné stránce: www.breatharian.eu/hw/wch80/index.html nebo na GitHub: github.com/Panda381/WCH80.

 

PidiBoy

PidiBoy je herní mini-konzole se 7 tlačítky, s levným procesorem CH32V006F8P6 (cena 20 centů), microSD kartou, vestavěným reproduktorem, zvukovým výstupem a OLED I2C černobílým displejem 128x64 pixelů s řadičem SSD1306. Konzole je vybavena step-up konvertorem napětí ME2108A33PG s výstupem 3.3V a je ji tak možné provozovat z 1 nebo 2 baterií AA nebo AAA v rozsahu napětí 1.1V až 3.3V, případně konzoli napájet externím zdrojem 3.3V přes programovací konektor. Programy je možné spouštět z SD karty pomocí boot loaderu, který nahraje program do flash paměti procesoru. Ovládání boot loaderu: šipky nahoru/dolů - posun kurzoru o 1 položku, šipky vlevo/vpravo - posun kurzoru o 1 stránku, A - start programu nebo změna složky, B - zobrazení napětí nebo přechod do nadřazené složky, Y - spuštění programu který se nachází ve flash paměti. U displeje pozor na rozmístění pinů - vyskytují se obvykle dvě verze, s pořadím pinů VCC-GND-SCL-SDA nebo GND-VDD-SCL-SDA. Na plošném spoji jsem použil dvě pinové lišty, pro obě verze displeje, abych mohl displeje měnit a zasunout je do správné pozice.

Programy zkompilované pro PidiBoy obsahují boot loader. Při zápisu programu do flash paměti pomocí programátoru se zapíše jak program, tak boot loader. Stisknutím tlačítka Y (nebo resetováním s vloženou SD kartou) se spustí boot loader, který umožní vybrat program, který se má spustit z SD karty. Boot loader zajistí načtení programu z SD karty do flash paměti. Jiný program lze načíst po stisku tlačítka Y nebo resetováním se zasunutou SD kartou. Pokud při resetu není zasunuta žádná SD karta, boot loader se nespustí, ale spustí se ihned program ve flash paměti. Program ve flash paměti lze také spustit z boot loaderu stisknutím tlačítka Y.

Soubory BIN a ELF jsou při kompilaci opatřeny kontrolním součtem, pomocí programu LoaderCrc. Kontrolní součet používá boot loader ke kontrole aplikace ve flash paměti. Pokud chcete aplikaci zapsat do flash paměti pomocí WCH-LinkUtility, musíte použít soubor BIN, nikoli HEX, protože generovaný soubor HEX neobsahuje kontrolní součet.

 

PidiPad

PidiPad je herní mini-konzole s 8 tlačítky, s levným procesorem CH32V006E8R6 (cena 20 centů), s krystalem 25 MHz (volitelně), microSD kartou, zvukovým výstupem a VGA barevným výstupem na monitor. Krystal a příslušné kondenzátory není nutné použít - pokud software detekuje, že krystal není k dispozici, použije se interní HSI oscilátor, naladěný na frekvenci blízko 25 MHz. Obraz je v tom případě mírně zašuměný, ale stále ještě použitelný - záleží na použitém monitoru, jak si se stabilizací obrazu poradí. Mírné rušení obrazu se může objevovat i při použití krystalu - je to z důvodu softwarového generování obrazu.

Programy zkompilované pro PidiPad obsahují boot loader. Při zápisu programu do flash paměti pomocí programátoru se zapíše jak program, tak boot loader. Stisknutím tlačítka Y (nebo resetováním s vloženou SD kartou) se spustí boot loader, který umožní vybrat program, který se má spustit z SD karty. Boot loader zajistí načtení programu z SD karty do flash paměti. Jiný program lze načíst po stisku tlačítka Y nebo resetováním se zasunutou SD kartou. Pokud při resetu není zasunuta žádná SD karta, boot loader se nespustí, ale spustí se ihned program ve flash paměti. Program ve flash paměti lze také spustit z boot loaderu stisknutím tlačítka Y.

Boot loader - slouží ke spouštění programů z SD karty.

Soubory BIN a ELF jsou při kompilaci opatřeny kontrolním součtem, pomocí programu LoaderCrc. Kontrolní součet používá boot loader ke kontrole aplikace ve flash paměti. Pokud chcete aplikaci zapsat do flash paměti pomocí WCH-LinkUtility, musíte použít soubor BIN, nikoli HEX, protože generovaný soubor HEX neobsahuje kontrolní součet.

 

TweetyBoy

TweetyBoy je herní mini-konzole s 8 tlačítky, s levným procesorem CH32X035G8R6 (cena 50 centů), microSD kartou, vestavěným reproduktorem, zvukovým výstupem a LCD SPI barevným displejem 160x80 pixelů s řadičem ST7735S. Konzole je vybavena step-up konvertorem napětí ME2108A33PG s výstupem 3.3V a je ji tak možné provozovat z 1 nebo 2 baterií AA nebo AAA v rozsahu napětí 1.1V až 3.3V, případně konzoli napájet externím zdrojem 3.3V přes programovací konektor. Programy je možné spouštět z SD karty pomocí boot loaderu, který nahraje program do flash paměti procesoru. Ovládání boot loaderu: šipky nahoru/dolů - posun kurzoru o 1 položku, šipky vlevo/vpravo - posun kurzoru o 1 stránku, A - start programu nebo změna složky, B - zobrazení napětí, nastavení jasu displeje nebo přechod do nadřazené složky, Y - spuštění programu který se nachází ve flash paměti.

Jas LCD displeje lze nastavit z boot loaderu po stisku tlačítka B. Jas displeje lze nastavit v 9 krocích, 1 až 9. Úplné ztmavení displeje (stupeň 0) není umožněno, aby se konzole nestala neovladatelnou. Při napájení z baterie se doporučuje ponechat co nejmenší jas displeje, aby se minimalizovala spotřeba z baterie. Displej má ze zdroje 3.3V odběr 0.5mA až 17mA, při stupních jasu 1 až 9. Každé snížení jasu displeje o 1 stupeň představuje snížení odběru proudu displeje téměř na polovinu. Implicitní hodnota jasu 6 znamená odběr displeje 3mA. Odběr procesoru je asi 6mA. Jedná se ovšem o odběr ze zdroje 3.3V. Odběr z baterie je zhruba 3x větší z důvodu transformace napětí step-up měničem.

Programy zkompilované pro TweetyBoy obsahují boot loader. Při zápisu programu do flash paměti pomocí programátoru se zapíše jak program, tak boot loader. Stisknutím tlačítka Y (nebo resetováním s vloženou SD kartou) se spustí boot loader, který umožní vybrat program, který se má spustit z SD karty. Boot loader zajistí načtení programu z SD karty do flash paměti. Jiný program lze načíst po stisku tlačítka Y nebo resetováním se zasunutou SD kartou. Pokud při resetu není zasunuta žádná SD karta, boot loader se nespustí, ale spustí se ihned program ve flash paměti. Program ve flash paměti lze také spustit z boot loaderu stisknutím tlačítka Y.

Soubory BIN a ELF jsou při kompilaci opatřeny kontrolním součtem, pomocí programu LoaderCrc. Kontrolní součet používá boot loader ke kontrole aplikace ve flash paměti. Pokud chcete aplikaci zapsat do flash paměti pomocí WCH-LinkUtility, musíte použít soubor BIN, nikoli HEX, protože generovaný soubor HEX neobsahuje kontrolní součet.

 

XTree

XTree je přívěšek ve tvaru vánočního stromku, s procesorem CH32V002J4M6, s 12 blikajícími LED a reproduktorem přehrávajícím skladbu "Jingle Bells". XTree je napájen z baterie CR2032. Na přední stranu je přilepen štítek s obrázkem vánočního stromku, a případně s hvězdou. Na přední straně jsou pouze LED diody, všechny ostatní součástky jsou naletovány ze zadní strany plošného spoje. Použité součástky by měly být snadno letovatelné i začínajícím konstruktérům. Na spodním okraji je konektor pro programování procesoru, který slouží současně jako vypínač - zasunutím propojky na pravou stranu konektoru se XTree zapne. Propojka současně znázorňuje kmen stromku. Ve vypnutém stavu může být propojka zasunuta na levou stranu konektoru. LED by měly být použity s vysokým jasem, jinak mohou mít malý jas. Vhodnější by byly matné LED, ale mají nižší jas. Případně snižte hodnoty rezistorů. Na druhou stranu, nízký jas LED zajišťuje nižší spotřebu baterie - odběr je kolem 8mA. Zvuk z reproduktoru není příliš hlasitý, ale mělo by to stačit aby hudba příliš nerušila. V prototypu jsem namísto horní vrstvy plošného spoje použil drátové propojky - doporučuji použít raději oboustranný plošný spoj, případně rovnou i s potiskem obrázku.

>>> Zdrojové kódy a všechny potřebné podklady XTree naleznete v CH32LibSDK knihovně ve složce ch32\TOYS\XTree. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/TOYS/XTree <<<

 

MiniDice

MiniDice je elektronická házecí kostka se 7 LED, procesorem CH32V002J4M6 a baterií CR2032. Kostka se aktivuje přimáčknutím ke stolu - na spodní straně se nachází mikrospínač. Jako vypínač napájení slouží 4-pinová kolíková lišta s propojkou, která slouží současně k programování procesoru. Vypínač ovšem není nutné používat. Kostka se po 10 sekundách od posledního použití automaticky vypne a přejde do úsporného režimu, kdy má z baterie pouze minimální odběr 10uA. Nepotřebujete-li procesor programovat, můžete programovací konektor odstranit a propojit piny BAT a VCC. V úsporném stavu by baterie měla vydržet 1 až 2 roky. Případně při delším nepoužívání baterii vyjměte.

Na horní straně plošného spoje je umístěno pouze 7 LED, všechny ostatní součástky jsou přiletovány zespodu plošného spoje. V prototypu jsem namísto jedné vrstvy plošného spoje použil drátové propojky. Vy jistě použijete oboustranný plošný spoj. Jako aktivační mikrospínač jsem použil TS6604B-7.0 s délkou hmatníku 3.5mm. Po stranách jsou zespodu přilepeny 2 vrstvy molitanového těsnění pro odpružení, aby kostka stála rovně na stole a přitom se dala snadno zmáčknout. Horní štítek jsem vytiskl na inkoustové tiskárně, přilepil a přelepil izolepou. Zřejmě použijete potisk plošného spoje. Při letování držáku baterie pozor ať nevznike zkrat s prostřední LED - případně držák baterie v tom místě mírně přihněte. Jde-li baterie zasunout příliš těžko, odehněte přítlačná pérka držáku baterie.

>>> Zdrojové kódy a všechny potřebné podklady MiniDice naleznete v CH32LibSDK knihovně ve složce ch32\TOYS\MiniDice. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/TOYS/MiniDice <<<

 

Magic Beater

Magic Beater je jednoduchý zvukový syntezátor-sekvencer ovládaný fotočidlem, s procesorem CH32V002J4M6. Umožňuje přehrávat rytmy a melodie, které se opakují ve smyčce. Celá smyčka je dlouhá 4 takty - odpovídá 4 bliknutím indikační LED. Magic Beater se ovládá 2 tlačítky. Tlačítko A slouží k záznamu melodie. Výška tónu je určena světlem dopadajícím na fotodiodu. Modulací světla lze řídit výšku tónu. Nebude-li vyhovovat rozsah tónů (příliš vysoké nebo příliš nízké), použijte jinou hodnotu R2, v závislosti na typu použité fotodiody. Tlačítko B slouží k záznamu rytmu. Současným stiskem tlačítek A a B se obsah paměti vynuluje.

Magic Beater vychází z projektu RaveBOX v1.0, jehož autorem je Vladimir Bartos https://github.com/Mat0ny/RaveBOX.

>>> Zdrojové kódy a všechny potřebné podklady Magic Beater naleznete v CH32LibSDK knihovně ve složce ch32\TOYS\MagicBeater. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/TOYS/MagicBeater <<<

 

Pianissimo

Pianissimo je malý elektronický klavír s rozsahem 2 oktáv, s procesorem CH32V002A4M6 a napájením z baterie CR2032. Kromě základních tónů zahrnuje i půltóny. Pomocí tlačítka MODE lze do paměti uložit skladbu o délce až 75 sekund. Během záznamu je potřeba tlačítko MODE celou dobu držet. Záznam se zahájí stiskem prvního tónu, během držení tlačítka MODE. Novým stiskem tlačítka MODE (aniž je stisknuta některá klávesa tónu) se zaznamenaná skladba přehraje. Přehrávání je možné přerušit stiskem kterékoliv klávesy, včetně tlačítka MODE.

Tóny jsou generovány se správnou vzájemnou přesností tónů. Časová základna je generována interním oscilátorem HSI, z toho důvodu se absolutní ladění může odchylovat až o 5%. Připojíte-li k vývodům 12 a 13 krystal 24 MHz, spolu s kondenzátory 22pF, dosáhnete přesného absolutního ladění tónů. Firmware není nutné měnit, jen je potřeba po připojení krystalu procesor resetovat odpojením napájení.

Klavír je napájen v baterie CR2032. Může být napájen i vnějším napětím v rozsahu 3 až 5V. Programovací konektor je současně využit jako vypínač napájení - přístroj se zapne zapojením jumperu mezi vývody BAT a VCC. Vypínač napájení ovšem není nutné používat. Nepotřebujete-li procesor programovat, můžete konektor odletovat a jen propojit vývody BAT a VCC. Není-li klavír používán po dobu delší než 5 sekund, procesor přejde do úsporného režimu, kdy odebírá z baterie pouze 10 uA. V úsporném režimu vydrží baterie zhruba 1 rok. Potřebujete-li procesor znovu přeprogramovat, nemusí to být možné během uspání procesoru - procesor musíte probudit stiskem některé klávesy nebo odpojením napájení, a poté do 5 sekund zahájit programování procesoru.

>>> Zdrojové kódy a všechny potřebné podklady Pianissimo naleznete v CH32LibSDK knihovně ve složce ch32\TOYS\Pianissimo. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/TOYS/Pianissimo <<<

 

Pimitachi

Pimitachi je malá kapesní hra ve stylu Tamagotchi. Ve hře se staráte o domácího mazlíčka. Hra obsahuje levný 8-pinový procesor CH32V002J4M6, 3 tlačítka, displej OLED I2C 0.96" SSD1306 128x64 pixelů (např. tento https://www.hadex.cz/m508-displej-oled-096-128x64-znaku-iici2c-4piny-modry/ ), piezo-reproduktor a baterii CR2032. Konstrukce je velmi jednoduchá a vhodná i pro začátečníky.

U displeje pozor na rozmístění pinů - vyskytují se obvykle dvě verze, s pořadím pinů VCC-GND-SCL-SDA nebo GND-VDD-SCL-SDA. Na plošném spoji jsou připravené pozice pro oba typy displejů. Firmware lze do procesoru nahrát pomocí programátoru WCH-LinkE (k dispozici např. zde: https://pajenicko.cz/usb-programator-a-debug-adapter-wch-link). Před přeprogramováním už jednou programovaného procesoru je nutné na chvíli odpojit a připojit napájení, aby procesor nebyl ve standby módu. Po nahrátí firmware již není programovací konektor potřebný a můžete ho odstranit. Namísto konektoru stačí přiletovat 3 vodiče od programátoru.

Příběh: Pimitachi jsou děti obyvatelů planety Pimitarya. Pimitaryáni rádi přenechávají výchovu svých dětí obyvatelům jiných planet, aby se jim dostalo správné výchovy. Budete-li vybráni jako vhodný kandidát na roli chůvy, přivezou vám vajíčko svého potomka. Z vajíčka se vyklube malý Pimitachi. Dobře se o něj starejte, aby byl spokojený a zdravý. Po 4 dnech se Pimitachi promění, a z batole se stane mladý Pimitaryán. Až dospěje do věku 21 dnů, rodiče si ho opět odvezou. Budete-li se o svěřence špatně starat, a bude nemocný nebo nešťastný, rodiče si ho odvezou dříve.

Na začátku hry si můžete vybrat druh domácího mazlíčka. Na výběr máte 6 možností. Po volbě druhu můžete upravit jeho jméno, nebo ponechat přednastavené jméno. Výběr druhu a jména nepůjde dodatečně změnit. Na úvodní obrazovce se zobrazí stav mazlíčka - hlad, zdraví, únava, radost, čistota a výuka. Stiskem klávesy 'A' se dostanete do menu, kde můžete mazlíčka krmit, léčit, uspat, hrát si s ním, uklízet, nebo učit. Klávesou 'B' na základní obrazovce můžete vypnout nebo zapnout zvuk. V menu si můžete zobrazit informace o mazlíčkovi - jeho jméno, věk a maximální věk - tedy plánovaný odlet domů. Budete-li mazlíčka zanedbávat, maximální věk se bude zkracovat a rodiče si ho odvezou dříve. V informacích si můžete také prohlédnout stav vašich předešlých mazlíčků. Poslední položkou menu je předčasné navrácení mazlíčka rodičům. Poté si můžete zvolit nového mazlíčka.

Není-li hra 30 sekund používána, přejde do úsporného módu s malou spotřebou (20uA) a s vypnutým displejem. I v tomto stavu běží herní čas. Aktuální stav hry se ukládá do flash paměti - jednak každý celý den a jednak při přechodu hry do úsporného režimu. Nemusíte tedy mít obavy, pokud dojde baterka - stačí baterku vyměnit a ve hře pokračovat. Stav zůstane zachovaný i bez baterie, pouze bez baterie nepoběží čas.

>>> Zdrojové kódy a všechny potřebné podklady Pimitachi naleznete v CH32LibSDK knihovně ve složce ch32\TOYS\Pimitachi. https://github.com/Panda381/CH32LibSDK/tree/main/ch32/TOYS/Pimitachi <<<

 

TinyBoy

TinyBoy je adaptace CH32V003-Game Console od Stefan Wagner, kterou pro knihovnu CH32LibSDK a procesor CH32V002J4M6 připravil Tomáš Večeřa. TinyBoy zatím není součástí knihovny CH32LibSDK. Link na projekt: https://github.com/tvecera/CH32LibSDK/tree/main/_devices/tinyboy .

 

Download

Download knihovny spolu s ukázkovými aplikacemi a všemi podklady.

 

Miroslav Němeček

<< Zpět