Před dávnými lety (v roce 2021) jsem od pražského dopravního podniku koupil vyřazený terčíkový (flip-dot) panel BUSE BS 210.C. Původní plán byl použít ho v kroužku robotiky, ale nakonec se tak nestalo.
Veřejná dokumentace k panelu neexistuje a BUSE Blansko (výrobce) na prosbu o dokumentaci nereagoval.
První pokusy
Hardware
Panel je zezadu kryt plechem se čtyřmi “zámečky” podobné konstrukce jako jsou na rozvaděčích. První krok byl tedy jasný – navrhnout a vytisknout klíč1.

Jeden ze zámků na zadním krytu panelu.
Po otevření nás čeká základní deska, která je opravdu pěkně zpracovaná a hlavní svorkovnice.

Svorkovnice uvnitř panelu se stále zapojeným originálním kabelem.
| Svorkovnice | Význam |
|---|---|
| S | ? |
| ME | 0V (Vss), nulový potenciál |
| ED | odpověď zařízení |
| MS | 0V (Vss), nulový potenciál |
| SD | příkaz pro zařízení |
| 0V | 0V (Vss), nulový potenciál |
| +V | 24V (Vcc) |
| -LED | 0V (Vss), nulový potenciál |
| +LED | 24V (Vcc) |
IBIS
Dalo se očekávat, že panel implementuje protokol IBIS pro komunikaci. IBIS je vlastně jednoduchý UART sériový protokol o rychlosti 1200 baudů (konkrétně 1200 7E2). Sběrnici má vždy pod kontrolou palubní počítač, který posílá příkazy a případně očekává odpověď. Hodně příkazů je neadresných a chovají se vlastně jako broadcast (reagují na ně všechna zařízení). Nicméně je navržen pro autobusy, tedy 24V palubní síť. I datové linky jsou 24V, takže nejdou připojit přímo do běžného RS232/UART rozhraní počítače.
IBIS označuje jednotlivé příkazy jako telegramy2. Telegram je ve specifikaci označován pomocí čísla (např. 001, také často zapisováno jako DS001). Nicméně fyzicky jsou příkazy často reprezentovány jedním nebo dvěma znaky. Takže DS001 znamená fyzicky odeslaný příkaz l jako linka (line). Takže linka 1001 bude znamenat telegram l1001. Jednotlivé texty (např. jméno stanice) jsou ovšem uloženy přímo na jednotlivých zařízeních, při běžném provozu se tedy posílají pouze krátké zprávy jako změna linky, cílové stanice apod.
| IBIS Příkaz | Význam | Příklad |
|---|---|---|
l{:>03} |
linka | l176 |
zC{:>04} |
cílová stanice | zC1005 |
zD{:>04} |
příští stanice (2. řádek) | zD1006 |
aA{:>02}text |
vypsání textu na zařízení s konkrétní adresou | aA01Dobry den |
uHHMM |
nastavení času HH:MM |
u1205 |
e{:>06} |
tarifní zóna | e000001 |
a{:>02} |
stavové hlášení zařízení na adrese; normální stav je pak a0 |
a01 |
aV{:>02} |
dotaz na verzi zařízení na adrese | aV01 |
Převodník na TTL logiku jsem postavil ze dvou MOSFETů (pro vysílání) a odporového děliče (pro příjem). Protože to byly dva docela náhodné tranzistory a hodnoty odporů byly taky dost náhodné, signálová integrita nebyla nic moc.
Pomocí pyFIS se mi podařilo odeslat několik základních IBIS telegramů. Např. jsem proiteroval hodnoty linek (příkaz l) a tím objevil některé zajímavé linky DPP :)
Nicméně, k mému velkému zklamání, panel nereagoval na příkazy jako aA, takže nebylo možné vypisovat vlastní text.
Na Internetu jsem objevil, že existují programy GBUSE0.exe a GBUSE1.exe, které dodává výrobce a slouží právě ke konfiguraci obsahu3. Když se mi jej podařilo v jedné skupině najít, bylo jasné, že autor konfigurace má možnost jednotlivé příkazy vypnout/zapnout. Takže DPP se rozhodlo aA nepovolit4 (a ani zM nefungovalo).

Screenshot GBUSE.
Existuje také další aplikace výrobce BSLoader. Ta umožňuje nahrát obsah do panelu a také provést servisní úkony jako test panelu. Nicméně mi aplikace odmítala s panelem fungovat. Což bylo jednak mojí snahou pouštět ji pod wine a druhak signálovou integritou mého hnuso-převodníku.
Někde tady jsem projekt odložil …
Druhý pokus
V roce 2026 jsem projekt oživil a to ze dvou důvodů – jednak jsem narazil na popis servisních příkazů, druhak jsme s dětmi vymysleli, že panel dáme na plot a budeme na něj posílat moudra pro potěchu kolemjdoucích5.
IBIS převodník
Po (neslavných) zkušenostech jsem předělal převodník a použil 74HC14 Schmittovy invertory jako základ.
Převodník 24V IBIS na TTL (nebo 3.3V) s 74HC14.BSLoader.
BSLoader a aA
Nejdříve jsem zkusil nahrát novou konfiguraci, která by povolila posílat aA apod. příkazy. To se podařilo a vypisování opravdu fungovalo. Ale nebylo možné jakkoli ovlivňovat formátování. Text byl vždy vypsán velkým fontem. Našel jsem sice popis jazyka MNEMO, který slouží pro popis formátování, ale ten funguje pouze pro vytváření uloženého obsahu. Nelze ho použít pro IBIS příkazy.

MNEMO jazyk
Vlastní řídicí elektronika
V tuto chvíli jsem chtěl vzdát použití originální BUSE elektroniky a prostě navrhnout vlastní řízení, které by se připojilo místo původní desky. Dokonce jsem narazil na velmi podobný projekt https://github.com/mcer12/Flippity210 . Původní deska má samozřejmě také pěkně zpracovanou driverovou sekci…

Originální deska, část s drivery.
Opravdu mi přišlo jako hrozné mrhání ji prostě jenom vyhodit. Zvažoval jsem i možnost, že odpájím originální procesor a vyvedu z jeho GPIO konektor, do kterého připojím vlastní.
Vlastní firmware pro původní řídicí jednotku
Vrátil jsem se ještě na chvíli k původnímu procesoru. Jedná se o TMP96C141BF, 16bitový procesor od Toshiby6, dnes již nedoporučovaný pro nové designy. Toshiba pro něj dodávala IDE, které běželo pouze na Windows, ale kompiler a linker byly programy použitelné na příkazové řádce.

Především řídicí část původní desky. Je dobře vidět EEPROM v patici a procesor.
EEPROM (AT28C64B) s originálním firmware je užitečně umístěna v patici. Zároveň Anthropic opět zpřístupnil Fable5 a také jsem na Internetech našel kopii původního IDE a pomocných programů od Toshiby. Přečetl jsem tedy originální program a nechal Fable5, aby napsal vlastní, který by implementoval pouze jeden příkaz – vykreslení bitmapy.
K mému velkému potěšení se opravdu povedlo a mám teď funkční firmware , který umožňuje rychlé vykreslování bitmapy na panelu. O převod textu na bitmapu apod. se teď stará zdroj (v mém případě Python skript).
Bezdrátový panel
Další krok je vytvoření Wi-Fi převodníku na 24V UART, tedy kombinace popsaného rozhraní a např. ESP32. Aby bylo možné posílat bitmapy do panelu bezdrátově.
To zatím nemám hotové. Stay tuned :)
-
K nalezení na https://github.com/bobek/flipdot_revival/tree/main/case_key ↩︎
-
Specifikace se dá najít na https://knowhow.vdv.de/documents/300/ ↩︎
-
GBUSE0je pro flip-dot displaye, kdežtoGBUSE1je pro čistě LED panely. ↩︎ -
Za což je vlastně potřeba je pochválit, protože nejsou povolené příkazy, které nejsou potřeba a omylem se nedostanou na panely zmatené texty. ↩︎
-
Trochu jako https://www.novinky.cz/clanek/internet-a-pc-ai-umelecka-instalace-bavi-cestujici-na-prazskem-nadrazi-40548600 ↩︎
-
https://toshiba.semicon-storage.com/ap-en/semiconductor/product/microcontrollers/detail.TMP96C141BFG.html ↩︎