Testování telemetrie pomocí UART simulátoru a CP2102

Navrhnout telemetrický systém je jen polovina práce. Ta druhá – často podceňovaná – je důkladné testování. V prostředí CanSat projektu nemáme prostor na chyby. Let trvá krátce, podmínky jsou nepředvídatelné a jakákoli chyba v komunikaci znamená ztrátu dat.

V tomto článku si ukážeme, jak efektivně testovat client-side telemetrii bez potřeby finálního hardware – pomocí UART simulátoru a USB–UART převodníku (např. CP2102).

Cílem je vytvořit testovací prostředí, které:

→ simuluje reálné chování mikrokontroleru
→ umožňuje generovat chyby a edge-case scénáře
→ pomáhá odhalit problémy ještě před integrací
→ šetří čas během vývoje i ladění

Proč vůbec simulovat telemetrii

Testování pouze s reálným mikrokontrolerem má několik problémů:

→ omezená kontrola nad daty
→ obtížné generování chyb
→ pomalejší iterace vývoje
→ závislost na hardware

Simulátor naopak umožňuje:

→ plnou kontrolu nad datovým tokem
→ opakovatelné testy
→ rychlé ladění parseru
→ testování extrémních scénářů

Jinými slovy: simulátor ti dovolí rozbít systém kontrolovaně – a to je přesně to, co chceš.

Hardware setup

Základní zapojení je velmi jednoduché:

PC→USB–UART převodník (CP2102)→ Raspberry pi

Propojení:

→ TX (CP2102) → RX (Raspberry Pi)
→ GND → GND

Důležité:

→ nepřipojovat TX ↔ TX
→ hlídat logické úrovně (většinou 3.3V OK)

Tímto vznikne virtuální „mikrokontroler“, který posílá data do Raspberry Pi.

Co vlastně simulujeme

Simulátor generuje kompletní binární packety:

→ timestamp
→ senzorová data
→ CRC
→ ukončovací sekvenci

Navíc umožňuje:

→ náhodné hodnoty (realističtější data)
→ simulaci selhání senzorů
→ záměrné poškození CRC

To je zásadní rozdíl oproti jednoduchému „posílání stringů“.

Typy testů, které bys měl dělat

1. Základní funkčnost

Cíl:

→ ověřit, že parser funguje

Test:

→ spustíš simulátor bez chyb
→ kontroluješ, že:

  • všechny packety jsou [valid]
  • data dávají smysl
  • log roste správně

2. CRC fail test

Cíl:

→ ověřit detekci poškozených dat

Simulace:

→ zvýšíš pravděpodobnost CRC chyby

Očekávání:

→ systém NEuloží data (bez toho bys ukládal garbage)
→ místo toho zapíše [corrupt]

3. Sensor fail test

Simulace:

→ některé hodnoty jsou nahrazeny invalidními (např. max int)

Testuješ:

→ jestli parser správně:

  • rozpozná nevalidní hodnotu
  • necrashne
  • stále uloží packet jako validní/částečně validní

Rozdíl:

CRC fail = poškozený packet
sensor fail = validní packet, ale špatná data

Tohle je důležité rozlišovat.

4. Long-run test (stabilita)

Cíl:

→ ověřit dlouhodobou stabilitu

Postup:

→ necháš běžet simulátor desítky minut až hodin

Sleduješ:

→ únik paměti
→ zpomalování
→ velikost logu
→ integritu souboru

Tohle často odhalí bugy, které krátké testy neukážou.

5. Desynchronizace streamu

Reálný problém UART:

→ ztráta bajtu → posunutí packetu

Test:

→ simulátor generuje chyby
→ sleduješ, jestli se parser:

  • znovu „chytí“ na END sekvenci
  • nezačne generovat nesmysly

Dobrý parser:

→ se vždy vrátí do synchronizace

Špatný parser:

→ produkuje nekonečný chaos

Proč je tento přístup lepší než testování jen na HW

1. Rychlost vývoje

Simulátor:

→ okamžité změny
→ žádné flashování MCU

HW-only:

→ pomalé iterace
→ závislost na firmware

2. Kontrola nad chybami

Simulátor:

→ přesně nastavíš, co se rozbije

HW:

→ chyby jsou náhodné a špatně reprodukovatelné

3. Reprodukovatelnost

Simulátor:

→ stejný scénář můžeš spustit znovu

HW:

→ „nějak se to pokazilo“ → hodně štěstí

4. Debugging

Simulátor:

→ přesně víš, co jsi poslal

HW:

→ musíš hádat, kde vznikla chyba

Shrnutí

Použití UART simulátoru s CP2102 ti umožní:

→ testovat telemetrii bez finálního hardware
→ generovat realistická i chybová data
→ ladit parser rychle a efektivně
→ výrazně zvýšit spolehlivost systému

Nejdůležitější myšlenka:

systém není hotový, dokud jsi ho pořádně nerozbil

A přesně k tomu tenhle přístup slouží.

Kategorie