Identifikace neznameho serioveho async kodu

Dotazy na technické problémy, vlastní řešení technických problémů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
JirkaZ
Moderátor
Moderátor
Příspěvky: 1429
Registrován: 26 úno 2021, 01:00

#16 Příspěvek od JirkaZ »

ondraN:

v příloze jsou 3 měření pomocí Saleae sw druhé (novější) řady, konkrétně verze 2.3.15-master. Novější mi nefungují.

Jedná se jako předtím o postupné ruční stisknutí (tentokrát šesti) ovládacích tlačítek na DO, pořadí zůstává stejné, délka stisku je vidět z pulsu Tx Vcc (napájecí napětí vysílacího modulu).

Vysílaný kód tlačítka se stále opakuje, dokud je stisknuté, nebo je délka/počet opakování zdola softwarově omezena na nějaké minimum (popsal jsem už výše).

Jednotlivé záznamy se liší nastavením kódování vysílače - kód je součástí názvu souboru.

Vzorkování je tentokrát nastaveno na 4 MHz.

Díky za pomoc.
Přílohy
Saleae_Logic_2.zip
(46.12 KiB) Staženo 17 x

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#17 Příspěvek od ondraN »

Večer se na to podívám. Možná bude někdo rychlejší.

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#18 Příspěvek od ondraN »

Myslím, že v první části je identifikace vysílače 11bitů, pak jsou vložené dvě jedničky a pak je kód tlačítka. Vzhledem k tomu, jak je koncipováno párování, tak si přijímač zapamatuje adresu vysílače a na tu reaguje. Nemá to žádnou paritu, ta je daná opakováním a asi bude stačit přijetí dvou nebo tří stejných bloků za sebou. Pro náhradu jiným zařízením postačí, naskenování kombinací posledních čtyř bitů (16kombinací) pro jednotlivá tlačítka a pak si zapamatovat ID všech vysílačů, se kterýmy to bylo možné spárovat. No a pak stačí jen vygenerovat (nejspíš přes nějaký MCU, ale šlo by to i HW) ID, dvě jedničky a kód tlačítka. A pak ještě ten vysílač, ale to není moje parketa :)

Uživatelský avatar
JirkaZ
Moderátor
Moderátor
Příspěvky: 1429
Registrován: 26 úno 2021, 01:00

#19 Příspěvek od JirkaZ »

ondraN: perfektní odpověď, ale prosím o vysvětlení, jak jsou v daném kódu definovány stavy (0 a 1).

Jsou to úrovně v daném okamžiku a synchronizace je hranami pulsů, nebo nějak jinak?

Párování u tohoto systému je tupě statická, člověkem prováděná činnost. Přijímač má kódování nastavitelné jumpery nebo DIPswitchem (pokud si dobře vzpomínám), vysílač to kdysi míval taky, teď se nastavuje v setup módu (vyvolaném stisknutím kombinace tlačítek) postupným stisknutím tlačítek nastavujících 0 a 1.

Čili přijímač se ničemu nepřizpůsobuje, je nastavený předem a vysílač se musí nastavit stejně.

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#20 Příspěvek od ondraN »

Jak jsou v daném kódu definovány stavy (0 a 1)?
To by vyžadovalo další zkoumání. Ale je to úplně zbytečná informace. Prostě vygeneruješ identický signál, co generuje vysílač. Ta informace, co je 0,1 a jakýma hranama se co synchronizuje, je zbytečná. Máš prostě identifikační část paketu, ta je vždy stejná pro každý vysílač (nastavený na kók přijímače), a pak máš výkonnou část v různých variaích a tu přilepíš k té identifikační. Více prostě nepotřebuješ. A to že se přijímač nepřizpůsobuje, je další bonus, který to zeště zjednodušší, protože potřebuješ jen jednu identifikaci.

Uživatelský avatar
JirkaZ
Moderátor
Moderátor
Příspěvky: 1429
Registrován: 26 úno 2021, 01:00

#21 Příspěvek od JirkaZ »

Mně je samozřejmě od počátku jasné, že přesnou reprodukcí stávajícího signálu by to bylo vyřešené.

Ale chtěl jsem pro zajímavost vědět víc, dělám to tak skoro vždycky. No a jelikož nejsem specialista na kódování, tak se ptám tady.

Čili ještě jednou díky ondroviN za příspěvky. Kdybys se časem (nebo někdo jiný) chtěl ještě zamyslet nad způsobem přenosu stavů (0 a 1) daným kódem, tak to - čistě ze zvědavosti - taky uvítám.

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#22 Příspěvek od ondraN »

To jde samozřejmě zjistit, ale už potřebuješ svůj vlastní generovaný signál a trochu s ním experimentovat. Dá se tak zjistit třeba citlivost přijímače na přesné generování signálu a spousta dalších věcí. Ale vzhledem k tomu, že je ten signál generovaný a zpracovaný MCU, může být algoritmus téměř jakýkoli a platný jen pro tohle zařízení, ne obecně. Pro ukojení zvědavosti je to dobré, ale pro splnění požadovaného cíle a dalšího použití to moc cenu nemá.
Můj tip je ten, že se v přijímači měří poměr trvání H a L a podle toho se to vyhodnocuje. Má to tu výhodu, že se vždy generuje synchronizační hrana (ať je bit 1 nebo 0) a dá se použít třeba interní RC oscilátor MCU, který zrovna přesností neoplývá. Podobně je to řešené třeba u digitálních LED WS2812D, tak mrkni do datasheetu.

Uživatelský avatar
JirkaZ
Moderátor
Moderátor
Příspěvky: 1429
Registrován: 26 úno 2021, 01:00

#23 Příspěvek od JirkaZ »

ondraN píše:...
Můj tip je ten, že se v přijímači měří poměr trvání H a L a podle toho se to vyhodnocuje. Má to tu výhodu, že se vždy generuje synchronizační hrana (ať je bit 1 nebo 0) a dá se použít třeba interní RC oscilátor MCU, který zrovna přesností neoplývá. Podobně je to řešené třeba u digitálních LED WS2812D, tak mrkni do datasheetu.
Čili to by vedlo na princip typu "digitální PWM", viz výše... Jo, kouknu, díky.

Soustředím se i na ten taky výše uvedený Holtek HT12E, tam se (pokud to dobře chápu) přenáší 0 a 1 právě rozdílnými šířkami pulsů.
Přílohy
HT12E_bit_comparison.png

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#24 Příspěvek od ondraN »

Jo, je to dost oblíbený způsob kódování a i celkem robustní.

Odpovědět

Zpět na „Poradna“